]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
Introduce structure
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / core / structure / tree / TreeSPath.java
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
new file mode 100644 (file)
index 0000000..94d22b5
--- /dev/null
@@ -0,0 +1,68 @@
+package org.argeo.slc.core.structure.tree;\r
+\r
+import java.util.StringTokenizer;\r
+\r
+import org.argeo.slc.core.structure.StructurePath;\r
+\r
+public class TreeSPath implements StructurePath {\r
+       public static Character DEFAULT_SEPARATOR = '#';\r
+\r
+       private TreeSPath parent;\r
+       private String name;\r
+       private Character separator = DEFAULT_SEPARATOR;\r
+\r
+       public String getAsUniqueString() {\r
+               String parentStr = parent != null ? parent.getAsUniqueString() : "";\r
+               return parentStr + separator + name;\r
+       }\r
+\r
+       public Character getSeparator() {\r
+               return separator;\r
+       }\r
+\r
+       public TreeSPath getParent() {\r
+               return parent;\r
+       }\r
+\r
+       public String getName() {\r
+               return name;\r
+       }\r
+\r
+       public static TreeSPath createChild(TreeSPath parent, String name) {\r
+               TreeSPath path = new TreeSPath();\r
+               path.parent = parent;\r
+               path.name = name;\r
+               return path;\r
+       }\r
+\r
+       public static TreeSPath createTreeSPath(String path, Character separator) {\r
+               StringTokenizer st = new StringTokenizer(path, Character\r
+                               .toString(separator));\r
+\r
+               TreeSPath currPath = null;\r
+               while (st.hasMoreTokens()) {\r
+                       if (currPath == null) {// begin\r
+                               currPath = createChild(null, st.nextToken());\r
+                       } else {\r
+                               currPath = createChild(currPath, st.nextToken());\r
+                       }\r
+               }\r
+               return currPath;\r
+       }\r
+       \r
+       @Override\r
+       public String toString(){\r
+               return getAsUniqueString();\r
+       }\r
+\r
+       @Override\r
+       public boolean equals(Object obj) {\r
+               if (obj instanceof StructurePath) {\r
+                       StructurePath path = (StructurePath) obj;\r
+                       return getAsUniqueString().equals(path.getAsUniqueString());\r
+               }\r
+               return false;\r
+       }\r
+       \r
+       \r
+}\r