From 8afaabd580b97d0e97a7147a215f8be155221ee4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Tue, 26 Aug 2008 17:05:38 +0000
Subject: [PATCH] - added init( Parameters ) arguments to visitors -
 implemented "embedded" parameter allowing to avoid ?xml declaration when
 embedded

---
 .../impl/renderer/COWLMappingRendererVisitor.java   |  3 +++
 .../align/impl/renderer/HTMLRendererVisitor.java    | 13 +++++++++++--
 .../impl/renderer/OWLAxiomsRendererVisitor.java     |  3 +++
 .../align/impl/renderer/RDFRendererVisitor.java     |  6 ++++--
 .../impl/renderer/SEKTMappingRendererVisitor.java   |  3 +++
 .../align/impl/renderer/SKOSRendererVisitor.java    |  7 +++++++
 .../align/impl/renderer/SWRLRendererVisitor.java    | 10 +++++++++-
 .../impl/renderer/XMLMetadataRendererVisitor.java   |  9 ++++++++-
 .../align/impl/renderer/XSLTRendererVisitor.java    | 10 +++++++++-
 src/org/semanticweb/owl/align/AlignmentVisitor.java |  6 +++---
 10 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
index 0c137e00..33c53725 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
@@ -29,6 +29,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -56,6 +57,8 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {}
+
     public void visit( Alignment align ) throws AlignmentException {
 	if ( !(align instanceof ObjectAlignment) )
 	    throw new AlignmentException("COWLMappingRenderer: cannot render simple alignment. Turn them into ObjectAlignment, by toObjectAlignement()");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
index 4c8d2bf5..b2974f21 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
@@ -28,6 +28,7 @@ import java.net.URI;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -55,11 +56,17 @@ public class HTMLRendererVisitor implements AlignmentVisitor
     Alignment alignment = null;
     Cell cell = null;
     Hashtable<String,String> nslist = null;
+    boolean embedded = false; // if the output is XML embeded in a structure
 
     public HTMLRendererVisitor( PrintWriter writer ){
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    };
+
     public void visit( Alignment align ) throws AlignmentException {
 	alignment = align;
 	nslist = new Hashtable<String,String>();
@@ -81,8 +88,10 @@ public class HTMLRendererVisitor implements AlignmentVisitor
 	    else { tag += ":"+name; }
 	    //extensionString += "  <"+tag+">"+((String[])ext)[2]+"</"+tag+">\n";
 	}
-	writer.print("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n");
-	writer.print("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML+RDFa 1.0//EN\" \"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd\">\n");
+	if ( embedded == false ) {
+	    writer.print("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n");
+	    writer.print("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML+RDFa 1.0//EN\" \"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd\">\n");
+	}
 	writer.print("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"");
 	for ( Enumeration e = nslist.keys() ; e.hasMoreElements(); ) {
 	    String k = (String)e.nextElement();
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
index 0a0308ee..edf925dd 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
@@ -29,6 +29,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -54,6 +55,8 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {};
+
     public void visit( Alignment align ) throws AlignmentException {
 	if ( !( align instanceof ObjectAlignment ))  {
 	    throw new AlignmentException("OWLAxiomsRenderer: cannot render simple alignment. Turn them into ObjectAlignment, by toObjectAlignement()");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
index aa563304..7e9087f0 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
@@ -28,6 +28,7 @@ import java.net.URI;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -63,8 +64,9 @@ public class RDFRendererVisitor implements AlignmentVisitor
 	this.writer = writer;
     }
 
-    public void setEmbeded( boolean b ) {
-	embedded = b;
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
     }
 
     public void visit( Alignment align ) throws AlignmentException {
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
index 4badb16d..8b5f6435 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
@@ -30,6 +30,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -58,6 +59,8 @@ public class SEKTMappingRendererVisitor implements AlignmentVisitor {
 	generator = new Random();
     }
 
+    public void init( Parameters p ) {};
+
     public void visit( Alignment align ) throws AlignmentException {
 	if ( !(align instanceof ObjectAlignment) )
 	    throw new AlignmentException("SEKTMappingRenderer: cannot render simple alignment. Turn them into ObjectAlignment, by toObjectAlignement()");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
index 0079d490..3da56553 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
@@ -29,6 +29,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -49,11 +50,17 @@ public class SKOSRendererVisitor implements AlignmentVisitor {
     LoadedOntology onto1 = null;
     LoadedOntology onto2 = null;
     Cell cell = null;
+    boolean embedded = false; // if the output is XML embeded in a structure
 
     public SKOSRendererVisitor( PrintWriter writer ){
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    };
+
     // This must be considered
     public void visit( Alignment align ) throws AlignmentException {
 	if ( align instanceof ObjectAlignment ) {
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
index fe848b6b..fe62720f 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
@@ -30,6 +30,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -51,18 +52,25 @@ public class SWRLRendererVisitor implements AlignmentVisitor {
     LoadedOntology onto1 = null;
     LoadedOntology onto2 = null;
     Cell cell = null;
+    boolean embedded = false; // if the output is XML embeded in a structure
 
     public SWRLRendererVisitor( PrintWriter writer ){
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+   };
+
     public void visit( Alignment align ) throws AlignmentException {
 	if ( !( align instanceof ObjectAlignment) )
 	    throw new AlignmentException("SWRLRenderer: cannot render simple alignment. Turn them into ObjectAlignment, by toObjectAlignement()");
 	alignment = align;
 	onto1 = (LoadedOntology)((ObjectAlignment)alignment).getOntologyObject1();
 	onto2 = (LoadedOntology)((ObjectAlignment)alignment).getOntologyObject2();
-	writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	if ( embedded == false )
+	    writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
 	writer.println("<swrlx:Ontology swrlx:name=\"generatedAl\"");
 	writer.println("                xmlns:swrlx=\"http://www.w3.org/2003/11/swrlx#\"");
 	writer.println("                xmlns:owlx=\"http://www.w3.org/2003/05/owl-xml\"");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
index 83cf451b..88e8e85e 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
@@ -41,13 +41,20 @@ public class XMLMetadataRendererVisitor implements AlignmentVisitor
 {
     
     PrintWriter writer = null;
+    boolean embedded = false; // if the output is XML embeded in a structure
 
     public XMLMetadataRendererVisitor( PrintWriter writer ){
 	this.writer = writer;
     }
 
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    };
+
     public void visit( Alignment align ) throws AlignmentException {
-	writer.print("<?xml version='1.0' encoding='utf-8' standalone='yes'?>\n");
+	if ( embedded == false )
+	    writer.print("<?xml version='1.0' encoding='utf-8' standalone='yes'?>\n");
 	writer.println("<Alignment>");
 	writer.print("  <level>");
 	writer.print( align.getLevel() );
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
index 49c00b26..a8c65978 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
@@ -30,6 +30,7 @@ import java.net.URI;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
+import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -53,6 +54,7 @@ public class XSLTRendererVisitor implements AlignmentVisitor {
     LoadedOntology onto2 = null;
     Hashtable<String,String> namespaces = null;
     int nsrank = 0;
+    boolean embedded = false; // if the output is XML embeded in a structure
 
     public XSLTRendererVisitor( PrintWriter writer ){
 	this.writer = writer;
@@ -63,6 +65,11 @@ public class XSLTRendererVisitor implements AlignmentVisitor {
 	namespaces.put( "http://www.w3.org/2000/01/rdf-schema#", "rdfs" );
     }
 
+    public void init( Parameters p ) {
+	if ( p.getParameter( "embedded" ) != null 
+	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    };
+
     public void visit( Alignment align ) throws AlignmentException {
 	if ( align instanceof ObjectAlignment ) {
 	    onto1 = (LoadedOntology)((ObjectAlignment)alignment).getOntologyObject1();
@@ -72,7 +79,8 @@ public class XSLTRendererVisitor implements AlignmentVisitor {
 	    collectURIs( (Cell)e.nextElement() );
 	}
 	alignment = align;
-	writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+	if ( embedded == false )
+	    writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
 	writer.println("<xsl:stylesheet version=\"1.0\"");
 	for ( Enumeration e = namespaces.keys(); e.hasMoreElements(); ){
 	    Object ns = e.nextElement();
diff --git a/src/org/semanticweb/owl/align/AlignmentVisitor.java b/src/org/semanticweb/owl/align/AlignmentVisitor.java
index 8f8d123b..1cae81e8 100644
--- a/src/org/semanticweb/owl/align/AlignmentVisitor.java
+++ b/src/org/semanticweb/owl/align/AlignmentVisitor.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rhône-Alpes, 2004
+ * Copyright (C) INRIA Rhône-Alpes, 2004, 2008
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -27,8 +27,8 @@ package org.semanticweb.owl.align;
  * @version $Id$ 
  */
 
-public interface AlignmentVisitor
-{
+public interface AlignmentVisitor {
+    public void init( Parameters p );
     public void visit( Alignment a ) throws AlignmentException;
     public void visit( Cell c ) throws AlignmentException;
     public void visit( Relation r ) throws AlignmentException;
-- 
GitLab