diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-09-09 12:13:21 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-09-09 12:13:21 +0200 |
| commit | da731d2bb81666b9c697d9099da632e7dfcdc0f7 (patch) | |
| tree | 567693c3c48f3d15ecbb2dac4f9db03bb6e58c72 /src/main/java/com/c2kernel/entity/transfer | |
| parent | ae1e79e33fd30e3d8bcedbef8891a14a048276d7 (diff) | |
Replaced int sysKey Item identifier with UUID, which is now portable.
ItemPath objects are now used to identify Items throughout the kernel,
replacing ints and Integers.
Diffstat (limited to 'src/main/java/com/c2kernel/entity/transfer')
| -rw-r--r-- | src/main/java/com/c2kernel/entity/transfer/TransferItem.java | 68 | ||||
| -rw-r--r-- | src/main/java/com/c2kernel/entity/transfer/TransferSet.java | 47 |
2 files changed, 54 insertions, 61 deletions
diff --git a/src/main/java/com/c2kernel/entity/transfer/TransferItem.java b/src/main/java/com/c2kernel/entity/transfer/TransferItem.java index 9852555..bcbbe65 100644 --- a/src/main/java/com/c2kernel/entity/transfer/TransferItem.java +++ b/src/main/java/com/c2kernel/entity/transfer/TransferItem.java @@ -3,11 +3,15 @@ package com.c2kernel.entity.transfer; import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.UUID;
+import com.c2kernel.collection.Collection;
+import com.c2kernel.collection.CollectionArrayList;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.entity.TraceableEntity;
import com.c2kernel.lifecycle.instance.Workflow;
+import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.Path;
@@ -20,33 +24,49 @@ import com.c2kernel.utils.FileStringUtility; import com.c2kernel.utils.Logger;
public class TransferItem {
- public ArrayList<String> domainPaths;
- public int sysKey;
- static int importAgentId;
+ private ArrayList<String> domainPaths;
+ protected ItemPath itemPath;
+ static AgentPath importAgentId;
public TransferItem() throws Exception {
try {
- importAgentId = Gateway.getLookup().getAgentPath("system").getSysKey();
+ importAgentId = Gateway.getLookup().getAgentPath("system");
} catch (ObjectNotFoundException e) {
Logger.error("TransferItem - System user not found!");
throw e;
}
}
- public TransferItem(int sysKey) throws Exception {
- this.sysKey = sysKey;
+ public TransferItem(ItemPath itemPath) throws Exception {
+ this.itemPath = itemPath;
domainPaths = new ArrayList<String>();
- Property name = (Property)Gateway.getStorage().get(sysKey, ClusterStorage.PROPERTY + "/Name", null);
- Iterator<Path> paths = Gateway.getLookup().search(new DomainPath(), name.getValue());
+ Iterator<Path> paths = Gateway.getLookup().searchAliases(itemPath);
while (paths.hasNext()) {
DomainPath thisPath = (DomainPath)paths.next();
domainPaths.add(thisPath.toString());
}
}
-
+
+ public ArrayList<String> getDomainPaths() {
+ return domainPaths;
+ }
+
+ public void setDomainPaths(ArrayList<String> domainPaths) {
+ this.domainPaths = domainPaths;
+ }
+
+ public void setUUID( String uuid )
+ {
+ itemPath = new ItemPath(UUID.fromString(uuid));
+ }
+
+ public String getUUID() {
+ return itemPath.getUUID().toString();
+ }
+
public void exportItem(File dir, String path) throws Exception {
- Logger.msg("Path " + path + " in " + sysKey);
- String[] contents = Gateway.getStorage().getClusterContents(sysKey, path);
+ Logger.msg("Path " + path + " in " + itemPath);
+ String[] contents = Gateway.getStorage().getClusterContents(itemPath, path);
if (contents.length > 0) {
FileStringUtility.createNewDir(dir.getCanonicalPath());
for (String content : contents) {
@@ -54,8 +74,8 @@ public class TransferItem { }
} else { //no children, try to dump object
try {
- C2KLocalObject obj = Gateway.getStorage().get(sysKey, path, null);
- Logger.msg("Dumping object " + path + " in " + sysKey);
+ C2KLocalObject obj = Gateway.getStorage().get(itemPath, path, null);
+ Logger.msg("Dumping object " + path + " in " + itemPath);
File dumpPath = new File(dir.getCanonicalPath() + ".xml");
FileStringUtility.string2File(dumpPath, Gateway.getMarshaller().marshall(obj));
return;
@@ -67,8 +87,8 @@ public class TransferItem { public void importItem(File dir) throws Exception {
// check if already exists
try {
- Property name = (Property)Gateway.getStorage().get(sysKey, ClusterStorage.PROPERTY + "/Name", null);
- throw new Exception("Syskey " + sysKey + " already in use as " + name.getValue());
+ Property name = (Property)Gateway.getStorage().get(itemPath, ClusterStorage.PROPERTY + "/Name", null);
+ throw new Exception("Entity " + itemPath + " already in use as " + name.getValue());
} catch (Exception ex) {
}
@@ -89,38 +109,40 @@ public class TransferItem { }
// create item
- ItemPath entityPath = new ItemPath(sysKey);
- TraceableEntity newItem = (TraceableEntity)Gateway.getCorbaServer().createEntity(entityPath);
- Gateway.getLookupManager().add(entityPath);
+ TraceableEntity newItem = Gateway.getCorbaServer().createItem(itemPath);
+ Gateway.getLookupManager().add(itemPath);
PropertyArrayList props = new PropertyArrayList();
+ CollectionArrayList colls = new CollectionArrayList();
Workflow wf = null;
// put objects
for (C2KLocalObject obj : objects) {
if (obj instanceof Property)
props.list.add((Property)obj);
+ else if (obj instanceof Collection)
+ colls.list.add((Collection<?>)obj);
else if (obj instanceof Workflow)
wf = (Workflow)obj;
}
if (wf == null)
- throw new Exception("No workflow found in import for "+sysKey);
+ throw new Exception("No workflow found in import for "+itemPath);
// init item
- newItem.initialise(importAgentId,
+ newItem.initialise(importAgentId.getSystemKey(),
Gateway.getMarshaller().marshall(props),
Gateway.getMarshaller().marshall(wf.search("workflow/domain")),
null);
// store objects
- importByType(ClusterStorage.COLLECTION, objects);
+ importByType(ClusterStorage.COLLECTION, objects); //TODO: move this to initialise
importByType(ClusterStorage.HISTORY, objects);
importByType(ClusterStorage.OUTCOME, objects);
importByType(ClusterStorage.VIEWPOINT, objects);
Gateway.getStorage().commit(this);
// add domPaths
for (String element : domainPaths) {
- DomainPath newPath = new DomainPath(element, entityPath);
+ DomainPath newPath = new DomainPath(element, itemPath);
Gateway.getLookupManager().add(newPath);
}
}
@@ -128,7 +150,7 @@ public class TransferItem { private void importByType(String type, ArrayList<C2KLocalObject> objects) throws Exception {
for (C2KLocalObject element : objects) {
if (element.getClusterType().equals(type))
- Gateway.getStorage().put(sysKey, element, this);
+ Gateway.getStorage().put(itemPath, element, this);
}
}
diff --git a/src/main/java/com/c2kernel/entity/transfer/TransferSet.java b/src/main/java/com/c2kernel/entity/transfer/TransferSet.java index 7a5833f..adc3d8c 100644 --- a/src/main/java/com/c2kernel/entity/transfer/TransferSet.java +++ b/src/main/java/com/c2kernel/entity/transfer/TransferSet.java @@ -4,7 +4,6 @@ import java.io.File; import java.util.ArrayList;
import com.c2kernel.lookup.ItemPath;
-import com.c2kernel.persistency.NextKeyManager;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.FileStringUtility;
import com.c2kernel.utils.Logger;
@@ -25,13 +24,13 @@ public class TransferSet { public TransferSet() {
}
- public TransferSet(int[] sysKeys) {
+ public TransferSet(ItemPath[] itemPaths) {
items = new ArrayList<TransferItem>();
- for (int sysKey : sysKeys) {
+ for (ItemPath item : itemPaths) {
try {
- items.add(new TransferItem(sysKey));
+ items.add(new TransferItem(item));
} catch (Exception ex) {
- Logger.error("Could not add item "+sysKey);
+ Logger.error("Could not add item "+item);
Logger.error(ex);
}
}
@@ -43,9 +42,9 @@ public class TransferSet { FileStringUtility.createNewDir(dir.getAbsolutePath());
for (TransferItem element : items) {
try {
- element.exportItem(new File(dir, String.valueOf(element.sysKey)), "/");
+ element.exportItem(new File(dir, element.itemPath.getUUID().toString()), "/");
} catch (Exception ex) {
- Logger.error("Error dumping item "+element.sysKey);
+ Logger.error("Error dumping item "+element.itemPath);
Logger.error(ex);
}
}
@@ -61,42 +60,14 @@ public class TransferSet { public void importPackage(File rootDir) {
for (TransferItem element : items) {
- Logger.msg(5, "Importing "+element.sysKey);
+ Logger.msg(5, "Importing "+element.itemPath);
try {
- element.importItem(new File(rootDir, String.valueOf(element.sysKey)));
+ element.importItem(new File(rootDir, element.itemPath.getUUID().toString()));
} catch (Exception ex) {
- Logger.error("Import of item "+element.sysKey+" failed. Rolling back");
+ Logger.error("Import of item "+element.itemPath+" failed. Rolling back");
Logger.error(ex);
Gateway.getStorage().abort(element);
}
}
- checkLastKey();
- }
-
- private void checkLastKey()
- {
- // find highest key in out import set
- int packageLastKey = 0;
- for (TransferItem element : items) {
- if (element.sysKey > packageLastKey)
- packageLastKey = element.sysKey;
- }
-
- try
- { // find the current last key
- NextKeyManager nextKeyMan = Gateway.getNextKeyManager();
- ItemPath lastKey = nextKeyMan.getLastEntityPath();
- Logger.msg(1, "Last key imported was "+packageLastKey+". LDAP lastkey was "+lastKey.getSysKey());
-
-
- if (packageLastKey > lastKey.getSysKey()) { // set new last
- Logger.msg(1, "Updating lastKey to "+packageLastKey);
- nextKeyMan.writeLastEntityKey(packageLastKey);
- }
- }
- catch (Exception ex)
- {
- Logger.error("Exception::LoadKeys::processFile() " + ex);
- }
}
}
|
