X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.cms%2Fsrc%2Forg%2Fargeo%2Fapi%2Fcms%2Fdirectory%2FHierarchyUnit.java;fp=org.argeo.api.cms%2Fsrc%2Forg%2Fargeo%2Fapi%2Fcms%2Fdirectory%2FHierarchyUnit.java;h=04593d94e428ef766fa87831fbaa0f3c745aaee7;hb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;hp=0000000000000000000000000000000000000000;hpb=3c1cdc594d954520b14646102b366290bdad58c7;p=lgpl%2Fargeo-commons.git
diff --git a/org.argeo.api.cms/src/org/argeo/api/cms/directory/HierarchyUnit.java b/org.argeo.api.cms/src/org/argeo/api/cms/directory/HierarchyUnit.java
new file mode 100644
index 000000000..04593d94e
--- /dev/null
+++ b/org.argeo.api.cms/src/org/argeo/api/cms/directory/HierarchyUnit.java
@@ -0,0 +1,42 @@
+package org.argeo.api.cms.directory;
+
+import java.util.Dictionary;
+import java.util.Locale;
+
+/** A unit within the high-level organisational structure of a directory. */
+public interface HierarchyUnit {
+ /** Name to use in paths. */
+ String getHierarchyUnitName();
+
+ /** Name to use in UI. */
+ String getHierarchyUnitLabel(Locale locale);
+
+ /**
+ * The parent {@link HierarchyUnit}, or null
if a
+ * {@link Directory}.
+ */
+ HierarchyUnit getParent();
+
+ /** Direct children {@link HierarchyUnit}s. */
+ Iterable getDirectHierarchyUnits(boolean functionalOnly);
+
+ /**
+ * Whether this is an arbitrary named and placed {@link HierarchyUnit}.
+ *
+ * @return true
if functional, false
is technical
+ * (e.g. People, Groups, etc.)
+ */
+ boolean isFunctional();
+
+ /**
+ * The base of this organisational unit within the hierarchy. This would
+ * typically be an LDAP base DN.
+ */
+ String getBase();
+
+ /** The related {@link Directory}. */
+ Directory getDirectory();
+
+ /** Its metadata (typically LDAP attributes). */
+ Dictionary getProperties();
+}