summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/persistency/XMLClusterStorage.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/persistency/XMLClusterStorage.java')
-rw-r--r--source/com/c2kernel/persistency/XMLClusterStorage.java154
1 files changed, 0 insertions, 154 deletions
diff --git a/source/com/c2kernel/persistency/XMLClusterStorage.java b/source/com/c2kernel/persistency/XMLClusterStorage.java
deleted file mode 100644
index 5909fac..0000000
--- a/source/com/c2kernel/persistency/XMLClusterStorage.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.c2kernel.persistency;
-import java.io.File;
-import java.util.ArrayList;
-
-import com.c2kernel.entity.C2KLocalObject;
-import com.c2kernel.lookup.EntityPath;
-import com.c2kernel.lookup.InvalidEntityPathException;
-import com.c2kernel.persistency.outcome.Outcome;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.utils.CastorXMLUtility;
-import com.c2kernel.utils.FileStringUtility;
-import com.c2kernel.utils.Logger;
-
-public class XMLClusterStorage extends ClusterStorage {
- String rootDir=null;
-
- public XMLClusterStorage() {
- }
-
- @Override
- public void open() throws ClusterStorageException {
- String rootProp = Gateway.getProperty("XMLStorage.root");
- if (rootProp == null)
- throw new ClusterStorageException("XMLClusterStorage.open() - Root path not given in config file.");
-
- rootDir = new File(rootProp).getAbsolutePath();
-
- if( !FileStringUtility.checkDir( rootDir ) ) {
- Logger.error("XMLClusterStorage.open() - Path " + rootDir + "' does not exist. Attempting to create.");
- boolean success = FileStringUtility.createNewDir(rootDir);
- if (!success) throw new ClusterStorageException("XMLClusterStorage.open() - Could not create dir "+ rootDir +". Cannot continue.");
- }
- }
-
- @Override
- public void close() {
- rootDir = null;
- }
-
- // introspection
- @Override
- public short queryClusterSupport(String clusterType) {
- return ClusterStorage.READWRITE;
- }
-
- @Override
- public String getName() {
- return "XML File Cluster Storage";
- }
-
- @Override
- public String getId() {
- return "XML";
- }
-
- /* object manipulation */
-
- // retrieve object by path
- @Override
- public C2KLocalObject get(Integer sysKey, String path) throws ClusterStorageException {
- try {
- String type = ClusterStorage.getClusterType(path);
- String filePath = getFilePath(sysKey, path)+".xml";
- String objString = FileStringUtility.file2String(filePath);
- if (objString.length() == 0) return null;
-
- if (type.equals("Outcome"))
- return new Outcome(path, objString);
- else
- return (C2KLocalObject)CastorXMLUtility.unmarshall(objString);
-
- } catch (Exception e) {
- Logger.msg(3,"XMLClusterStorage.get() - The path "+path+" from "+sysKey+" does not exist.: "+e.getMessage());
- }
- return null;
- }
-
- // store object by path
- @Override
- public void put(Integer sysKey, C2KLocalObject obj) throws ClusterStorageException {
- try {
- String filePath = getFilePath(sysKey, getPath(obj)+".xml");
- Logger.msg(7, "Writing "+filePath);
- String data = CastorXMLUtility.marshall(obj);
-
- String dir = filePath.substring(0, filePath.lastIndexOf('/'));
- if( !FileStringUtility.checkDir( dir ) ) {
- boolean success = FileStringUtility.createNewDir(dir);
- if (!success) throw new ClusterStorageException("XMLClusterStorage.put() - Could not create dir "+ dir +". Cannot continue.");
- }
- FileStringUtility.string2File(filePath, data);
- } catch (Exception e) {
- Logger.error(e);
- throw new ClusterStorageException("XMLClusterStorage.put() - Could not write "+getPath(obj)+" to "+sysKey);
- }
- }
-
- // delete cluster
- @Override
- public void delete(Integer sysKey, String path) throws ClusterStorageException {
- try {
- String filePath = getFilePath(sysKey, path+".xml");
- boolean success = FileStringUtility.deleteDir(filePath, true, true);
- if (success) return;
- filePath = getFilePath(sysKey, path);
- success = FileStringUtility.deleteDir(filePath, true, true);
- if (success) return;
- } catch(Exception e) { }
- throw new ClusterStorageException("XMLClusterStorage.delete() - Failure deleting path "+path+" in "+sysKey);
- }
-
- /* navigation */
-
- // directory listing
- @Override
- public String[] getClusterContents(Integer sysKey, String path) throws ClusterStorageException {
- String[] result = new String[0];
- try {
- String filePath = getFilePath(sysKey, path);
- ArrayList<String> paths = FileStringUtility.listDir( filePath, true, false );
- if (paths == null) return result; // dir doesn't exist yet
- ArrayList<String> contents = new ArrayList<String>();
- String previous = null;
- for (int i=0; i<paths.size(); i++) {
- String next = paths.get(i);
-
- // trim off the xml from the end if it's there
- if (next.endsWith(".xml")) next = next.substring(0, next.length()-4);
-
- // avoid duplicates (xml and dir)
- if (next.equals(previous)) continue;
- previous = next;
-
- // only keep the last bit of the path
- if (next.indexOf('/') > -1) next = next.substring(next.lastIndexOf('/')+1);
- contents.add(next);
- }
-
- result = contents.toArray(result);
- return result;
- } catch (Exception e) {
- Logger.error(e);
- throw new ClusterStorageException("XMLClusterStorage.getClusterContents() - Could not get contents of "+path+" from "+sysKey+": "+e.getMessage());
- }
- }
-
- protected String getFilePath(Integer sysKey, String path) throws InvalidEntityPathException {
- EntityPath thisEntity = new EntityPath(sysKey.intValue());
- if (path.length() == 0 || path.charAt(0) != '/') path = "/"+path;
- String filePath = rootDir+thisEntity.toString()+path;
- Logger.msg(8, "XMLClusterStorage.getFilePath() - "+filePath);
- return filePath;
- }
-}