org.griphyn.common.catalog.transformation
Class File

java.lang.Object
  extended by org.griphyn.common.catalog.transformation.File
All Implemented Interfaces:
Catalog, TransformationCatalog

public class File
extends Object
implements TransformationCatalog

This is the new file based TC implementation storing the contents of the file in memory. For the old tc file implemenation see OldTC.java

Version:
$Revision: 157 $
Author:
Gaurang Mehta, Karan Vahi

Field Summary
protected  LogManager mLogger
          The LogManager object which is used to log all the messages.
private  PegasusProperties mProps
          The handle to the properties object.
private  String mTCFile
          The path to the file based TC.
private static File mTCFileHandle
          The singleton handler to the contents of the transformation catalog.
private  Map mTreeMap
          The Tree Map which stores the contents of the file.
protected  List mvExecPools
          The List containing the user specified list of pools on which he wants the dag to run.
 
Fields inherited from interface org.griphyn.common.catalog.Catalog
DB_ALL_PREFIX
 
Constructor Summary
private File()
          The private constructor.
private File(InputStream reader)
          The overloaded constructor.
private File(String path)
          The overloaded constructor.
 
Method Summary
 boolean addTCEntry(List entries)
          Add multiple TCEntries to the Catalog.
 boolean addTCEntry(String namespace, String name, String version, String physicalname, TCType type, String resourceid, List pfnprofiles, List lfnprofiles, SysInfo system)
          Add an single entry into the transformation catalog.
 boolean addTCEntry(String namespace, String name, String version, String physicalname, TCType type, String resourceid, List pfnprofiles, List lfnprofiles, SysInfo system, boolean write)
          Add an single entry into the transformation catalog.
 boolean addTCEntry(TransformationCatalogEntry entry)
          Add a single TCEntry to the Catalog.
 boolean addTCEntry(TransformationCatalogEntry entry, boolean write)
          Add a single TCEntry to the Catalog.
 boolean addTCLfnProfile(String namespace, String name, String version, List profiles)
          Add additional profiles to a matching logical transformation.
 boolean addTCPfnProfile(String pfn, TCType type, String resourcename, List profiles)
          Adds additional profiles to a physical transformation.
 void close()
          Explicitely free resources before the garbage collection hits.
private static void columnLength(String[] s, int[] count)
          Computes the maximum column lenght for pretty printing.
 boolean connect(Properties props)
          Establishes a link between the implementation and the thing the implementation is build upon.
 boolean deleteTC()
          Deletes the entire transformation catalog.
 boolean deleteTCbyLogicalName(String namespace, String name, String version, String resourceid, TCType type)
          Delete all entries in the transformation catalog of the logical transformation either at all resource or on a particular resource
 boolean deleteTCbyPhysicalName(String physicalname, String namespace, String name, String version, String resourceid, TCType type)
          Delete all entries in the transformation catalog for pair of logical and physical transformation.
 boolean deleteTCbyResourceId(String resourceid)
          Delete an entire resource from the transformation catalog.
 boolean deleteTCbySysInfo(SysInfo sysinfo)
          Delete entries in the catalog of a particular systeminfo.
 boolean deleteTCbyType(TCType type, String resourceid)
          Delete a paricular type of transformation, additionally either on all resources or on a particular resource.
 boolean deleteTCLfnProfile(String namespace, String name, String version, List profiles)
          Delete a list of profiles or all the profiles associated with a logical transformation.
 boolean deleteTCPfnProfile(String physicalname, TCType type, String resourceid, List profiles)
          Delete a list of profiles or all the profiles associated with a pfn on a resource and of a type.
static TransformationCatalog getInstance()
          Returns an instance of the File TC.
static TransformationCatalog getNonSingletonInstance()
          Returns a non singleton instance to the file transformation catalog.
static TransformationCatalog getNonSingletonInstance(InputStream reader)
          Returns a non singleton instance to the file transformation catalog.
