From b334f037713253301e0cb7f3e40e1a79de13c0d5 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Tue, 22 Apr 2008 16:25:58 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/vre-management/VREModeler@454 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../vremodeler/impl/XMLUtil.java | 393 ++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 src/org/gcube/vremanagement/vremodeler/impl/XMLUtil.java diff --git a/src/org/gcube/vremanagement/vremodeler/impl/XMLUtil.java b/src/org/gcube/vremanagement/vremodeler/impl/XMLUtil.java new file mode 100644 index 0000000..5a11f5c --- /dev/null +++ b/src/org/gcube/vremanagement/vremodeler/impl/XMLUtil.java @@ -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 relatedCollection){ + StringBuilder temp= new StringBuilder(); + String selectedString="false"; + temp.append(""); + try{ + while (res.next()){ + selectedString= relatedCollection.contains(res.getString("ID")) ? "true" : "false"; + temp.append(""); + temp.append(res.getString(1)); + temp.append(""); + temp.append(res.getString(2)); + temp.append(""); + temp.append(res.getString(3)); + temp.append(""); + temp.append(res.getString(4)); + temp.append(""); + temp.append(res.getString(5)); + temp.append(""); + temp.append(res.getString(6)); + temp.append(""); + temp.append(selectedString); + temp.append(""); + } + }catch(SQLException e){//logger.error("database error "+e.getMessage()); + } + temp.append(""); + //logger.debug("VDLMODEL: request collection XML: "+temp); + return temp.toString(); + } + + + protected static String PrepareDHNsXML(ResultSet res, ArrayList relatedDHNs){ + StringBuilder temp = new StringBuilder(), + runningInstancesString ; + ResultSet riRes; + String selectedString="false"; + temp.append(""); + 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(""); + } + + temp.append(""); + temp.append(res.getString(1)); + temp.append(""); + temp.append(res.getString(2)); + temp.append(""); + temp.append(res.getString(3)); + temp.append(""); + temp.append(res.getString(4)); + temp.append(""); + temp.append(res.getString(5)); + temp.append(""); + temp.append(res.getString(6)); + temp.append(""); + temp.append(res.getString(7)); + temp.append(""); + temp.append(res.getString(8)); + temp.append(""); + temp.append(res.getString(9)); + temp.append(""); + temp.append(res.getString(10)); + temp.append(""); + temp.append(runningInstancesString); + temp.append(""); + temp.append(selectedString); + temp.append(""); + } + }catch(SQLException e){//logger.error("database error "+e.getMessage()); + } + + temp.append(""); + //logger.debug("VDLMODEL: request collection XML: "+temp); + return temp.toString(); + } + + /** + * + * @param res + * @return + */ + protected static String PrepareMCFormatXML(ResultSet resNative, ResultSet resDerivable, ResultSet allMF, Hashtable> selectedMetadata){ + + Hashtable> MDFHash= new Hashtable>(); + StringBuilder temp; + StringBuilder keyTemp=null; + StringBuilder totalMFList=new StringBuilder(); + totalMFList.append(""); + ArrayList tempArray; + try{ + + while (allMF.next()) + { + temp= new StringBuilder(); + temp.append(""); + temp.append(allMF.getString(1)); + temp.append(""); + temp.append(allMF.getString(2)); + temp.append(""); + temp.append(allMF.getString(3)); + temp.append(""); + temp.append(allMF.getString(4)); + temp.append(""); + totalMFList.append(temp); + } + + totalMFList.append(""); + + while(resNative.next()){ + keyTemp= new StringBuilder(); + keyTemp.append(""); + keyTemp.append(resNative.getString(1)); + keyTemp.append(""); + keyTemp.append(resNative.getString(2)); + keyTemp.append(""); + keyTemp.append(resNative.getString(3)); + keyTemp.append(""); + temp= new StringBuilder(); + temp.append(""); + temp.append(resNative.getString(4)); + if(selectedMetadata.isEmpty()) + temp.append("TrueTrue"); + else{ + if((selectedMetadata.containsKey(resNative.getString(1))) && (selectedMetadata.get(resNative.getString(1)).contains(resNative.getString(4)))) + temp.append("TrueTrue"); + else + temp.append("TrueFalse"); + } + //logger.debug("MDFProva: "+keyTemp+" "+temp); + if(MDFHash.get(keyTemp.toString())!=null) MDFHash.get(keyTemp).add(temp.toString()); + else{ + tempArray=new ArrayList(); + 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(""); + keyTemp.append(resDerivable.getString(1)); + keyTemp.append(""); + keyTemp.append(resDerivable.getString(2)); + keyTemp.append(""); + keyTemp.append(resDerivable.getString(3)); + keyTemp.append(""); + temp= new StringBuilder(); + temp.append(""); + temp.append(resDerivable.getString(4)); + if(selectedMetadata.isEmpty()) + temp.append("TrueFalse"); + else{ + if((selectedMetadata.containsKey(resDerivable.getString(1))) && (selectedMetadata.get(resDerivable.getString(1)).contains(resDerivable.getString(4)))) + temp.append("TrueTrue"); + else + temp.append("TrueFalse"); + } + //logger.debug("MDFProva: Derivable "+keyTemp+" "+temp); + if(MDFHash.get(keyTemp.toString())!=null) MDFHash.get(keyTemp.toString()).add(temp.toString()); + else{ + tempArray=new ArrayList(); + tempArray.add(temp.toString()); + MDFHash.put(keyTemp.toString(), tempArray ); + } + } + + }catch(SQLException e){//logger.error("database error"); + } + + StringBuilder resultString= new StringBuilder(); + + resultString.append(""); + resultString.append(totalMFList); + resultString.append(""); + String key; + Enumeration k=MDFHash.keys(); + while (k.hasMoreElements()){ + key= k.nextElement(); + ArrayList tempMD=MDFHash.get(key); + //logger.debug("ArrayProva"+tempMD.size()); + resultString.append(""); + resultString.append(key); + resultString.append("");; + for (String obj: tempMD){ + resultString.append(obj); + //logger.debug("ArrayProva "+obj); + } + resultString.append(""); + + } + + resultString.append(""); + //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(""); + qualityString.append("Response TimeThis 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. *"); + qualityString.append("RobustnessThis 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.*"); + qualityString.append("ScalabilityThis 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."); + qualityString.append("*"); + qualityString.append("Re-useThis 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.*"); + qualityString.append("CapacityThis 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(" *"); + qualityString.append("SecurityA 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)YesNo"); + qualityString.append(""); + return qualityString.toString(); + } + + + /** + * + */ + protected static String PrepareFunctionalityXML(ResultSet res, ArrayList selectedFunct, ArrayList selectedCS){ + StringBuilder toReturn=new StringBuilder(); + toReturn.append(""); + try { + while(res.next()){ + StringBuilder temp= new StringBuilder(); + temp.append(""); + else { + temp.append("selected=\"false\">"); + temp.append(""); + temp.append(res.getString(3)); + temp.append(""); + } + ResultSet subFunctRes=DBInterface.queryDB("select * from FUNCTIONALITY where father='"+res.getInt(1)+"';"); + while(subFunctRes.next()){ + temp.append(""); + temp.append(""); + else temp.append("selected=\"false\">"); + temp.append(""); + temp.append(subFunctRes.getString(3)); + temp.append(""); + temp.append(""); + } + temp.append(""); + 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(""; + //else + temp.append("selected=\"false\">"); + temp.append("This class of functions contains compound functions defined by aggregating existing functions in structured workflows as to deliver advanced features."); + do{ + temp.append(""); + else temp.append("selected=\"false\">"); + temp.append(""); + temp.append(csRes.getString(3)); + temp.append(""); + temp.append(""); + }while (csRes.next()); + temp.append(""); + toReturn.append(temp); + } + } catch (SQLException e) { + //logger.error("VDLModelService: DB error retreiving CS"); + } + + toReturn.append(""); + //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(""); + toReturn.append(res.getString(2)); + toReturn.append(""); + toReturn.append(res.getString(3)); + toReturn.append(""); + toReturn.append(res.getString(4)); + toReturn.append(""); + toReturn.append(res.getString(5)); + toReturn.append(""); + toReturn.append(res.getDate(6).getTime()); + toReturn.append(""); + toReturn.append(res.getDate(7).getTime()); + toReturn.append(""); + }else{ + Date dateFrom=new Date(); + Date dateTo=new Date(); + dateTo.setYear(dateTo.getYear()+1); + toReturn=new StringBuilder(""+dateFrom.getTime()+""+dateTo.getTime()+""); + } + + return toReturn.toString(); + } + + + protected static String PrepareAllDLsXML(ResultSet res) throws Exception{ + StringBuilder toReturn=new StringBuilder(); + toReturn.append(""); + while (res.next()){ + toReturn.append("
"); + toReturn.append(res.getString(1)); + toReturn.append(""); + toReturn.append(res.getString(2)); + toReturn.append(""); + toReturn.append(res.getString(3)); + toReturn.append(""); + toReturn.append(res.getString(4)); + toReturn.append("
"); + } + + toReturn.append("
"); + return toReturn.toString(); + } + +}