You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2007/04/12 09:25:38 UTC

svn commit: r527813 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java

Author: jukka
Date: Thu Apr 12 00:25:37 2007
New Revision: 527813

URL: http://svn.apache.org/viewvc?view=rev&rev=527813
Log:
JCR-692: Added an option to customize the path names used by the XML persistence manager.

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java?view=diff&rev=527813&r1=527812&r2=527813
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java Thu Apr 12 00:25:37 2007
@@ -122,26 +122,58 @@
     private BLOBStore blobStore;
 
     /**
+     * Template for the subdirectory path for the files associated with
+     * a single node. The template is processed by replacing each
+     * "<code>x</code>" with the next hex digit in the UUID string.
+     * All other characters in the template are used as-is.
+     */
+    private String nodePathTemplate = "xxxx/xxxx/xxxxxxxxxxxxxxxxxxxxxxxx";
+
+    /**
      * Creates a new <code>XMLPersistenceManager</code> instance.
      */
     public XMLPersistenceManager() {
         initialized = false;
     }
 
+    /**
+     * Returns the node path template.
+     *
+     * @return node path template
+     */
+    public String getNodePathTemplate() {
+        return nodePathTemplate;
+    }
+
+    /**
+     * Sets the node path template.
+     *
+     * @param template node path template
+     */
+    public void setNodePathTemplate(String template) {
+        nodePathTemplate = template;
+    }
+
+    /**
+     * Builds the path of the node folder for the given node identifier
+     * based on the configured node path template.
+     *
+     * @param id node identifier
+     * @return node folder path
+     */
     private String buildNodeFolderPath(NodeId id) {
         StringBuffer sb = new StringBuffer();
         char[] chars = id.getUUID().toString().toCharArray();
         int cnt = 0;
-        for (int i = 0; i < chars.length; i++) {
-            if (chars[i] == '-') {
-                continue;
-            }
-            //if (cnt > 0 && cnt % 4 == 0) {
-            if (cnt == 4 || cnt == 8) {
-                sb.append('/');
+        for (int i = 0; i < nodePathTemplate.length(); i++) {
+            char ch = nodePathTemplate.charAt(i);
+            if (ch == 'x' && cnt < chars.length) {
+                ch = chars[cnt++];
+                if (ch == '-') {
+                    ch = chars[cnt++];
+                }
             }
-            sb.append(chars[i]);
-            cnt++;
+            sb.append(ch);
         }
         return sb.toString();
     }