Author: andy
Date: Fri Apr 26 15:34:37 2013
New Revision: 1476257
URL: http://svn.apache.org/r1476257
Log:
Ensure adjacent triple/path elements have a necessary DOT.
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java?rev=1476257&r1=1476256&r2=1476257&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/serializer/FormatterElement.java
Fri Apr 26 15:34:37 2013
@@ -298,15 +298,6 @@ public class FormatterElement extends Fo
return ;
}
-// if ( el.getElements().size() == 1 )
-// {
-// if ( el.getElements().get(0) instanceof ElementSubQuery )
-// {
-// visit((ElementSubQuery)el.getElements().get(0)) ;
-// return ;
-// }
-// }
-
out.print("{") ;
out.incIndent(INDENT) ;
if ( GROUP_FIRST_ON_SAME_LINE )
@@ -316,33 +307,47 @@ public class FormatterElement extends Fo
out.pad() ;
boolean first = true ;
-
- for ( Iterator<Element> iter = el.getElements().listIterator() ;
iter.hasNext() ;)
+ Element lastElt = null ;
+
+ for ( Element subElement : el.getElements())
{
- Element subElement = iter.next() ;
- if ( ! first )
+ // Some adjacent elements need a DOT:
+ // ElementTriplesBlock, ElementPathBlock
+ if ( ! first )
{
// Need to move on after the last thing printed.
- if ( GROUP_SEP_DOT )
+ // Check for necessary DOT as separator
+ if ( GROUP_SEP_DOT || needsDotSeparator(lastElt, subElement) )
out.print(" . ") ;
out.newline() ;
}
subElement.visit(this) ;
first = false ;
+ lastElt = subElement ;
}
out.decIndent(INDENT) ;
-
+
// Where to put the closing "}"
int row2 = out.getRow() ;
if ( row1 != row2 )
out.newline() ;
else
out.print(' ') ;
-
+
// Finally, close the group.
out.print("}") ;
}
+ private static boolean needsDotSeparator(Element el1, Element el2)
+ {
+ return needsDotSeparator(el1) && needsDotSeparator(el2) ;
+ }
+
+ private static boolean needsDotSeparator(Element el)
+ {
+ return ( el instanceof ElementTriplesBlock ) || ( el instanceof
ElementPathBlock ) ;
+ }
+
@Override
public void visit(ElementOptional el)
{