static TransformationCatalog getNonSingletonInstance(String path)
          Returns a non singleton instance to the file transformation catalog.
 List getTC()
          List all the contents of the TC in a column format.
 List getTCEntries(String namespace, String name, String version, List resourceids, TCType type)
          Returns TC entries for a particular logical transformation and/or on a number of resources and/or of a particular type.
 List getTCEntries(String namespace, String name, String version, String resourceid, TCType type)
          Returns TC entries for a particular logical transformation and/or on a particular resource and/or of a particular type.
 List getTCLfnProfiles(String namespace, String name, String version)
          Get the list of Profiles associated with a particular logical transformation.
 List getTCLogicalNames(String resourceid, TCType type)
          Gets the list of LogicalNames available on a particular resource.
 String getTCMode()
          Returns a textual description of the transformation mode.
 List getTCPfnProfiles(String pfn, String resourceid, TCType type)
          Get the list of Profiles associated with a particular physical transformation.
 List getTCPhysicalNames(String namespace, String name, String version, String resourceid, TCType type)
          Get the list of PhysicalNames for a particular transformation on a site/sites for a particular type/types.
 List getTCResourceIds(String namespace, String name, String version, TCType type)
          Get the list of Resource ID's where a particular transformation may reside.
private  void initialize(String path)
          Initializes the various class members.
 boolean isClosed()
          Predicate to check, if the connection with the catalog's implementation is still active.
protected  void logMessage(String msg)
          Logs the message to a logging stream.
private  boolean populateTC()
          Populates the internal copy of the transformation catalog from the file containing the transformation catalog in the 6 column format.
private  boolean populateTC(InputStream reader)
          Populates the internal copy of the transformation catalog from a byte stream (input stream).
private  boolean populateTC(Reader reader)
          Adds multiple entries into the TC.
private  void writeTC()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mTCFileHandle

private static File mTCFileHandle
The singleton handler to the contents of the transformation catalog.


mLogger

protected LogManager mLogger
The LogManager object which is used to log all the messages. It's values are set in the CPlanner (the main toolkit) class.


mvExecPools

protected List mvExecPools
The List containing the user specified list of pools on which he wants the dag to run.


mTreeMap

private Map mTreeMap
The Tree Map which stores the contents of the file. The key is the transformationname.


mTCFile

private String mTCFile
The path to the file based TC.


mProps

private PegasusProperties mProps
The handle to the properties object.

Constructor Detail

File

private File()
The private constructor. Initialises the file handles to tc file.


File

private File(String path)
The overloaded constructor.

Parameters:
path - the path to the file containing the transformation catalog in six column format.

File

private File(InputStream reader)
The overloaded constructor. It populates the in memory structure by reading from the input stream passed.

Parameters:
reader - the InputStrean containing the bytes to be read.
Method Detail

getInstance

public static TransformationCatalog getInstance()
Returns an instance of the File TC.

Returns:
TransformationCatalog

getNonSingletonInstance

public static TransformationCatalog getNonSingletonInstance()
Returns a non singleton instance to the file transformation catalog. The path to the file containing the transformation catalog is automatically picked up from the properties file.

Returns:
TransformatinCatalog

getNonSingletonInstance

public static TransformationCatalog getNonSingletonInstance(String path)
Returns a non singleton instance to the file transformation catalog.

Parameters:
path - the path to the file containing the transformation catalog in ths six column format
Returns:
TransformationCatalog

getNonSingletonInstance

public static TransformationCatalog getNonSingletonInstance(InputStream reader)
Returns a non singleton instance to the file transformation catalog. It populates the in memory structure by reading from the input stream passed.

Parameters:
reader - the InputStrean containing the bytes to be read.
Returns:
TransformationCatalog

initialize

private void initialize(String path)
Initializes the various class members.

Parameters:
path - the path to file containing the transformation catalog. can be null.

getTCMode

public String getTCMode()
Returns a textual description of the transformation mode.

Specified by:
getTCMode in interface TransformationCatalog
Returns:
String containing the description.

getTCEntries

public List getTCEntries(String namespace,
                         String name,
                         String version,
                         List resourceids,
                         TCType type)
                  throws Exception
