This commit is contained in:
Lucio Lelii 2009-02-11 22:55:55 +00:00
parent 495363dee9
commit 4e2740497e
2 changed files with 45 additions and 18 deletions

View File

@ -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<MetadataFormat> totalMFList;
Hashtable<String, ArrayList<String>> selectedMetadataStructure= new Hashtable<String, ArrayList<String>>();
boolean enter=false;
Hashtable<GCUBECollection, List<MetadataFormat>> nativeMetadataFormat;
Hashtable<GCUBECollection, List<MetadataFormat>> 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<GCUBECollection, List<MetadataFormat>>();
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<MetadataFormat> keyList=new ArrayList<MetadataFormat>();
keyList.add(mf);
nativeMetadataFormat.put(collection, keyList);
}
}
ResultSet metadataSelected= DBInterface.queryDB("select collid, mfid from VRERELATEDMETADATAFORMAT where vreid='"+getResource().getId()+"';");
//retrieving selected metadaformat
//hashtable <collectionId, MetadataFormat>
selectedMetadataFormat= new Hashtable<GCUBECollection, List<MetadataFormat>>();
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<MetadataFormat> keyList=new ArrayList<MetadataFormat>();
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<MetadataFormat>();
@ -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);
}

View File

@ -139,7 +139,7 @@ public class XMLUtil {
* @param res
* @return
*/
public static String PrepareMCFormatXML(ResultSet resNative, ResultSet resDerivable, List<MetadataFormat> allMF, Hashtable<String, ArrayList<String>> selectedMetadata){
public static String PrepareMCFormatXML(Hashtable<GCUBECollection, List<MetadataFormat>> nativeMetadataFormat, Hashtable<GCUBECollection, List<MetadataFormat>> selectedMetadataFormat){
Document doc= null;
try {