git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/vre-management/VREModeler@454 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
54cf2d00c2
commit
b334f03771
|
@ -0,0 +1,393 @@
|
|||
package org.gcube.vremanagement.vremodeler.impl;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Hashtable;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.gcube.vremanagement.vremodeler.db.DBInterface;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author lucio
|
||||
*
|
||||
*/
|
||||
public class XMLUtil {
|
||||
|
||||
|
||||
/**
|
||||
* it creates the XML output for VDLGenerator
|
||||
*
|
||||
* @param res
|
||||
* @return String
|
||||
*/
|
||||
protected static String PrepareCollectionXML(ResultSet res, ArrayList<String> relatedCollection){
|
||||
StringBuilder temp= new StringBuilder();
|
||||
String selectedString="false";
|
||||
temp.append("<ResultSet>");
|
||||
try{
|
||||
while (res.next()){
|
||||
selectedString= relatedCollection.contains(res.getString("ID")) ? "true" : "false";
|
||||
temp.append("<Collection><ID>");
|
||||
temp.append(res.getString(1));
|
||||
temp.append("</ID><Name>");
|
||||
temp.append(res.getString(2));
|
||||
temp.append("</Name><Info><Description>");
|
||||
temp.append(res.getString(3));
|
||||
temp.append("</Description><NumberOfMembers>");
|
||||
temp.append(res.getString(4));
|
||||
temp.append("</NumberOfMembers><CreationTime>");
|
||||
temp.append(res.getString(5));
|
||||
temp.append("</CreationTime><LastUpdateTime>");
|
||||
temp.append(res.getString(6));
|
||||
temp.append("</LastUpdateTime></Info><Selected>");
|
||||
temp.append(selectedString);
|
||||
temp.append("</Selected></Collection>");
|
||||
}
|
||||
}catch(SQLException e){//logger.error("database error "+e.getMessage());
|
||||
}
|
||||
temp.append("</ResultSet>");
|
||||
//logger.debug("VDLMODEL: request collection XML: "+temp);
|
||||
return temp.toString();
|
||||
}
|
||||
|
||||
|
||||
protected static String PrepareDHNsXML(ResultSet res, ArrayList<String> relatedDHNs){
|
||||
StringBuilder temp = new StringBuilder(),
|
||||
runningInstancesString ;
|
||||
ResultSet riRes;
|
||||
String selectedString="false";
|
||||
temp.append("<ResultSet>");
|
||||
try{
|
||||
while (res.next()){
|
||||
selectedString= relatedDHNs.contains(res.getString("ID")) ? "true" : "false";
|
||||
riRes= DBInterface.queryDB("select RI.id, RI.name from RUNNINGINSTANCE as RI, DHNRELATEDRI as REL where REL.DHNID='"+res.getString("ID")+"' and REL.RIID=RI.ID");
|
||||
runningInstancesString= new StringBuilder();
|
||||
while (riRes.next()){
|
||||
runningInstancesString.append("<RunningInstance id=\"");
|
||||
runningInstancesString.append(riRes.getString(1));
|
||||
runningInstancesString.append("\" name=\"");
|
||||
runningInstancesString.append(riRes.getString(2));
|
||||
runningInstancesString.append("\" />");
|
||||
}
|
||||
|
||||
temp.append("<DHN><ID>");
|
||||
temp.append(res.getString(1));
|
||||
temp.append("</ID><Host>");
|
||||
temp.append(res.getString(2));
|
||||
temp.append("</Host><Info><Security>");
|
||||
temp.append(res.getString(3));
|
||||
temp.append("</Security><UpTime>");
|
||||
temp.append(res.getString(4));
|
||||
temp.append("</UpTime><Memory><VirtualAvailable>");
|
||||
temp.append(res.getString(5));
|
||||
temp.append("</VirtualAvailable><VirtualSize>");
|
||||
temp.append(res.getString(6));
|
||||
temp.append("</VirtualSize><LocalAvailableSpace>");
|
||||
temp.append(res.getString(7));
|
||||
temp.append("</LocalAvailableSpace></Memory><Site><Location>");
|
||||
temp.append(res.getString(8));
|
||||
temp.append("</Location><Country>");
|
||||
temp.append(res.getString(9));
|
||||
temp.append("</Country><Domain>");
|
||||
temp.append(res.getString(10));
|
||||
temp.append("</Domain></Site><RunningInstances>");
|
||||
temp.append(runningInstancesString);
|
||||
temp.append("</RunningInstances><Libraries></Libraries></Info><Selected>");
|
||||
temp.append(selectedString);
|
||||
temp.append("</Selected></DHN>");
|
||||
}
|
||||
}catch(SQLException e){//logger.error("database error "+e.getMessage());
|
||||
}
|
||||
|
||||
temp.append("</ResultSet>");
|
||||
//logger.debug("VDLMODEL: request collection XML: "+temp);
|
||||
return temp.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param res
|
||||
* @return
|
||||
*/
|
||||
protected static String PrepareMCFormatXML(ResultSet resNative, ResultSet resDerivable, ResultSet allMF, Hashtable<String, ArrayList<String>> selectedMetadata){
|
||||
|
||||
Hashtable<String, ArrayList<String>> MDFHash= new Hashtable<String, ArrayList<String>>();
|
||||
StringBuilder temp;
|
||||
StringBuilder keyTemp=null;
|
||||
StringBuilder totalMFList=new StringBuilder();
|
||||
totalMFList.append("<MFL>");
|
||||
ArrayList<String> tempArray;
|
||||
try{
|
||||
|
||||
while (allMF.next())
|
||||
{
|
||||
temp= new StringBuilder();
|
||||
temp.append("<Element><MFID>");
|
||||
temp.append(allMF.getString(1));
|
||||
temp.append("</MFID><MFName>");
|
||||
temp.append(allMF.getString(2));
|
||||
temp.append("</MFName><URI>");
|
||||
temp.append(allMF.getString(3));
|
||||
temp.append("</URI><Language>");
|
||||
temp.append(allMF.getString(4));
|
||||
temp.append("</Language></Element>");
|
||||
totalMFList.append(temp);
|
||||
}
|
||||
|
||||
totalMFList.append("</MFL>");
|
||||
|
||||
while(resNative.next()){
|
||||
keyTemp= new StringBuilder();
|
||||
keyTemp.append("<CollectionID>");
|
||||
keyTemp.append(resNative.getString(1));
|
||||
keyTemp.append("</CollectionID><Name>");
|
||||
keyTemp.append(resNative.getString(2));
|
||||
keyTemp.append("</Name><Description>");
|
||||
keyTemp.append(resNative.getString(3));
|
||||
keyTemp.append("</Description>");
|
||||
temp= new StringBuilder();
|
||||
temp.append("<MetadataFormat><Id>");
|
||||
temp.append(resNative.getString(4));
|
||||
if(selectedMetadata.isEmpty())
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>True</Selected></MetadataFormat>");
|
||||
else{
|
||||
if((selectedMetadata.containsKey(resNative.getString(1))) && (selectedMetadata.get(resNative.getString(1)).contains(resNative.getString(4))))
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>True</Selected></MetadataFormat>");
|
||||
else
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>False</Selected></MetadataFormat>");
|
||||
}
|
||||
//logger.debug("MDFProva: "+keyTemp+" "+temp);
|
||||
if(MDFHash.get(keyTemp.toString())!=null) MDFHash.get(keyTemp).add(temp.toString());
|
||||
else{
|
||||
tempArray=new ArrayList<String>();
|
||||
tempArray.add(temp.toString());
|
||||
MDFHash.put(keyTemp.toString(), tempArray );
|
||||
}
|
||||
//logger.debug("MDFProva: Native "+MDFHash.get(keyTemp).size());
|
||||
}
|
||||
|
||||
while(resDerivable.next()){
|
||||
keyTemp= new StringBuilder();
|
||||
keyTemp.append("<CollectionID>");
|
||||
keyTemp.append(resDerivable.getString(1));
|
||||
keyTemp.append("</CollectionID><Name>");
|
||||
keyTemp.append(resDerivable.getString(2));
|
||||
keyTemp.append("</Name><Description>");
|
||||
keyTemp.append(resDerivable.getString(3));
|
||||
keyTemp.append("</Description>");
|
||||
temp= new StringBuilder();
|
||||
temp.append("<MetadataFormat><Id>");
|
||||
temp.append(resDerivable.getString(4));
|
||||
if(selectedMetadata.isEmpty())
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>False</Selected></MetadataFormat>");
|
||||
else{
|
||||
if((selectedMetadata.containsKey(resDerivable.getString(1))) && (selectedMetadata.get(resDerivable.getString(1)).contains(resDerivable.getString(4))))
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>True</Selected></MetadataFormat>");
|
||||
else
|
||||
temp.append("</Id><Selectable>True</Selectable><Selected>False</Selected></MetadataFormat>");
|
||||
}
|
||||
//logger.debug("MDFProva: Derivable "+keyTemp+" "+temp);
|
||||
if(MDFHash.get(keyTemp.toString())!=null) MDFHash.get(keyTemp.toString()).add(temp.toString());
|
||||
else{
|
||||
tempArray=new ArrayList<String>();
|
||||
tempArray.add(temp.toString());
|
||||
MDFHash.put(keyTemp.toString(), tempArray );
|
||||
}
|
||||
}
|
||||
|
||||
}catch(SQLException e){//logger.error("database error");
|
||||
}
|
||||
|
||||
StringBuilder resultString= new StringBuilder();
|
||||
|
||||
resultString.append("<ResultSet>");
|
||||
resultString.append(totalMFList);
|
||||
resultString.append("<CollectionList>");
|
||||
String key;
|
||||
Enumeration<String> k=MDFHash.keys();
|
||||
while (k.hasMoreElements()){
|
||||
key= k.nextElement();
|
||||
ArrayList<String> tempMD=MDFHash.get(key);
|
||||
//logger.debug("ArrayProva"+tempMD.size());
|
||||
resultString.append("<Collection>");
|
||||
resultString.append(key);
|
||||
resultString.append("<MetadataFormatList>");;
|
||||
for (String obj: tempMD){
|
||||
resultString.append(obj);
|
||||
//logger.debug("ArrayProva "+obj);
|
||||
}
|
||||
resultString.append("</MetadataFormatList></Collection>");
|
||||
|
||||
}
|
||||
|
||||
resultString.append("</CollectionList></ResultSet>");
|
||||
//logger.debug("VDLMODEL: request MCFormat XML "+resultString);
|
||||
return resultString.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param resNative
|
||||
* @param resDerivable
|
||||
* @return
|
||||
*/
|
||||
protected static String PrepareQualityXML(){
|
||||
StringBuilder qualityString=new StringBuilder();
|
||||
qualityString.append("<ResultSet>");
|
||||
qualityString.append("<Quality><DisplayName>Response Time</DisplayName><Description>This quality parameter indicates the importance of response time (i.e., the delay from a function request to the reception of the response) ");
|
||||
|
||||
qualityString.append("in selecting the resource (both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% response time will result in a maximization of the resources ");
|
||||
qualityString.append("allocated as to minimise the response time. </Description><Multiple value=\"true\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">*</Value></AllowedValues></Quality>");
|
||||
qualityString.append("<Quality><DisplayName>Robustness</DisplayName><Description>This quality parameter indicates the importance of robustness (i.e., the resilience to faults) in selecting the resource (both in number and type)");
|
||||
qualityString.append(" needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% robustness will result in a maximisation of the resources allocated as to minimise service unavailability.</Description><Multiple ");
|
||||
qualityString.append(" value=\"true\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">*</Value></AllowedValues></Quality>");
|
||||
qualityString.append("<Quality><DisplayName>Scalability</DisplayName><Description>This quality parameter indicates the importance of scalability (i.e., the capability to increase Digital Library Capacity as much as needed) in selecting the resource ");
|
||||
qualityString.append("(both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% scalability will result in a maximisztion of the resources allocated as to minimise the response time.</Description>");
|
||||
qualityString.append("<Multiple value=\"true\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">*</Value></AllowedValues></Quality>");
|
||||
qualityString.append("<Quality><DisplayName>Re-use</DisplayName><Description>This quality parameter indicates the willingness to re-use existing resources (running instances, indexes, etc.) across various Digital Libraries. The specified ");
|
||||
qualityString.append("percentage represents the degree of re-use of existing assets in concretely implementing the Digital Library.</Description><Multiple value=\"true\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">*</Value></AllowedValues></Quality>");
|
||||
qualityString.append("<Quality><DisplayName>Capacity</DisplayName><Description>This quality parameter indicates the importance of capacity (i.e., the amount of resources allocated to the Digital Library) in selecting the resource (both in number and type) ");
|
||||
qualityString.append("needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% capacity will result in a maximization of the amount of resources allocated to the Digital Library.");
|
||||
qualityString.append(" </Description><Multiple value=\"true\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">*</Value></AllowedValues></Quality>");
|
||||
qualityString.append("<Quality><DisplayName>Security</DisplayName><Description>A true/false quality parameter indicates whether the operations have to be executed in a fully authorised and authenticated environment (true value) or ");
|
||||
qualityString.append("not (false value)</Description><Multiple value=\"false\"/><CanBeEmpty value=\"false\"/><AllowedValues><Value default=\"true\" selected=\"false\">Yes</Value><Value default=\"false\" selected=\"false\">No</Value></AllowedValues></Quality>");
|
||||
qualityString.append("</ResultSet>");
|
||||
return qualityString.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected static String PrepareFunctionalityXML(ResultSet res, ArrayList<Integer> selectedFunct, ArrayList<String> selectedCS){
|
||||
StringBuilder toReturn=new StringBuilder();
|
||||
toReturn.append("<Resultset>");
|
||||
try {
|
||||
while(res.next()){
|
||||
StringBuilder temp= new StringBuilder();
|
||||
temp.append("<Functionality id=\"");
|
||||
temp.append(res.getInt(1));
|
||||
temp.append("\" name=\"");
|
||||
temp.append(res.getString(2));
|
||||
temp.append("\" ");
|
||||
if (res.getInt(1)==10) temp.append(" enableCS=\"true\" ");
|
||||
if(selectedFunct.contains(res.getInt(1))) temp.append("selected=\"true\">");
|
||||
else {
|
||||
temp.append("selected=\"false\">");
|
||||
temp.append("<FunctionalityDescription>");
|
||||
temp.append(res.getString(3));
|
||||
temp.append("</FunctionalityDescription>");
|
||||
}
|
||||
ResultSet subFunctRes=DBInterface.queryDB("select * from FUNCTIONALITY where father='"+res.getInt(1)+"';");
|
||||
while(subFunctRes.next()){
|
||||
temp.append("<child>");
|
||||
temp.append("<Functionality id=\"");
|
||||
temp.append(subFunctRes.getInt(1));
|
||||
temp.append("\" name=\"");
|
||||
temp.append(subFunctRes.getString(2));
|
||||
temp.append("\" ");
|
||||
if(selectedFunct.contains(subFunctRes.getInt(1))) temp.append("selected=\"true\">");
|
||||
else temp.append("selected=\"false\">");
|
||||
temp.append("<FunctionalityDescription>");
|
||||
temp.append(subFunctRes.getString(3));
|
||||
temp.append("</FunctionalityDescription>");
|
||||
temp.append("</Functionality></child>");
|
||||
}
|
||||
temp.append("</Functionality>");
|
||||
toReturn.append(temp);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
//logger.debug("VDLModelService: DB error preparing XML for Functionality");
|
||||
}
|
||||
|
||||
try {
|
||||
ResultSet csRes=DBInterface.queryDB("select * from cs;");
|
||||
if (csRes.next()){
|
||||
StringBuilder temp= new StringBuilder();
|
||||
temp.append("<CS id=\"-1\" name=\"Workflows\" ");
|
||||
//if(selectedFunct.contains(res.getInt(1))) temp+="selected=\"true\">";
|
||||
//else
|
||||
temp.append("selected=\"false\">");
|
||||
temp.append("<CSDescription>This class of functions contains compound functions defined by aggregating existing functions in structured workflows as to deliver advanced features.</CSDescription>");
|
||||
do{
|
||||
temp.append("<child><CS id=\"");
|
||||
temp.append(csRes.getString(1));
|
||||
temp.append("\" name=\"");
|
||||
temp.append(csRes.getString(2));
|
||||
temp.append("\" ");
|
||||
if(selectedCS.contains(csRes.getString(1))) temp.append("selected=\"true\">");
|
||||
else temp.append("selected=\"false\">");
|
||||
temp.append("<CSDescription>");
|
||||
temp.append(csRes.getString(3));
|
||||
temp.append("</CSDescription>");
|
||||
temp.append("</CS></child>");
|
||||
}while (csRes.next());
|
||||
temp.append("</CS>");
|
||||
toReturn.append(temp);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
//logger.error("VDLModelService: DB error retreiving CS");
|
||||
}
|
||||
|
||||
toReturn.append("</Resultset>");
|
||||
//logger.debug(toReturn);
|
||||
return toReturn.toString();
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected static String PrepareDLModelXML(ResultSet res) throws Exception{
|
||||
|
||||
StringBuilder toReturn=new StringBuilder();
|
||||
|
||||
if (res.next()){
|
||||
toReturn.append("<Resultset><Name>");
|
||||
toReturn.append(res.getString(2));
|
||||
toReturn.append("</Name><Description>");
|
||||
toReturn.append(res.getString(3));
|
||||
toReturn.append("</Description><DLDesigner>");
|
||||
toReturn.append(res.getString(4));
|
||||
toReturn.append("</DLDesigner><DLManager>");
|
||||
toReturn.append(res.getString(5));
|
||||
toReturn.append("</DLManager><StartTime>");
|
||||
toReturn.append(res.getDate(6).getTime());
|
||||
toReturn.append("</StartTime><EndTime>");
|
||||
toReturn.append(res.getDate(7).getTime());
|
||||
toReturn.append("</EndTime></Resultset>");
|
||||
}else{
|
||||
Date dateFrom=new Date();
|
||||
Date dateTo=new Date();
|
||||
dateTo.setYear(dateTo.getYear()+1);
|
||||
toReturn=new StringBuilder("<Resultset><Name></Name><Description></Description><DLDesigner></DLDesigner><DLManager></DLManager><StartTime>"+dateFrom.getTime()+"</StartTime><EndTime>"+dateTo.getTime()+"</EndTime></Resultset>");
|
||||
}
|
||||
|
||||
return toReturn.toString();
|
||||
}
|
||||
|
||||
|
||||
protected static String PrepareAllDLsXML(ResultSet res) throws Exception{
|
||||
StringBuilder toReturn=new StringBuilder();
|
||||
toReturn.append("<ResultSet>");
|
||||
while (res.next()){
|
||||
toReturn.append("<DL><Name>");
|
||||
toReturn.append(res.getString(1));
|
||||
toReturn.append("</Name><Description>");
|
||||
toReturn.append(res.getString(2));
|
||||
toReturn.append("</Description><State>");
|
||||
toReturn.append(res.getString(3));
|
||||
toReturn.append("</State><EPR>");
|
||||
toReturn.append(res.getString(4));
|
||||
toReturn.append("</EPR></DL>");
|
||||
}
|
||||
|
||||
toReturn.append("</ResultSet>");
|
||||
return toReturn.toString();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue