vre-modeler/src/org/gcube/vremanagement/vremodeler/db/IStoDBUtil.java

153 lines
5.9 KiB
Java
Raw Normal View History

package org.gcube.vremanagement.vremodeler.db;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.rmi.RemoteException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.apache.axis.message.addressing.EndpointReferenceType;
import org.gcube.common.core.contexts.GHNContext;
import org.gcube.common.core.faults.GCUBEFault;
import org.gcube.common.core.informationsystem.client.AtomicCondition;
import org.gcube.common.core.informationsystem.client.ISClient;
import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery;
import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericResourceQuery;
import org.gcube.common.core.resources.GCUBEGenericResource;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.vremanagement.vremodeler.impl.ServiceContext;
import org.gcube.vremanagement.vremodeler.resources.Functionality;
import org.gcube.vremanagement.vremodeler.resources.MainFunctionality;
import org.gcube.vremanagement.vremodeler.resources.Service;
import org.gcube.vremanagement.vremodeler.resources.handlers.CollectionHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.FunctionalityHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.GHNHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.GenericResourceHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.GhnRiRelationHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.MCollectionHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.MetadataFormatHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.NativeMetadataFormatHandler;
import org.gcube.vremanagement.vremodeler.resources.handlers.RunningInstancesHandler;
import org.gcube.vremanagement.vremodeler.resources.kxml.KGCUBEGenericFunctionalityResource;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
/**
*
* @author lucio lelii CNR
*
*/
public class IStoDBUtil {
private static GCUBELog logger = new GCUBELog(IStoDBUtil.class);
private static void createTables(GCUBEScope scope) throws GCUBEFault{
try{
DBInterface.connect();
File file= ServiceContext.getContext().getConfigFile("hsqldb/vreModelerDBInitializer", false);
FileReader fileReader= new FileReader(file);
BufferedReader in = new BufferedReader(fileReader);
String line;
while ((line=in.readLine())!=null){
logger.trace(line);
DBInterface.ExecuteUpdate(line);
}
}catch (Exception e){
logger.error("error creating tables",e);
throw new GCUBEFault(e); }
}
/**
* Initialize all database tables
*
* @param GCUBEScope the scope
*/
public static void initDB(GCUBEScope scope) throws GCUBEFault{
logger.info("Starting initialization!!");
if (!DBInterface.dbAlreadyCreated())
createTables(scope);
cleanDB(scope);
}
private static void cleanDB(GCUBEScope scope) throws GCUBEFault
{
try{
DBInterface.connect();
//DBInterface.deleteAll("VRERELATEDCOLLECTION");
//DBInterface.deleteAll("VRERELATEDCS");
//DBInterface.deleteAll("VRERELATEDMETADATAFORMAT");
//DBInterface.deleteAll("VRERELATEDFUNCT");
//DBInterface.deleteAll("VRERELATEDGHN");
//DBInterface.deleteAll("VRE");
DBInterface.deleteAll(NativeMetadataFormatHandler.tableName);
//DBInterface.deleteAll("derivablemdf");
DBInterface.deleteAll(MetadataFormatHandler.tableName);
DBInterface.deleteAll(MCollectionHandler.tableName);
DBInterface.deleteAll(CollectionHandler.tableName);
//DBInterface.deleteAll("relatedserviceid");
DBInterface.deleteAll(GHNHandler.tableName);
DBInterface.deleteAll(RunningInstancesHandler.tableName);
DBInterface.deleteAll(GhnRiRelationHandler.tableName);
//DBInterface.deleteAll("cs");
DBInterface.deleteAll(GenericResourceHandler.tableName);
DBInterface.deleteAll(FunctionalityHandler.portletTableName);
DBInterface.deleteAll(FunctionalityHandler.serviceTableName);
DBInterface.deleteAll(FunctionalityHandler.functionalityTableName);
}catch (SQLException e){
logger.error("error cleaning sqlDB",e);
throw new GCUBEFault(e); }
}
/*
private static void insertNeededResources(GCUBEScope scope) throws GCUBEFault{
List<GCUBEGenericResource> genericResourcesList= null;
try{
if (queryClient==null) queryClient= GHNContext.getImplementation(ISClient.class);
GCUBEGenericResourceQuery query= queryClient.getQuery(GCUBEGenericResourceQuery.class);
query.addGenericCondition("$result/Profile/SecondaryType/string() eq 'UserProfile' or $result/Profile/SecondaryType/string() eq 'Schemas Searchable Fields' or $result/Profile/SecondaryType/string() eq 'MetadataXSLT' or $result/Profile/SecondaryType/string() eq 'PresentationXSLT'");
genericResourcesList= queryClient.execute(query, scope);
}catch(Exception e ){logger.error("Error queryng IS"); throw new GCUBEFault(e); }
//NEEDEDRESOURCES(ID, TYPE)
List<String[]> values = new ArrayList<String[]>(genericResourcesList.size());
List<String> row;
for (GCUBEGenericResource gen :genericResourcesList){
row= new ArrayList<String>(2);
row.add(gen.getID());
row.add(gen.getType());
values.add(row.toArray(new String[2]));
}
try{
DBInterface.connect();
DBInterface.insertInto("NEEDEDRESOURCES", values.toArray(new String[0][0]));
}catch (SQLException e){
logger.error("error inserting Generic resource in the DB ",e);
throw new GCUBEFault(e);
}
}
*/
}