From d361c971c2563a0db741570613383519bbd1d8ec Mon Sep 17 00:00:00 2001 From: Rena Tsantouli Date: Fri, 10 Apr 2009 14:33:03 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/application-support-layer/applicationSupportLayerCore@11252 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../vremanagement/impl/GenericResource.java | 420 ------------------ .../core/vremanagement/impl/Pair.java | 50 --- 2 files changed, 470 deletions(-) delete mode 100644 src/org/gcube/application/framework/core/vremanagement/impl/GenericResource.java delete mode 100644 src/org/gcube/application/framework/core/vremanagement/impl/Pair.java diff --git a/src/org/gcube/application/framework/core/vremanagement/impl/GenericResource.java b/src/org/gcube/application/framework/core/vremanagement/impl/GenericResource.java deleted file mode 100644 index 309efd6..0000000 --- a/src/org/gcube/application/framework/core/vremanagement/impl/GenericResource.java +++ /dev/null @@ -1,420 +0,0 @@ -package org.gcube.application.framework.core.vremanagement.impl; - -import java.io.StringReader; -import java.rmi.RemoteException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; - -import org.gcube.application.framework.core.cache.CachesManager; -import org.gcube.application.framework.core.security.PortalSecurityManager; -import org.gcube.application.framework.core.session.ASLSession; -import org.gcube.application.framework.core.session.SessionManager; -import org.gcube.application.framework.core.util.CacheEntryConstants; -import org.gcube.application.framework.core.util.QueryString; -import org.gcube.application.framework.core.util.SessionConstants; -import org.gcube.application.framework.core.vremanagement.GenericResourceInfoI; -import org.gcube.application.framework.core.vremanagement.model.ISGenericResource; -import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.QueryParameter; -import org.gcube.common.core.informationsystem.client.XMLResult; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericResourceQuery; -import org.gcube.common.core.informationsystem.publisher.ISPublisher; -import org.gcube.common.core.informationsystem.publisher.ISPublisherException; -import org.gcube.common.core.resources.GCUBEGenericResource; -import org.gcube.common.core.scope.GCUBEScope; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; -import org.gcube.application.framework.core.vremanagement.impl.Pair; - -/** - * @author Valia Tsaqgkalidou (NKUA) - */ -public class GenericResource implements GenericResourceInfoI{ - - /** - * A static IS publisher in order to communicate with IS - */ - protected static ISPublisher publisher = null; - protected static ISClient client = null; - - /** - * The D4Science session to be used - */ - ASLSession session; - - /** - * Constructs a GenericReosurce object - * @param extrenalSessionID the external session id which is used for the D4ScienceSession (usually the session.getId() of the HttpSession or PortletSession) - * @param username the username of the user that called this constructor - */ - public GenericResource(String extrenalSessionID, String username) - { - session = SessionManager.getInstance().getD4ScienceSession(extrenalSessionID, username); - try { - publisher = GHNContext.getImplementation(ISPublisher.class); - } catch (Exception e) { - e.printStackTrace(); - } - if(client == null) - { - try { - client = GHNContext.getImplementation(ISClient.class); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - client = null; - } - } - } - - - - /** - * Constructs a GenericReosurce object - * @param session the D4Science session to be used for retrieving information needed - */ - public GenericResource(ASLSession session) { - super(); - this.session = session; - try { - publisher = GHNContext.getImplementation(ISPublisher.class); - } catch (Exception e) { - e.printStackTrace(); - } - if(client == null) - { - try { - client = GHNContext.getImplementation(ISClient.class); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - client = null; - } - } - } - - - - /** - * @return the name of the active VRE - */ - protected String getDLName() - { - return session.getScopeName(); - } - - /** - * @param query the query to retrieve generic resources from cache - * @return a list of generic resources - */ - protected List getGenericResource(QueryString query) - { - return (List) (CachesManager.getInstance().getGenericResourceCache().get(query).getValue()); - } - - - /** - * Creates a new generic resource - * @param genericResource the new generic resource - * @return the ID of the newly created resource - * @throws RemoteException when an error has occurred while communicating with IS - */ - public String createGenericResource(ISGenericResource genericResource) - throws RemoteException { - try { - GCUBEGenericResource gCubeRes = GHNContext.getImplementation(GCUBEGenericResource.class); - gCubeRes.setID(""); - gCubeRes.setName(genericResource.getName()); - gCubeRes.setDescription(genericResource.getDescription()); - gCubeRes.setBody(genericResource.getBody()); - gCubeRes.setSecondaryType(genericResource.getSecondaryType()); - gCubeRes.addScope(session.getScope()); - - String Gr = publisher.registerGCUBEResource(gCubeRes, session.getScope(), new PortalSecurityManager(session)); - Document doc = parseXMLFileToDOM(Gr); - XPath xpath = XPathFactory.newInstance().newXPath(); - try { - return (String) xpath.evaluate("/Resource/ID/text()", doc, XPathConstants.STRING); - } catch (XPathExpressionException e) { - e.printStackTrace(); - throw new RemoteException(); - } - } catch (Exception e) { - e.printStackTrace(); - throw new RemoteException(); - } - } - - - /** - * Updates a generic resource based on it's ID - * @param genericResource the generic resource to be updated - * @throws RemoteException when an error has occurred while communicating with IS - */ - public void updateGenericResourceByID(ISGenericResource genericResource) - throws RemoteException { - try { - - //GCUBEGenericResource gCubeRes = GHNContext.getImplementation(GCUBEGenericResource.class); - - System.out.println("In updateGenericResourceByID!"); - GCUBEGenericResourceQuery query = client.getQuery(GCUBEGenericResourceQuery.class); - query.addAtomicConditions(new AtomicCondition("/ID", genericResource.getId())); - List result = client.execute(query, session.getScope()); - - if (result == null || result.size() == 0) { - System.out.println("Error in updateGenericResourceByID: The generic resources list is null"); - return; - } - - - - GCUBEGenericResource gCubeRes = result.get(0); - - - // gCubeRes.setID(genericResource.getId()); - gCubeRes.setName(genericResource.getName()); - gCubeRes.setDescription(genericResource.getDescription()); - gCubeRes.setBody(genericResource.getBody()); - gCubeRes.setSecondaryType(genericResource.getSecondaryType()); - // gCubeRes.addScope(session.getScope()); - publisher.updateGCUBEResource(gCubeRes, session.getScope(), new PortalSecurityManager(session)); - - - - List genRes = new ArrayList(); - genRes.add(genericResource); - QueryString query1 = new QueryString(); - query1.addParameter(CacheEntryConstants.id, genericResource.getId()); - query1.addParameter(CacheEntryConstants.vre, session.getScopeName()); - CachesManager.getInstance().getGenericResourceCache().put(new net.sf.ehcache.Element(query1, genRes)); - - query1.clear(); - query1.put(CacheEntryConstants.name, genericResource.getName().trim()); - query1.addParameter(CacheEntryConstants.vre, session.getScopeName()); - if(CachesManager.getInstance().getGenericResourceCache().isElementInMemory(query1) || CachesManager.getInstance().getGenericResourceCache().isElementOnDisk(query1)) - { - CachesManager.getInstance().getGenericResourceCache().get(query1).setTimeToLive(-1); - } - - - - } catch (Exception e) { - e.printStackTrace(); - throw new RemoteException(); - } - } - - - /** - * @return a list containing pairs of (name, id) of the available generic resources - * @throws RemoteException when an error has occurred while communicating with IS - */ - public List getAvailableGenericResourceNames() throws RemoteException { - List pairs = new ArrayList(); - String xquery = "for $query in collection(\"/db/Profiles/GenericResource\")//Document/Data/child::*[local-name()='Profile']/Resource return {$query/ID}{$query/Profile/Name}"; // order by $query/Profile/Name - GCUBEGenericQuery queryMan; - try { - queryMan = client.getQuery(GCUBEGenericQuery.class); - queryMan.setExpression(xquery); - List res = client.execute(queryMan, session.getScope()); - String id, name; - for(XMLResult xml : res) - { - try - { - id = xml.evaluate("//ID/text()").get(0); - List var = xml.evaluate("//Name/text()"); - if(var.size() > 0) - name = var.get(0); - else - name = ""; - System.out.println(id + " " + name); - pairs.add(new Pair(name, id)); - } - catch(Exception e) - { - - } - } - return pairs; - } catch (Exception e) { - e.printStackTrace(); - throw new RemoteException(); - } - } - - - /** - * @param id the id of the generic resource - * @return a list containing the corresponding generic resources - * @throws RemoteException when an error has occurred while communicating with IS - */ - public List getGenericResourceByID(String id) - throws RemoteException { - QueryString query = new QueryString(); - query.put(CacheEntryConstants.id, id); - query.put(CacheEntryConstants.vre, getDLName()); - return getGenericResource(query); - } - - - /** - * @param name the name of the generic resource - * @return a list containing the generic resources that have as name the given - * @throws RemoteException when an error has occurred while communicating with IS - */ - public List getGenericResourceByName(String name) - throws RemoteException { - QueryString query = new QueryString(); - query.put(CacheEntryConstants.name, name); - query.put(CacheEntryConstants.vre, getDLName()); - return getGenericResource(query); - } - - - /** - * @return a list containing the generic resources that describe which collections are part of the active VRE as well as their hierarchical structure (the name of this generic resource is "ScenarioCollectionInfo") - * @throws RemoteException when an error has occurred while communicating with IS - */ - public List getGenericResourceForScenario() - throws RemoteException { - QueryString query = new QueryString(); - query.put(CacheEntryConstants.name, SessionConstants.ScenarioSchemaInfo); - query.put(CacheEntryConstants.vre, getDLName()); - return getGenericResource(query); - } - - /** - * Removes an existing generic resource - * @param genericResource the generic resource to be removed - * @throws RemoteException when an error has occurred while communicating with IS - */ - public void removeGenericResource(ISGenericResource genericResource) - throws RemoteException { - try { - publisher.removeGCUBEResource(genericResource.getId(), GCUBEGenericResource.TYPE, session.getScope(), new PortalSecurityManager(session)); - - QueryString query = new QueryString(); - query.addParameter(CacheEntryConstants.id, genericResource.getId()); - query.addParameter(CacheEntryConstants.vre, session.getScopeName()); - if(CachesManager.getInstance().getGenericResourceCache().isElementInMemory(query) || CachesManager.getInstance().getGenericResourceCache().isElementOnDisk(query)) - { - genericResource = ((List)CachesManager.getInstance().getGenericResourceCache().get(query).getValue()).get(0); - CachesManager.getInstance().getGenericResourceCache().get(query).setTimeToLive(0); - } - - query.clear(); - query.put(CacheEntryConstants.name, genericResource.getName()); - query.addParameter(CacheEntryConstants.vre, session.getScopeName()); - if(CachesManager.getInstance().getGenericResourceCache().isElementInMemory(query) || CachesManager.getInstance().getGenericResourceCache().isElementOnDisk(query)) - { - CachesManager.getInstance().getGenericResourceCache().get(query).setTimeToLive(0); - } - } catch (ISPublisherException e) { - e.printStackTrace(); - throw new RemoteException(); - } - - } - - - /** - * Parses the xml and returns it as DOM object - * @param XMLdoc the xml as a string - * @return xml parsed as a Document - */ - static Document parseXMLFileToDOM(String XMLdoc) { - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder; - try { - builder = dbFactory.newDocumentBuilder(); - Document doc = builder.parse(new InputSource(new StringReader(XMLdoc))); - return doc; - } catch (Exception e) { - return null; - } - } - - - - /** - * - * @param xsltType Presentation or Metadata. The type of the xslt - * @return A vector which contains all the generic resources, xslts of this type. The xslts are sorted by the schema. - */ - public HashMap> getAllXslts(String xsltType) { - HashMap> schemas_xslts = new HashMap>(); - Vector xslts = null; - - - List result = null; - try { - result = retrieveGenericResourcesFromNameParts(xsltType, session.getScope()); - } catch (Exception e) { - e.printStackTrace(); - } - - if (result == null) { - return null; - } - for (int i=0; i(); - schemas_xslts.put(schemaName.replaceFirst("%5f", "_"), xslts); - } - - // add the xslt name and id - String s[] = new String[2]; - s[0] = xsltName; - s[1] = id; - xslts.add(s); - } - return schemas_xslts; - } - - private static List retrieveGenericResourcesFromNameParts(String nameParts, GCUBEScope scope) throws Exception { - - String condition = "contains($result/Profile/Name/string(), '" + nameParts + "')"; - - GCUBEGenericQuery query = client.getQuery("GCUBEResourceQuery"); - query.addParameters(new QueryParameter("FILTER", condition), - new QueryParameter("TYPE", GCUBEGenericResource.TYPE), - new QueryParameter("RESULT", "{$result/ID}{$result/Profile/Name}")); - - List result = client.execute(query, scope); - List ret = new LinkedList(); - if (result==null || result.size()==0) - throw new Exception("No generic resources were found."); - - for(XMLResult r : result){ - String[] nameAndID = { r.evaluate("//Name/text()").get(0), r.evaluate("//ID/text()").get(0) }; - ret.add(nameAndID); - } - return ret; - } - - -} diff --git a/src/org/gcube/application/framework/core/vremanagement/impl/Pair.java b/src/org/gcube/application/framework/core/vremanagement/impl/Pair.java deleted file mode 100644 index 84e2105..0000000 --- a/src/org/gcube/application/framework/core/vremanagement/impl/Pair.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.gcube.application.framework.core.vremanagement.impl; - -/** - * @author Valia Tsaqgkalidou (NKUA) - */ -public class Pair { - protected String name; - protected String value; - - /** - * @return the name - */ - public String getName() { - return name; - } - - /** - * @param name the name to set - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return the value - */ - public String getValue() { - return value; - } - - /** - * @param value the value to set - */ - public void setValue(String value) { - this.value = value; - } - - /** - * @param name the name - * @param value the value - */ - public Pair(String name, String value) { - super(); - this.name = name; - this.value = value; - } - - -} -