git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/vre-management/VREModeler@9647 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
495363dee9
commit
4e2740497e
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue