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(); +}