Returns TC entries for a particular logical transformation and/or on a number of resources and/or of a particular type.

Specified by:
getTCEntries in interface TransformationCatalog
Parameters:
namespace - the namespace of the logical transformation.
name - the name of the logical transformation.
version - the version of the logical transformation.
resourceids - the List resourceid where the transformation is located. If NULL it returns all resources.
type - TCType the type of the transformation to search for. If NULL it returns all types.
Returns:
a list of TransformationCatalogEntry objects containing the corresponding entries from the TC. Returns null if no entry found.
Throws:
Exception
See Also:
TCType, TransformationCatalogEntry

getTCEntries

public List getTCEntries(String namespace,
                         String name,
                         String version,
                         String resourceid,
                         TCType type)
                  throws Exception
Returns TC entries for a particular logical transformation and/or on a particular resource and/or of a particular type.

Specified by:
getTCEntries in interface TransformationCatalog
Parameters:
namespace - the namespace of the logical transformation.
name - the name of the logical transformation.
version - the version of the logical transformation.
resourceid - the resourceid where the transformation is located. If NULL it returns all resources.
type - TCType the type of the transformation to search for. If NULL it returns all types.
Returns:
a list of TransformationCatalogEntry objects containing the corresponding entries from the TC. Returns null if no entry found.
Throws:
Exception
See Also:
TCType, TransformationCatalogEntry

getTCResourceIds

public List getTCResourceIds(String namespace,
                             String name,
                             String version,
                             TCType type)
                      throws Exception
Get the list of Resource ID's where a particular transformation may reside.

Specified by:
getTCResourceIds in interface TransformationCatalog
Parameters:
namespace - String The namespace of the transformation to search for.
name - String The name of the transformation to search for.
version - String The version of the transformation to search for.
type - TCType The type of the transformation to search for.
(Enumerated type includes SOURCE, STATIC-BINARY, DYNAMIC-BINARY, PACMAN, INSTALLED, SCRIPT)
If NULL it returns all types.
Returns:
a list of Resource Id's as strings. Returns NULL if no results found.
Throws:
Exception
See Also:
TCType

getTCPhysicalNames

public List getTCPhysicalNames(String namespace,
                               String name,
                               String version,
                               String resourceid,
                               TCType type)
                        throws Exception
Get the list of PhysicalNames for a particular transformation on a site/sites for a particular type/types.

Specified by:
getTCPhysicalNames in interface TransformationCatalog
Parameters:
namespace - the namespace of the transformation to search for.
name - the name of the transformation to search for.
version - the version of the transformation to search for.
resourceid - the id of the resource on which you want to search.
If NULL then returns entries on all resources
type - the type of the transformation to search for.
(Enumerated type includes source, binary, dynamic-binary, pacman, installed)
If NULL then returns entries of all types.
Returns:
List a list of String Arrays. Each array contains the resourceid, the physical transformation, the type of the tr and the systeminfo. The last entry in the List is a int array containing the column lengths for pretty print. Returns NULL if no results found.
Throws:
Exception
See Also:
TCType, SysInfo

getTCLogicalNames

public List getTCLogicalNames(String resourceid,
                              TCType type)
                       throws Exception
Gets the list of LogicalNames available on a particular resource.

Specified by:
getTCLogicalNames in interface TransformationCatalog
Parameters:
resourceid - the id of the resource on which you want to search
type - the type of the transformation to search for.
(Enumerated type includes source, binary, dynamic-binary, pacman, installed)
If NULL then return logical name for all types.
Returns:
List Returns a list of String Arrays. Each array contains the resourceid, logical transformation in the format namespace::name:version and type. The last entry in the list is an array of integers specifying the column length for pretty print. Returns NULL if no results found.
Throws:
Exception

getTCLfnProfiles

public List getTCLfnProfiles(String namespace,
                             String name,
                             String version)
                      throws Exception
Get the list of Profiles associated with a particular logical transformation.

