You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2012/10/03 21:47:26 UTC

svn commit: r1393726 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/sparql/resultset/ test/java/com/hp/hpl/jena/sparql/resultset/

Author: rvesse
Date: Wed Oct  3 19:47:25 2012
New Revision: 1393726

URL: http://svn.apache.org/viewvc?rev=1393726&view=rev
Log:
Per Andy's suggestions change TSV/CSV boolean output to have a header row

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVInput.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVOutput.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVInput.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVOutput.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSetFormat2.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVInput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVInput.java?rev=1393726&r1=1393725&r2=1393726&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVInput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVInput.java Wed Oct  3 19:47:25 2012
@@ -75,7 +75,6 @@ public class CSVInput
                 String[] tokens = str.split(",") ;
                 for ( String token : tokens ) 
                 {
-                    if (token.startsWith("?")) token = token.substring(1);
                     Var var = Var.alloc(token);
                     vars.add(var);
                     varNames.add(var.getName());
@@ -98,15 +97,23 @@ public class CSVInput
     	String str = null;
     	try
     	{
+    		//First try to parse the header
     		str = reader.readLine();
-    		if (str == null) throw new ARQException("CSV Results malformed, input is empty");
+    		if (str == null) throw new ARQException("CSV Boolean Results malformed, input is empty");
     		str = str.trim(); //Remove extraneous white space
+    		
+    		//Expect a header row with single _askResult variable
+    		if (!str.equals("_askResult")) throw new ARQException("CSV Boolean Results malformed, did not get expected ?_askResult header row");
+    		
+    		//Then try to parse the boolean result
+    		str = reader.readLine();
+    		if (str == null) throw new ARQException("CSV Boolean Results malformed, unexpected end of input after header row");
+    		str = str.trim();
+    		
     		if (str.toLowerCase().equals("true") || str.toLowerCase().equals("yes")) {
     			return true;
     		} else if (str.toLowerCase().equals("false") || str.toLowerCase().equals("no")) {
     			return false;
-    		} else if (str.startsWith("?") || str.contains(",")) {
-    			throw new ARQException("CSV Boolean Results malformed, appears to be a normal result set header, use CSVInput.fromCSV() to parse a ResultSet");
     		} else {
     			throw new ARQException("CSV Boolean Results malformed, expected one of - true yes false no - but got " + str);
     		}

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVOutput.java?rev=1393726&r1=1393725&r2=1393726&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/CSVOutput.java Wed Oct  3 19:47:25 2012
@@ -130,8 +130,9 @@ public class CSVOutput extends OutputBas
         return str;
     }
 
-    static final byte[] yesBytes = StrUtils.asUTF8bytes("yes") ;
-    static final byte[] noBytes = StrUtils.asUTF8bytes("no") ;
+    static final byte[] headerBytes = StrUtils.asUTF8bytes("_askResult" + NL);
+    static final byte[] yesBytes = StrUtils.asUTF8bytes("true") ;
+    static final byte[] noBytes = StrUtils.asUTF8bytes("false") ;
     static final byte[] NLBytes = StrUtils.asUTF8bytes(NL) ;
     
     @Override
@@ -139,6 +140,7 @@ public class CSVOutput extends OutputBas
     {
         try
         {
+        	out.write(headerBytes);
             if (booleanResult) 
                 out.write(yesBytes) ;
             else

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVInput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVInput.java?rev=1393726&r1=1393725&r2=1393726&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVInput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVInput.java Wed Oct  3 19:47:25 2012
@@ -99,15 +99,23 @@ public class TSVInput {
     	String str = null;
     	try
     	{
+    		//First try to parse the header
     		str = reader.readLine();
-    		if (str == null) throw new ARQException("TSV Boolean Results malformed - input is empty");
+    		if (str == null) throw new ARQException("TSV Boolean Results malformed, input is empty");
     		str = str.trim(); //Remove extraneous white space
+    		
+    		//Expect a header row with single ?_askResult variable
+    		if (!str.equals("?_askResult")) throw new ARQException("TSV Boolean Results malformed, did not get expected ?_askResult header row");
+    		
+    		//Then try to parse the boolean result
+    		str = reader.readLine();
+    		if (str == null) throw new ARQException("TSV Boolean Results malformed, unexpected end of input after header row");
+    		str = str.trim();
+    		
     		if (str.toLowerCase().equals("true") || str.toLowerCase().equals("yes")) {
     			return true;
     		} else if (str.toLowerCase().equals("false") || str.toLowerCase().equals("no")) {
     			return false;
-    		} else if (str.startsWith("?") || str.contains("\t")) {
-    			throw new ARQException("TSV Boolean Results malformed, appears to be a normal result set header, use TSVInput.fromTSV() to parse a ResultSet");
     		} else {
     			throw new ARQException("TSV Boolean Results malformed, expected one of - true yes false no - but got " + str);
     		}

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVOutput.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVOutput.java?rev=1393726&r1=1393725&r2=1393726&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVOutput.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/TSVOutput.java Wed Oct  3 19:47:25 2012
@@ -104,8 +104,9 @@ public class TSVOutput extends OutputBas
         }
     }
 
-    static final byte[] yesBytes = StrUtils.asUTF8bytes("yes") ;
-    static final byte[] noBytes = StrUtils.asUTF8bytes("no") ;
+    static final byte[] headerBytes = StrUtils.asUTF8bytes("?_askResult" + NL);
+    static final byte[] yesBytes = StrUtils.asUTF8bytes("true") ;
+    static final byte[] noBytes = StrUtils.asUTF8bytes("false") ;
     static final byte[] NLBytes = StrUtils.asUTF8bytes(NL) ;
     
     @Override
@@ -113,6 +114,7 @@ public class TSVOutput extends OutputBas
     {
         try
         {
+        	out.write(headerBytes);
             if (booleanResult) 
                 out.write(yesBytes) ;
             else

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSetFormat2.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSetFormat2.java?rev=1393726&r1=1393725&r2=1393726&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSetFormat2.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSetFormat2.java Wed Oct  3 19:47:25 2012
@@ -138,7 +138,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_01()
     {
     	// true is valid
-    	String x = "true";
+    	String x = "?_askResult\ntrue";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -146,7 +146,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_02()
     {
     	// true is valid regardless of case
-    	String x = "TRUE";
+    	String x = "?_askResult\nTRUE";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -154,7 +154,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_03()
     {
     	// true is valid regardless of case
-    	String x = "tRuE";
+    	String x = "?_askResult\ntRuE";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -162,7 +162,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_04()
     {
     	// yes is valid
-    	String x = "yes";
+    	String x = "?_askResult\nyes";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -170,7 +170,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_05()
     {
     	// yes is valid regardless of case
-    	String x = "YES";
+    	String x = "?_askResult\nYES";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -178,7 +178,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_06()
     {
     	// yes is valid regardless of case
-    	String x = "yEs";
+    	String x = "?_askResult\nyEs";
     	parseTSVAsBoolean(x, true);
     }
     
@@ -186,7 +186,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_07()
     {
     	// false is valid
-    	String x = "false";
+    	String x = "?_askResult\nfalse";
     	parseTSVAsBoolean(x, false);
     }
     
@@ -194,7 +194,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_08()
     {
     	// false is valid regardless of case
-    	String x = "FALSE";
+    	String x = "?_askResult\nFALSE";
     	parseTSVAsBoolean(x, false);
     }
     
@@ -202,7 +202,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_09()
     {
     	// false is valid regardless of case
-    	String x = "fAlSe";
+    	String x = "?_askResult\nfAlSe";
     	parseTSVAsBoolean(x, false);
     }
     
@@ -210,7 +210,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_10()
     {
     	// no is valid
-    	String x = "no";
+    	String x = "?_askResult\nno";
     	parseTSVAsBoolean(x, false);
     }
     
@@ -218,7 +218,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_11()
     {
     	// no is valid regardless of case
-    	String x = "NO";
+    	String x = "?_askResult\nNO";
     	parseTSVAsBoolean(x, false);
     }
     
@@ -226,7 +226,7 @@ public class TestResultSetFormat2
     public void resultset_tsv_boolean_12()
     {
     	// no is valid regardless of case
-    	String x = "nO";
+    	String x = "?_askResult\nnO";
     	parseTSVAsBoolean(x, false);
     }
 
@@ -302,20 +302,36 @@ public class TestResultSetFormat2
     public void resultset_bad_tsv_boolean_01()
     {
     	//Not in allowed set of true yes false no
-    	String x = "blah";
+    	String x = "?_askResults\nblah";
     	parseTSVAsBoolean(x, false);
     }
     
     @Test (expected=ARQException.class)
     public void resultset_bad_tsv_boolean_02()
     {
+    	//Missing header
+    	String x = "true";
+    	parseTSVAsBoolean(x, false);
+    }
+    
+    @Test (expected=ARQException.class)
+    public void resultset_bad_tsv_boolean_03()
+    {
+    	//Missing boolean
+    	String x = "?_askResult\n";
+    	parseTSVAsBoolean(x, false);
+    }
+    
+    @Test (expected=ARQException.class)
+    public void resultset_bad_tsv_boolean_04()
+    {
     	//A normal result set header
     	String x = "?x\n";
     	parseTSVAsBoolean(x, false);
     }
     
     @Test (expected=ARQException.class)
-    public void resultset_bad_tsv_boolean_03()
+    public void resultset_bad_tsv_boolean_05()
     {
     	//A normal result set header
     	String x = "?x\t?y\n";