org.gcube.resourcemanagement.support.server.managers.resources
Class AbstractResourceManager

java.lang.Object
  extended by org.gcube.resourcemanagement.support.server.managers.resources.AbstractResourceManager
Direct Known Subclasses:
CollectionManager, GenericResourceManager, GHNManager, RunningInstanceManager, RuntimeResourceManager, ServiceManager, ViewManager

public abstract class AbstractResourceManager
extends Object

The minimal interface all the resource managers must implement. Here is implemented the greatest part of the operations exposed in the official wiki.

Author:
Daniele Strollo (ISTI-CNR)

Constructor Summary
AbstractResourceManager(AllowedResourceTypes type)
          Deprecated. discouraged use. With no ID some operations cannot be accessed. For internal use only.
AbstractResourceManager(String id, AllowedResourceTypes type)
          Instantiate the handler of a resource given its identifier and its type.
AbstractResourceManager(String id, String name, AllowedResourceTypes type)
           
AbstractResourceManager(String id, String name, AllowedResourceTypes type, String subtype)
           
 
Method Summary
 String addToExistingScope(org.gcube.common.core.scope.GCUBEScope sourceScope, org.gcube.common.core.scope.GCUBEScope targetScope)
          Add a scope to a gHN and the related Service Map is already available on the gHN.
protected abstract  org.gcube.common.core.resources.GCUBEResource buildGCUBEResource(String xmlRepresentation)
          Given the XML profile representation of a gcube resource, its GCUBEResource is built.
 String copyFromToVO(org.gcube.common.core.scope.GCUBEScope sourceScope, org.gcube.common.core.scope.GCUBEScope targetScope)
          Similar to the addToExistingScope(org.gcube.common.core.scope.GCUBEScope, org.gcube.common.core.scope.GCUBEScope) method but involves two scopes of type VO.
 void delete(org.gcube.common.core.scope.GCUBEScope scope)
          Removes a resource.
 void forceDelete(org.gcube.common.core.scope.GCUBEScope scope)
          Deprecated. you must be sure before requiring this operation... take care
 org.gcube.common.core.resources.GCUBEResource getGCUBEResource(org.gcube.common.core.scope.GCUBEScope scope)
          From a resource retrieves its GCUBEResource depending on the scope in which it is published.
 String getID()
          All resources must be identifiable through an unique ID.
