From 3d18f4960d72f7036cf91b5731a1d2279469e190 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Tue, 2 Jan 2007 22:58:01 +0000
Subject: [PATCH] - implemented metadata() primitive

---
 .../align/service/AServProtocolManager.java   | 29 ++++++++++++++-----
 1 file changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
index b56e8eae..423ba04a 100644
--- a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
+++ b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.align.service;
 
 import fr.inrialpes.exmo.align.parser.AlignmentParser;
+import fr.inrialpes.exmo.align.impl.BasicParameters;
 
 import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Alignment;
@@ -376,13 +377,27 @@ public class AServProtocolManager {
 	return new AlignmentId(newId(),mess,myId,mess.getSender(),id,(Parameters)null);
     }
 
-    public Message getmetadata(Message mess){
-
-    //\prul{get-processor-success}{a - request ( metadata ( n )) \rightarrow S}{\langle O, O', A\rangle \Leftarrow Retrieve(n)\\P\Leftarrow Metadata(A)\\S - inform ( P~language:~l ) \rightarrow a}{Retrieve(n)\not=\emptyset}
-
-    //\prul{get-processor-unknown}{a - request ( metadata ( n )) \rightarrow S}{S - failure ( unknown (n) ) \rightarrow a}{Retrieve(n)=\emptyset}
-
-	return new RenderedAlignment(newId(),mess,myId,mess.getSender(),"dummy//",(Parameters)null);
+    /*
+     * Returns only the metadata of an alignment and returns it in 
+     * parameters
+     */
+    public Message metadata( Message mess ){
+	// Retrieve the alignment
+	String id = (String)mess.getParameters().getParameter("id");
+	Alignment al = null;
+	try {
+	    al = alignmentCache.getMetadata( id );
+	} catch (Exception e) {
+	    return new UnknownAlignment(newId(),mess,myId,mess.getSender(),id,(Parameters)null);
+	}
+	// Put all the local metadata in parameters
+	Parameters params = new BasicParameters();
+	Parameters extensions = al.getExtensions();
+	for ( Enumeration e = extensions.getNames(); e.hasMoreElements(); ){
+	    String name = (String)e.nextElement();
+	    params.setParameter( name, extensions.getParameter( name ) );
+	}
+	return new AlignmentMetadata(newId(),mess,myId,mess.getSender(),"dummy//",params);
     }
 
     /*********************************************************************
-- 
GitLab