Work on ODK servlets based on JCR.
[gpl/argeo-suite.git] / org.argeo.entity.api / src / org / argeo / entity / JcrName.java
diff --git a/org.argeo.entity.api/src/org/argeo/entity/JcrName.java b/org.argeo.entity.api/src/org/argeo/entity/JcrName.java
new file mode 100644 (file)
index 0000000..43057aa
--- /dev/null
@@ -0,0 +1,26 @@
+package org.argeo.entity;
+
+/** Can be applied to {@link Enum}s in order to generate prefixed names. */
+public interface JcrName {
+       String name();
+
+       default String getPrefix() {
+               return null;
+       }
+
+       default String getNamespace() {
+               return null;
+       }
+
+       default String get() {
+               String prefix = getPrefix();
+               return prefix != null ? prefix + ":" + name() : name();
+       }
+
+       default String withNamespace() {
+               String namespace = getNamespace();
+               if (namespace == null)
+                       throw new UnsupportedOperationException("No namespace is specified for " + getClass());
+               return "{" + namespace + "}" + name();
+       }
+}