ModifAction enum added NONE operation + additional checks
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / ModifyAction.java
index 1ae847200cf14a21dc47df4b06c99e1546547115..b4eeb763817d829a7974563054230d68d673e8ba 100644 (file)
@@ -7,6 +7,45 @@
  */\r
 package org.opendaylight.yangtools.yang.data.api;\r
 \r
+import java.util.Arrays;\r
+\r
+// TODO rename to ModifyOperation\r
+\r
+/**\r
+ * http://tools.ietf.org/html/rfc6241#section-7.2\r
+ */\r
 public enum ModifyAction {\r
-    MERGE, REPLACE, CREATE, DELETE, REMOVE\r
+    MERGE, REPLACE, CREATE, DELETE, REMOVE, NONE;\r
+\r
+    public static ModifyAction fromXmlValue(String xmlNameOfAction) {\r
+        switch (xmlNameOfAction) {\r
+        case "merge":\r
+            return MERGE;\r
+        case "replace":\r
+            return REPLACE;\r
+        case "remove":\r
+            return REMOVE;\r
+        case "delete":\r
+            return DELETE;\r
+        case "create":\r
+            return CREATE;\r
+        case "none":\r
+            return NONE;\r
+        default:\r
+            throw new IllegalArgumentException("Unknown operation " + xmlNameOfAction + " available operations "\r
+                    + Arrays.toString(ModifyAction.values()));\r
+        }\r
+    }\r
+\r
+    public boolean isAsDefaultPermitted() {\r
+        boolean isPermitted = this == MERGE;\r
+        isPermitted |= this == REPLACE;\r
+        isPermitted |= this == NONE;\r
+        return isPermitted;\r
+    }\r
+\r
+    public boolean isOnElementPermitted() {\r
+        return this != NONE;\r
+    }\r
+\r
 }\r