protected  org.gcube.common.core.informationsystem.client.ISClient getISClient()
          The singleton ISClient instance is preferred.
 org.gcube.common.core.informationsystem.publisher.ISPublisher getISPublisher()
          The singleton ISPublisher instance is preferred.
 String getName()
          All resources must have a valid name.
 org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType getReportResourceManager(org.gcube.common.core.scope.GCUBEScope scope)
          The report resource manager needed to handle the resource in a given scope.
 org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType getResourceManager(org.gcube.common.core.scope.GCUBEScope scope)
          The resource manager needed to handle the resource in a given scope.
 List<org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType> getResourceManagers(org.gcube.common.core.scope.GCUBEScope scope)
          The the list of resource managers able to handle the resource in a given scope.
 List<org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType> getResourceReportManagers(org.gcube.common.core.scope.GCUBEScope scope)
          The the list of resource report managers able to handle the resource in a given scope.
 org.gcube.common.core.security.GCUBESecurityManagerImpl getSecurityManager()
          The security manager is initially instantiated with empty permissions.
 String getSubType()
          Resources can have a subtype (e.g.
 AllowedResourceTypes getType()
          All resources have a type.
protected  String getXMLDescription(org.gcube.common.core.scope.GCUBEScope scope)
          Returns the XML profile of a resource (given its ID that is encapsulated inside the resource manager).
 String removeFromScope(org.gcube.common.core.scope.GCUBEScope scope)
          Removes the current resource from the scope.
 void setID(String id)
           
 void setSecurityManager(org.gcube.common.core.security.GCUBESecurityManagerImpl securityManager)
           
protected  List<org.gcube.common.core.scope.GCUBEScope> validateScopes(org.gcube.common.core.scope.GCUBEScope[] scopes)
          Adds to scopes the required maps (if needed).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractResourceManager

public AbstractResourceManager(AllowedResourceTypes type)
                        throws ResourceParameterException,
                               ResourceAccessException
Deprecated. discouraged use. With no ID some operations cannot be accessed. For internal use only.

Throws:
ResourceParameterException
ResourceAccessException

AbstractResourceManager

public AbstractResourceManager(String id,
                               AllowedResourceTypes type)
                        throws ResourceParameterException,
                               ResourceAccessException
Instantiate the handler of a resource given its identifier and its type. Notice that this constructor is implicitly invoked when instantiating the concrete resource manager (e.g. new GHNManager(id)).

Parameters:
id - the identifier of the resource the manage
type - the type (GHN, RI, ...).
Throws:
ResourceParameterException
ResourceAccessException

AbstractResourceManager

public AbstractResourceManager(String id,
                               String name,
                               AllowedResourceTypes type)
                        throws ResourceParameterException,
                               ResourceAccessException
Throws:
ResourceParameterException
ResourceAccessException

AbstractResourceManager

public AbstractResourceManager(String id,
                               String name,
                               AllowedResourceTypes type,
                               String subtype)
                        throws ResourceParameterException,
                               ResourceAccessException
Throws:
ResourceParameterException
ResourceAccessException
Method Detail

getISClient

protected final org.gcube.common.core.informationsystem.client.ISClient getISClient()
The singleton ISClient instance is preferred. All resource managers can internally access this instance to make queries to the IS.

Returns:

getISPublisher

public final org.gcube.common.core.informationsystem.publisher.ISPublisher getISPublisher()
The singleton ISPublisher instance is preferred. All resource managers can internally access this instance to interact with ISPublisher to handle resources.

Returns:

setSecurityManager

public final void setSecurityManager(org.gcube.common.core.security.GCUBESecurityManagerImpl securityManager)

getSecurityManager

public final org.gcube.common.core.security.GCUBESecurityManagerImpl getSecurityManager()
The security manager is initially instantiated with empty permissions. The setSecurityManager(org.gcube.common.core.security.GCUBESecurityManagerImpl) can be used to change it.

Returns:

getID

public final String getID()
All resources must be identifiable through an unique ID.
This field is mandatory

Returns:

setID

public final void setID(String id)

getName

public final String getName()
All resources must have a valid name.
This field is mandatory

Returns:

getType

public final AllowedResourceTypes getType()
All resources have a type.
This field is mandatory

Returns:

getSubType

public final String getSubType()
Resources can have a subtype (e.g. for GHNs is the domain).
This field is optional

Returns:

getResourceManagers

public final List<org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType> getResourceManagers(org.gcube.common.core.scope.GCUBEScope scope)
                                                                                                            throws ResourceAccessException,
                                                                                                                   ResourceParameterException
The the list of resource managers able to handle the resource in a given scope.

Parameters:
scope - the scope in which to operate
Returns:
all the available managers
Throws:
ResourceAccessException - if no manager can be instantiated
ResourceParameterException - if the parameters are invalid

getResourceReportManagers

public final List<org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType> getResourceReportManagers(org.gcube.common.core.scope.GCUBEScope scope)
                                                                                                                throws ResourceAccessException,
                                                                                                                       ResourceParameterException
The the list of resource report managers able to handle the resource in a given scope.

Parameters:
scope - the scope in which to operate
Returns:
all the available managers
Throws:
ResourceAccessException - if no manager can be instantiated
ResourceParameterException - if the parameters are invalid

getResourceManager

public final org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType getResourceManager(org.gcube.common.core.scope.GCUBEScope scope)
                                                                                                     throws AbstractResourceException
The resource manager needed to handle the resource in a given scope.

Parameters:
scope - the scope in which to operate
Returns:
a random chosen manager from the avaiable ones
Throws:
ResourceAccessException - if no manager can be instantiated
ResourceParameterException - if the parameters are invalid
AbstractResourceException

getReportResourceManager

public final org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType getReportResourceManager(org.gcube.common.core.scope.GCUBEScope scope)
                                                                                                         throws AbstractResourceException
The report resource manager needed to handle the resource in a given scope.

Parameters:
scope - the scope in which to operate
Returns:
a random chosen manager from the avaiable ones
Throws:
ResourceAccessException - if no manager can be instantiated
ResourceParameterException - if the parameters are invalid
AbstractResourceException

addToExistingScope

public final String addToExistingScope(org.gcube.common.core.scope.GCUBEScope sourceScope,
                                       org.gcube.common.core.scope.GCUBEScope targetScope)
                                throws AbstractResourceException
Add a scope to a gHN and the related Service Map is already available on the gHN.

Parameters:
nestingPublication - true for resources different from gHN and RI.
Returns:
the reportID generated
Throws:
AbstractResourceException

copyFromToVO

public final String copyFromToVO(org.gcube.common.core.scope.GCUBEScope sourceScope,
                                 org.gcube.common.core.scope.GCUBEScope targetScope)
                          throws AbstractResourceException
Similar to the addToExistingScope(org.gcube.common.core.scope.GCUBEScope, org.gcube.common.core.scope.GCUBEScope) method but involves two scopes of type VO. Notice that this operation in reserved for resources different from gHN and RI. See here for further details.

Parameters:
sourceScope -
targetScope -
Returns:
Throws:
AbstractResourceException

buildGCUBEResource

protected abstract org.gcube.common.core.resources.GCUBEResource buildGCUBEResource(String xmlRepresentation)
                                                                             throws AbstractResourceException
Given the XML profile representation of a gcube resource, its GCUBEResource is built. Since it depends on the type of the resource, each concrete implementation of resource managers must implement it.

Parameters:
xmlRepresentation -
Returns:
Throws:
AbstractResourceException

getGCUBEResource

public final org.gcube.common.core.resources.GCUBEResource getGCUBEResource(org.gcube.common.core.scope.GCUBEScope scope)
                                                                     throws AbstractResourceException
From a resource retrieves its GCUBEResource depending on the scope in which it is published.

Parameters:
scope -
Returns:
Throws:
AbstractResourceException

getXMLDescription

protected final String getXMLDescription(org.gcube.common.core.scope.GCUBEScope scope)
                                  throws AbstractResourceException
Returns the XML profile of a resource (given its ID that is encapsulated inside the resource manager).

Parameters:
scope -
Returns:
Throws:
AbstractResourceException

removeFromScope

public final String removeFromScope(org.gcube.common.core.scope.GCUBEScope scope)
                             throws AbstractResourceException
Removes the current resource from the scope.

Parameters:
nestingRemoval - true for resources different from gHN and RI
Throws:
AbstractResourceException

validateScopes

protected List<org.gcube.common.core.scope.GCUBEScope> validateScopes(org.gcube.common.core.scope.GCUBEScope[] scopes)
Adds to scopes the required maps (if needed). Internally used to ensure that the scopes at Infrastructure or VO level have correctly setup the maps.

Parameters:
scopes -
Returns:

forceDelete

public final void forceDelete(org.gcube.common.core.scope.GCUBEScope scope)
                       throws AbstractResourceException
Deprecated. you must be sure before requiring this operation... take care

Parameters:
scope - where the resource is bound
Throws:
AbstractResourceException

delete

public final void delete(org.gcube.common.core.scope.GCUBEScope scope)
                  throws AbstractResourceException
Removes a resource. According to the official wiki the resource is deleted only if is not bound in other scopes. Otherwise this operation simply corresponds to the in deep remove from scope.

Parameters:
scope -
Throws:
ResourceOperationException
AbstractResourceException


Copyright © 2013. All Rights Reserved.