From c82a549d5415febe364070cc4bcb40d8a34fe9bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Mon, 5 Sep 2016 06:22:17 +0000
Subject: [PATCH] Improvement of the rendering of EDOAL objects in HTML

---
 .../impl/renderer/HTMLRendererVisitor.java    | 22 ++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
index c89808ae..4e584e17 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
@@ -40,6 +40,11 @@ import fr.inrialpes.exmo.align.impl.Namespace;
 import fr.inrialpes.exmo.align.impl.BasicAlignment;
 import fr.inrialpes.exmo.align.impl.ObjectCell;
 import fr.inrialpes.exmo.align.impl.edoal.EDOALAlignment;
+import fr.inrialpes.exmo.align.impl.edoal.Expression;
+import fr.inrialpes.exmo.align.impl.edoal.ClassExpression;
+import fr.inrialpes.exmo.align.impl.edoal.PropertyExpression;
+import fr.inrialpes.exmo.align.impl.edoal.RelationExpression;
+import fr.inrialpes.exmo.align.impl.edoal.InstanceExpression;
 
 import fr.inrialpes.exmo.ontowrap.LoadedOntology;
 
@@ -75,7 +80,7 @@ public class HTMLRendererVisitor extends HTMLMetadataRendererVisitor implements
 	printAlignmentMetadata( align );
 	indentedOutputln("<h2>Correspondences ("+align.nbCells()+")</h2>");
 	if ( align instanceof EDOALAlignment ) {
-	    indentedOutputln("<p style=\"font-size: 80%\">EDOAL alignments are not deeply displayed in HTML, some expressions are displayed by null. Use RDF renderer to see the actual alignment.</p>");
+	    indentedOutputln("<p style=\"font-size: 80%\">EDOAL alignments are not deeply displayed in HTML, some expressions are displayed as [[ EDOAL ]]. Use RDF renderer to see the actual alignment.</p>");
 	    
 	}
 	indentedOutputln("<div rel=\"align:map\">");
@@ -104,12 +109,23 @@ public class HTMLRendererVisitor extends HTMLMetadataRendererVisitor implements
 	indentedOutputln("</html>");
     }
 
+    private String renderObject( URI u, Object o ) {
+	if ( u != null ) return u.toString();
+	else if ( o instanceof Expression ) {
+	    if ( o instanceof ClassExpression ) return "[[ EDOAL Class expression ]]";
+	    else if ( o instanceof PropertyExpression ) return "[[ EDOAL Property expression ]]";
+	    else if ( o instanceof RelationExpression ) return "[[ EDOAL Relation expression ]]";
+	    else if ( o instanceof InstanceExpression ) return "[[ EDOAL Instance expression ]]";
+	    else return "[[ EDOAL Unknown expression ]]";
+	} else return "** Unknown object **";
+    }
+
     public void visit( Cell cell ) throws AlignmentException {
 	if ( subsumedInvocableMethod( this, cell, Cell.class ) ) return;
 	// default behaviour
 	this.cell = cell;
-	URI u1 = cell.getObject1AsURI( alignment );
-	URI u2 = cell.getObject2AsURI( alignment );
+	String u1 = renderObject( cell.getObject1AsURI( alignment ), cell.getObject1() );
+	String u2 = renderObject( cell.getObject2AsURI( alignment ), cell.getObject2() );
 	indentedOutput("<tr typeof=\"align:Cell\">");
 	output("<td rel=\"align:entity1\" href=\""+u1+"\">"+u1+"</td><td property=\"align:relation\">");
 	cell.getRelation().accept( this );
-- 
GitLab