From 4e2740497e2e09babaf943d6679e006414fc5d26 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Wed, 11 Feb 2009 22:55:55 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/vre-management/VREModeler@9647 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../vremodeler/impl/ModelerService.java | 61 +++++++++++++------ .../vremodeler/impl/util/XMLUtil.java | 2 +- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java index 872a7be..1c1670a 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java @@ -5,6 +5,7 @@ import java.rmi.RemoteException; import java.sql.Date; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Collection; import java.util.Hashtable; import java.util.List; import javax.xml.namespace.QName; @@ -14,6 +15,7 @@ import org.gcube.common.core.types.VOID; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremodeler.db.DBInterface; import org.gcube.vremanagement.vremodeler.impl.thread.DeployVRE; +import org.gcube.vremanagement.vremodeler.impl.util.GCUBECollection; import org.gcube.vremanagement.vremodeler.impl.util.MetadataFormat; import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil; import org.gcube.vremanagement.vremodeler.stubs.CheckStatusResponse; @@ -252,24 +254,45 @@ public class ModelerService { * @throws RemoteException - */ public String getMetadataRelatedToCollection(VOID var) throws GCUBEFault { - ResultSet resDerivable, resNative, collectionRelated, totalMF; - String preparedWhere=""; - List totalMFList; - Hashtable> selectedMetadataStructure= new Hashtable>(); - boolean enter=false; + + Hashtable> nativeMetadataFormat; + Hashtable> selectedMetadataFormat; + try{ DBInterface.connect(); - collectionRelated= DBInterface.queryDB("select VRERELATEDCOLLECTION.collid from VRERELATEDCOLLECTION where VRERELATEDCOLLECTION.vreid='"+getResource().getId()+"';"); - //select only the results related with selected collection - preparedWhere= " and ( "; - while (collectionRelated.next()){ - enter=true; - preparedWhere+= " mdc.collid='"+collectionRelated.getString(1)+"' or "; + //retrieve all possible metadataformat for the selected collection + nativeMetadataFormat= new Hashtable>(); + ResultSet allPossibleMDF= DBInterface.queryDB("select rel.collid, mdf.id, mdf.name, mdf.schemauri, mf.language, coll.name, coll.description from COLLECTION as coll, VRERELATEDCOLLECTION as rel, MDCOLLECTION as mcoll, METADATAFORMAT as mdf where VRERELATEDCOLLECTION.vreid='"+getResource().getId()+"' and mcoll.relatedcollectionid=rel.collid and mdf.id=native.mdfid and native.mdcollid=mcoll.id and coll.id=rel.collid;"); + while (allPossibleMDF.next()){ + GCUBECollection collection= new GCUBECollection(allPossibleMDF.getString(1), allPossibleMDF.getString(7), allPossibleMDF.getString(6) ); + MetadataFormat mf= new MetadataFormat(allPossibleMDF.getString(2), allPossibleMDF.getString(3), new URI(allPossibleMDF.getString(4)), allPossibleMDF.getString(5)); + if (nativeMetadataFormat.containsKey(collection)) + nativeMetadataFormat.get(collection).add(mf); + else { + ArrayList keyList=new ArrayList(); + keyList.add(mf); + nativeMetadataFormat.put(collection, keyList); + } } - - ResultSet metadataSelected= DBInterface.queryDB("select collid, mfid from VRERELATEDMETADATAFORMAT where vreid='"+getResource().getId()+"';"); - + + //retrieving selected metadaformat + //hashtable + selectedMetadataFormat= new Hashtable>(); + ResultSet selectedFormat= DBInterface.queryDB("select rel.collid, mf.id, mf.name, mf.schemauri, mf.language , coll.name, coll.description from COLLECTION as coll, VRERELATEDMETADATAFORMAT as rel, METADATAFORMAT as mf where mf.id=rel.mfid and vreid='"+getResource().getId()+"' and coll.id=rel.collid;"); + while (selectedFormat.next()){ + GCUBECollection collection= new GCUBECollection(selectedFormat.getString(1), selectedFormat.getString(7), selectedFormat.getString(6)); + MetadataFormat mf= new MetadataFormat(selectedFormat.getString(2), selectedFormat.getString(3), new URI(selectedFormat.getString(4)), selectedFormat.getString(5)); + if (selectedMetadataFormat.containsKey(collection)) + selectedMetadataFormat.get(collection).add(mf); + else { + ArrayList keyList=new ArrayList(); + keyList.add(mf); + selectedMetadataFormat.put(collection, keyList); + } + } + + /* //recovering possible previous selection for metadataFormat while (metadataSelected.next()){ if(selectedMetadataStructure.containsKey(metadataSelected.getString(1))) @@ -283,7 +306,8 @@ public class ModelerService { if(!enter) throw new GCUBEFault("no collection selected for this VRE"); else preparedWhere=preparedWhere.substring(0, preparedWhere.length()-4)+") "; - + + //retrieving all available MDFromat totalMF = DBInterface.queryDB("select MDFORMAT.id, MDFORMAT.name, MDFORMAT.schemauri, MDFORMAT.language from MDFORMAT;"); totalMFList= new ArrayList(); @@ -299,12 +323,15 @@ public class ModelerService { resDerivable= DBInterface.queryDB("select mdc.collid, mdc.collname, mdc.colldesc , collmdf.id as mdfid from (select * from DERIVABLEMDF INNER JOIN MDFORMAT on DERIVABLEMDF.mdfid= MDFORMAT.id) " + "as COLLMDF,(select COLLECTION.id as collid, COLLECTION.name as collname, COLLECTION.description as colldesc, MDCOLLECTION.id as mdid from COLLECTION INNER JOIN MDCOLLECTION " + "ON COLLECTION.id = MDCOLLECTION.relatedcollectionid) as MDC where COLLMDF.mdcollid= MDC.mdid "+preparedWhere+";"); - */ + resNative= DBInterface.queryDB("select mdc.collid, mdc.collname, mdc.colldesc , collmdf.id as mdfid from (select * from NATIVEMDF INNER JOIN MDFORMAT on NATIVEMDF.mdfid= MDFORMAT.id) " + "as COLLMDF,(select COLLECTION.id as collid, COLLECTION.name as collname, COLLECTION.description as colldesc, MDCOLLECTION.id as mdid from COLLECTION INNER JOIN MDCOLLECTION " + "ON COLLECTION.id = MDCOLLECTION.relatedcollectionid) as MDC where COLLMDF.mdcollid= MDC.mdid "+preparedWhere+";"); + */ + + }catch(Exception e) { e.printStackTrace(); logger.error("ModelService: getMEtadataRelatedToCollection Error "+e.getMessage()); @@ -312,7 +339,7 @@ public class ModelerService { } - return XMLUtil.PrepareMCFormatXML( resNative,null,totalMFList , selectedMetadataStructure); + return XMLUtil.PrepareMCFormatXML( nativeMetadataFormat ,selectedMetadataFormat); } diff --git a/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java b/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java index e84c520..d1b0a1c 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java @@ -139,7 +139,7 @@ public class XMLUtil { * @param res * @return */ - public static String PrepareMCFormatXML(ResultSet resNative, ResultSet resDerivable, List allMF, Hashtable> selectedMetadata){ + public static String PrepareMCFormatXML(Hashtable> nativeMetadataFormat, Hashtable> selectedMetadataFormat){ Document doc= null; try {