From e54464bf087e5fc6d0af6ecf006600b5f991611a Mon Sep 17 00:00:00 2001 From: Britt Park Date: Thu, 30 Nov 2006 05:07:54 +0000 Subject: [PATCH] First three AVM CLTs. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4467 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/avm-clt-context.xml | 29 +++++++ .../org/alfresco/repo/avm/clt/AVMCltBase.java | 44 +++++------ .../java/org/alfresco/repo/avm/clt/AVMLs.java | 77 +++++++++++++++++++ .../alfresco/repo/avm/clt/AVMLsStores.java | 39 ++++++++++ .../org/alfresco/repo/avm/clt/AVMMkStore.java | 36 +++++++++ 5 files changed, 200 insertions(+), 25 deletions(-) create mode 100644 config/alfresco/avm-clt-context.xml create mode 100644 source/java/org/alfresco/repo/avm/clt/AVMLs.java create mode 100644 source/java/org/alfresco/repo/avm/clt/AVMLsStores.java create mode 100644 source/java/org/alfresco/repo/avm/clt/AVMMkStore.java diff --git a/config/alfresco/avm-clt-context.xml b/config/alfresco/avm-clt-context.xml new file mode 100644 index 0000000000..130b1bf2b9 --- /dev/null +++ b/config/alfresco/avm-clt-context.xml @@ -0,0 +1,29 @@ + + + + + + + + rmi://localhost:1313/avm + + + org.alfresco.repo.avm.AVMRemote + + + true + + + + + + rmi://localhost:1313/avmsync + + + org.alfresco.service.cmr.avmsync.AVMSyncService + + + true + + + diff --git a/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java b/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java index f9254bbd24..37201c9686 100644 --- a/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java +++ b/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java @@ -10,7 +10,6 @@ import java.util.Map; import org.alfresco.repo.avm.AVMRemote; import org.alfresco.service.cmr.avmsync.AVMSyncService; -import org.alfresco.util.Pair; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -43,7 +42,7 @@ public abstract class AVMCltBase */ protected AVMCltBase() { - fContext = new ClassPathXmlApplicationContext("avm-clt-context.xml"); + fContext = new ClassPathXmlApplicationContext("alfresco/avm-clt-context.xml"); fAVMRemote = (AVMRemote)fContext.getBean("avmRemote"); fAVMSyncService = (AVMSyncService)fContext.getBean("avmSyncService"); } @@ -76,32 +75,27 @@ public abstract class AVMCltBase int pos = 0; while (pos < args.length) { - // If the argument begins with "-" then this could be a - // flag. - if (args[pos].startsWith("-")) + // If the argument is one of the accepted flags then it's + // a flag. + if (flagArgs.containsKey(args[pos])) { - // If the argument is one of the accepted flags then it's - // a flag. - if (flagArgs.containsKey(args[pos])) + String flag = args[pos]; + pos++; + int count = flagArgs.get(flag); + // Check for too few arguments + if (args.length - pos < count) { - String flag = args[pos]; - pos++; - int count = flagArgs.get(flag); - // Check for too few arguments - if (args.length - pos < count) - { - usage(usageMessage); - } - // Stuff the parsed flag away. - List flArgs = new ArrayList(); - for (int i = 0; i < count; i++) - { - flArgs.add(args[pos + i]); - } - flagValues.put(flag, flArgs); - pos += count; - continue; + usage(usageMessage); } + // Stuff the parsed flag away. + List flArgs = new ArrayList(); + for (int i = 0; i < count; i++) + { + flArgs.add(args[pos + i]); + } + flagValues.put(flag, flArgs); + pos += count; + continue; } // Otherwise its just a plain old arg. actualArgs.add(args[pos]); diff --git a/source/java/org/alfresco/repo/avm/clt/AVMLs.java b/source/java/org/alfresco/repo/avm/clt/AVMLs.java new file mode 100644 index 0000000000..35f4ae4c4a --- /dev/null +++ b/source/java/org/alfresco/repo/avm/clt/AVMLs.java @@ -0,0 +1,77 @@ +/** + * + */ +package org.alfresco.repo.avm.clt; + +import java.util.List; +import java.util.Map; + +import org.alfresco.service.cmr.avm.AVMNodeDescriptor; + +/** + * Get a listing of a node. + * @author britt + */ +public class AVMLs extends AVMCltBase +{ + private static Object [] flagDefs = { "-R", 0 }; + + private static String USAGE = "usage: AVMLs [-R] nodepath"; + + /* (non-Javadoc) + * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List) + */ + @Override + protected void run(Map> flags, List args) + { + String[] pathVersion = args.get(0).split("@"); + AVMNodeDescriptor desc = fAVMRemote.lookup(Integer.parseInt(pathVersion[1]), + pathVersion[0]); + if (flags.containsKey("-R")) + { + recursiveList(desc, 0); + } + else + { + list(desc); + } + } + + private void list(AVMNodeDescriptor desc) + { + if (desc.isFile()) + { + System.out.println(desc.getName() + '\t' + desc); + return; + } + Map listing = fAVMRemote.getDirectoryListing(desc); + for (Map.Entry entry : listing.entrySet()) + { + System.out.println(entry.getKey() + '\t' + entry.getValue()); + } + } + + private void recursiveList(AVMNodeDescriptor desc, int indent) + { + for (int i = 0; i < indent; i++) + { + System.out.print(' '); + } + System.out.println(desc.getName() + '\t' + desc); + if (desc.isDirectory()) + { + indent += 2; + Map listing = fAVMRemote.getDirectoryListing(desc); + for (Map.Entry entry : listing.entrySet()) + { + recursiveList(entry.getValue(), indent); + } + } + } + + public static void main(String[] args) + { + AVMLs me = new AVMLs(); + me.exec(args, flagDefs, 1, USAGE); + } +} diff --git a/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java b/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java new file mode 100644 index 0000000000..cd3b9a7d6d --- /dev/null +++ b/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java @@ -0,0 +1,39 @@ +/** + * + */ +package org.alfresco.repo.avm.clt; + +import java.util.List; +import java.util.Map; + +import org.alfresco.service.cmr.avm.AVMStoreDescriptor; + +/** + * List all avm stores in the repository. + * @author britt + */ +public class AVMLsStores extends AVMCltBase +{ + private static Object[] flagDefs = { }; + + private static String USAGE = "usage: AVMLsStores"; + + /* (non-Javadoc) + * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List) + */ + @Override + protected void run(Map> flags, List args) + { + List stores = fAVMRemote.getAVMStores(); + for (AVMStoreDescriptor store : stores) + { + System.out.println(store); + } + } + + public static void main(String[] args) + { + AVMLsStores me = new AVMLsStores(); + me.exec(args, flagDefs, 0, USAGE); + } +} diff --git a/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java b/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java new file mode 100644 index 0000000000..1314911b3e --- /dev/null +++ b/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java @@ -0,0 +1,36 @@ +/** + * + */ +package org.alfresco.repo.avm.clt; + +import java.util.List; +import java.util.Map; + +/** + * Create an AVM store. + * @author britt + */ +public class AVMMkStore extends AVMCltBase +{ + private static Object [] flagDefs = { }; + + private static String USAGE = "usage: AVMMkStore storename"; + + /* (non-Javadoc) + * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List) + */ + @Override + protected void run(Map> flags, List args) + { + fAVMRemote.createAVMStore(args.get(0)); + } + + /** + * @param args + */ + public static void main(String[] args) + { + AVMMkStore me = new AVMMkStore(); + me.exec(args, flagDefs, 1, USAGE); + } +}