Specified by:
getTCLfnProfiles in interface TransformationCatalog
Parameters:
namespace - the namespace of the transformation to search for.
name - the name of the transformation to search for.
version - the version of the transformation to search for.
Returns:
List Returns a list of Profile Objects containing profiles assocaited with the transformation. Returns NULL if no profiles found.
Throws:
NotImplementedException - as not implemented as yet.
Exception
See Also:
Profile

getTCPfnProfiles

public List getTCPfnProfiles(String pfn,
                             String resourceid,
                             TCType type)
                      throws Exception
Get the list of Profiles associated with a particular physical transformation.

Specified by:
getTCPfnProfiles in interface TransformationCatalog
Parameters:
pfn - the physical file name to search the transformation by.
resourceid - the id of the resource on which you want to search.
type - the type of the transformation to search for.
(Enumerated type includes source, binary, dynamic-binary, pacman, installed)
Returns:
a list of Profile containing profiles assocaited with the transformation. Returns NULL if no profiless found.
Throws:
Exception
See Also:
Profile

getTC

public List getTC()
           throws Exception
List all the contents of the TC in a column format.

Specified by:
getTC in interface TransformationCatalog
Returns:
a list of String Arrays. Each string array contains the resource, lfn, pfn, type, sysinfo and profiles. The last entry in the list is an array of integers which contain the column lengths for pretty print.
Throws:
Exception

addTCEntry

public boolean addTCEntry(List entries)
                   throws Exception
Add multiple TCEntries to the Catalog. Exception is thrown when error occurs.

Specified by:
addTCEntry in interface TransformationCatalog
Parameters:
entries - list of TransformationCatalogEntry objects as input.
Returns:
boolean Return true if succesful, false if error.
Throws:
Exception
See Also:
TransformationCatalogEntry

addTCEntry

public boolean addTCEntry(TransformationCatalogEntry entry)
                   throws Exception
Add a single TCEntry to the Catalog. Exception is thrown when error occurs.

Specified by:
addTCEntry in interface TransformationCatalog
Parameters:
entry - a single TransformationCatalogEntry object as input.
Returns:
boolean Return true if succesful, false if error.
Throws:
Exception
See Also:
TransformationCatalogEntry

addTCEntry

public boolean addTCEntry(TransformationCatalogEntry entry,
                          boolean write)
                   throws Exception
Add a single TCEntry to the Catalog. Exception is thrown when error occurs. This method is a hack and wont commit the additions to the backend catalog

Specified by:
addTCEntry in interface TransformationCatalog
Parameters:
entry - a single TransformationCatalogEntry object as input.
write - boolean to commit additions to backend catalog.
Returns:
boolean Return true if succesful, false if error.
Throws:
Exception
See Also:
TransformationCatalogEntry

addTCEntry

public boolean addTCEntry(String namespace,
                          String name,
                          String version,
                          String physicalname,
                          TCType type,
                          String resourceid,
                          List pfnprofiles,
                          List lfnprofiles,
                          SysInfo system)
                   throws Exception
Add an single entry into the transformation catalog.

Specified by:
addTCEntry in interface TransformationCatalog
Parameters:
namespace - the namespace of the transformation to be added (Can be null)
name - the name of the transformation to be added.
version - the version of the transformation to be added. (Can be null)
physicalname - the physical name/location of the transformation to be added.
type - the type of the physical transformation.
resourceid - the resource location id where the transformation is located.
lfnprofiles - the List of Profile objects associated with a Logical Transformation. (can be null)
pfnprofiles - the list of Profile objects associated with a Physical Transformation. (can be null)
system - the System information associated with a physical transformation.
Returns:
boolean true if succesfully added, returns false if error and throws exception.
Throws:
Exception
See Also:
TransformationCatalogEntry, SysInfo, Profile

addTCEntry

public boolean addTCEntry(String namespace,
                          String name,
                          String version,
                          String physicalname,
                          TCType type,
                          String resourceid,
                          List pfnprofiles,
                          List lfnprofiles,
                          SysInfo system,
                          boolean write)
                   throws Exception
Add an single entry into the transformation catalog.

Parameters:
namespace - the namespace of the transformation to be added (Can be null)
name - the name of the transformation to be added.
version - the version of the transformation to be added. (Can be null)
physicalname - the physical name/location of the transformation to be added.
type - the type of the physical transformation.
resourceid - the resource location id where the transformation is located.
lfnprofiles - the List of Profile objects associated with a Logical Transformation. (can be null)
pfnprofiles - the list of Profile objects associated with a Physical Transformation. (can be null)
system - the System information associated with a physical transformation.
write - boolean to commit changes to backend catalog
Returns:
boolean true if succesfully added, returns false if error and throws exception.
Throws:
Exception
See Also:
TransformationCatalogEntry, SysInfo, Profile

addTCLfnProfile

public boolean addTCLfnProfile(String namespace,
                               String name,
                               String version,
                               List profiles)
                        throws Exception
Add additional profiles to a matching logical transformation.

Specified by:
addTCLfnProfile in interface TransformationCatalog
Parameters:
namespace - the nsamespace of the transformation to be added. (can be null)
name - the name of the transformation to be added.
version - the version of the transformation to be added.
profiles - list of Profile objects that are to be added to the transformation.
Returns:
boolean
Throws:
Exception - as function not implemented.
See Also:
Profile

addTCPfnProfile

public boolean addTCPfnProfile(String pfn,
                               TCType type,
                               String resourcename,
                               List profiles)
                        throws Exception
Adds additional profiles to a physical transformation.

Specified by:
addTCPfnProfile in interface TransformationCatalog
Parameters:
pfn - the physical name of the transformation
type - the type of transformation that the profile is associated with. If null the profile is associated with all the types.
resourcename - the resource on which the physical transformation exists.
profiles - the List of Profile objects that are to be added to the transformation.
Returns:
boolean
Throws:
Exception - as function not implemented.
See Also:
Profile

deleteTCbyLogicalName

public boolean deleteTCbyLogicalName(String namespace,
                                     String name,
                                     String version,
                                     String resourceid,
                                     TCType type)
                              throws Exception
Delete all entries in the transformation catalog of the logical transformation either at all resource or on a particular resource

Specified by:
deleteTCbyLogicalName in interface TransformationCatalog
Parameters:
namespace - the nsamespace of the transformation to be added. (can be null)
name - the name of the transformation to be added.
version - the version of the transformation to be added.
resourceid - the resource id for which the transformation is to be deleted. If null then transformation on all resource are deleted.
type - the type of the transformation
Returns:
boolean
Throws:
Exception
See Also:
TCType

deleteTCbyPhysicalName

public boolean deleteTCbyPhysicalName(String physicalname,
                                      String namespace,
                                      String name,
                                      String version,
                                      String resourceid,
                                      TCType type)
                               throws Exception
Description copied from interface: TransformationCatalog
Delete all entries in the transformation catalog for pair of logical and physical transformation.

Specified by:
deleteTCbyPhysicalName in interface TransformationCatalog
Parameters:
physicalname - String The physical name of the transformation
namespace - String The namespace assocaited in the logical name of the transformation.
name - String The name of the logical transformation.
version - String The version number of the logical transformation.
resourceid - String The resource on which the transformation is to be deleted. If NULL then it searches all the resource id.
type - TCType The type of transformation. If NULL then it search and deletes entries for all types.
Returns:
boolean Returns true if sucess, false if any error occurs.
Throws:
Exception
See Also:
TCType

deleteTCbyType

public boolean deleteTCbyType(TCType type,
                              String resourceid)
                       throws Exception
Delete a paricular type of transformation, additionally either on all resources or on a particular resource.

Specified by:
deleteTCbyType in interface TransformationCatalog
Parameters:
type - the type of the transformation.
resourceid - the resource on which the transformation exists. If null then that type of transformation is deleted from all the resources.
Returns:
boolean
Throws:
Exception - as function not implemented.
See Also:
TCType

deleteTCbySysInfo

public boolean deleteTCbySysInfo(SysInfo sysinfo)
                          throws Exception
Delete entries in the catalog of a particular systeminfo.

Specified by:
deleteTCbySysInfo in interface TransformationCatalog
Parameters:
sysinfo - SysInfo
Returns:
boolean
Throws:
Exception - as function not implemented.
See Also:
SysInfo

deleteTCbyResourceId

public boolean deleteTCbyResourceId(String resourceid)
                             throws Exception
Delete an entire resource from the transformation catalog.

Specified by:
deleteTCbyResourceId in interface TransformationCatalog
Parameters:
resourceid - String
Returns:
boolean
Throws:
Exception - as function not implemented.

deleteTC

public boolean deleteTC()
                 throws Exception
Deletes the entire transformation catalog. Whoopa.....

Specified by:
deleteTC in interface TransformationCatalog
Returns:
boolean
Throws:
Exception

deleteTCPfnProfile

public boolean deleteTCPfnProfile(String physicalname,
                                  TCType type,
                                  String resourceid,
                                  List profiles)
                           throws Exception
Description copied from interface: TransformationCatalog
Delete a list of profiles or all the profiles associated with a pfn on a resource and of a type.

Specified by:
deleteTCPfnProfile in interface TransformationCatalog
Parameters:
physicalname - String The physical name of the transformation.
type - TCType The type of the transformation.
resourceid - String The resource of the transformation.
profiles - List The list of profiles to be deleted. If NULL then all profiles for that pfn+resource+type are deleted.
Returns:
boolean Returns true if success, false if any error occurs.
Throws:
Exception
See Also:
Profile

deleteTCLfnProfile

public boolean deleteTCLfnProfile(String namespace,
                                  String name,
                                  String version,
                                  List profiles)
                           throws Exception
Description copied from interface: TransformationCatalog
Delete a list of profiles or all the profiles associated with a logical transformation.

Specified by:
deleteTCLfnProfile in interface TransformationCatalog
Parameters:
namespace - String The namespace of the logical transformation.
name - String The name of the logical transformation.
version - String The version of the logical transformation.
profiles - List The List of profiles to be deleted. If NULL then all profiles for the logical transformation are deleted.
Returns:
boolean Returns true if success, false if any error occurs.
Throws:
Exception
See Also:
Profile

connect

public boolean connect(Properties props)
Description copied from interface: Catalog
Establishes a link between the implementation and the thing the implementation is build upon.

FIXME: The cause for failure is lost without exceptions.

Specified by:
connect in interface Catalog
Parameters:
props - contains all necessary data to establish the link.
Returns:
true if connected now, or false to indicate a failure.

isClosed

public boolean isClosed()
Description copied from interface: Catalog
Predicate to check, if the connection with the catalog's implementation is still active. This helps determining, if it makes sense to call close().

Specified by:
isClosed in interface Catalog
Returns:
true, if the implementation is disassociated, false otherwise.
See Also:
Catalog.close()

close

public void close()
Description copied from interface: Catalog
Explicitely free resources before the garbage collection hits.

Specified by:
close in interface Catalog

writeTC

private void writeTC()

columnLength

private static void columnLength(String[] s,
                                 int[] count)
Computes the maximum column lenght for pretty printing.

Parameters:
s - String[]
count - int[]

populateTC

private boolean populateTC(InputStream reader)
Populates the internal copy of the transformation catalog from a byte stream (input stream). Used in webservices, when clients upload their files. It uses the default character encoding.

Parameters:
reader - the InputStrean containing the bytes to be read.
Returns:
boolean

populateTC

private boolean populateTC()
Populates the internal copy of the transformation catalog from the file containing the transformation catalog in the 6 column format.

Returns:
boolean

populateTC

private boolean populateTC(Reader reader)
Adds multiple entries into the TC. Calls the above api multiple times.

Parameters:
reader - the input stream from where to read the contents of the transformation catalog.
Returns:
boolean

logMessage

protected void logMessage(String msg)
Logs the message to a logging stream. Currently does not log to any stream.

Parameters:
msg - the message to be logged.


Copyright © 2007 The University of Southern California. All Rights Reserved.