Initial opendaylight infrastructure commit!!
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-generator-impl / src / main / java / org / opendaylight / controller / sal / binding / generator / impl / EnumerationBuilderImpl.java
diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/main/java/org/opendaylight/controller/sal/binding/generator/impl/EnumerationBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/main/java/org/opendaylight/controller/sal/binding/generator/impl/EnumerationBuilderImpl.java
new file mode 100644 (file)
index 0000000..6eadb76
--- /dev/null
@@ -0,0 +1,365 @@
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.controller.sal.binding.generator.impl;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.opendaylight.controller.sal.binding.model.api.Enumeration;\r
+import org.opendaylight.controller.sal.binding.model.api.Type;\r
+import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;\r
+\r
+final class EnumerationBuilderImpl implements EnumBuilder {\r
+    private final String packageName;\r
+    private final String name;\r
+    private final List<Enumeration.Pair> values;\r
+\r
+    public EnumerationBuilderImpl(final String packageName, final String name) {\r
+        super();\r
+        this.packageName = packageName;\r
+        this.name = name;\r
+        values = new ArrayList<Enumeration.Pair>();\r
+    }\r
+\r
+    @Override\r
+    public void addValue(final String name, final Integer value) {\r
+        values.add(new EnumPairImpl(name, value));\r
+    }\r
+\r
+    @Override\r
+    public Enumeration toInstance(final Type definingType) {\r
+        return new EnumerationImpl(definingType, packageName, name, values);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see java.lang.Object#hashCode()\r
+     */\r
+    @Override\r
+    public int hashCode() {\r
+        final int prime = 31;\r
+        int result = 1;\r
+        result = prime * result + ((name == null) ? 0 : name.hashCode());\r
+        result = prime * result\r
+                + ((packageName == null) ? 0 : packageName.hashCode());\r
+        return result;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see java.lang.Object#equals(java.lang.Object)\r
+     */\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj) {\r
+            return true;\r
+        }\r
+        if (obj == null) {\r
+            return false;\r
+        }\r
+        if (getClass() != obj.getClass()) {\r
+            return false;\r
+        }\r
+        EnumerationBuilderImpl other = (EnumerationBuilderImpl) obj;\r
+        if (name == null) {\r
+            if (other.name != null) {\r
+                return false;\r
+            }\r
+        } else if (!name.equals(other.name)) {\r
+            return false;\r
+        }\r
+        if (packageName == null) {\r
+            if (other.packageName != null) {\r
+                return false;\r
+            }\r
+        } else if (!packageName.equals(other.packageName)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see java.lang.Object#toString()\r
+     */\r
+    @Override\r
+    public String toString() {\r
+        StringBuilder builder = new StringBuilder();\r
+        builder.append("EnumerationBuilderImpl [packageName=");\r
+        builder.append(packageName);\r
+        builder.append(", name=");\r
+        builder.append(name);\r
+        builder.append(", values=");\r
+        builder.append(values);\r
+        builder.append("]");\r
+        return builder.toString();\r
+    }\r
+\r
+    private static final class EnumPairImpl implements Enumeration.Pair {\r
+\r
+        private final String name;\r
+        private final Integer value;\r
+\r
+        public EnumPairImpl(String name, Integer value) {\r
+            super();\r
+            this.name = name;\r
+            this.value = value;\r
+        }\r
+\r
+        @Override\r
+        public String getName() {\r
+            return name;\r
+        }\r
+\r
+        @Override\r
+        public Integer getValue() {\r
+            return value;\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#hashCode()\r
+         */\r
+        @Override\r
+        public int hashCode() {\r
+            final int prime = 31;\r
+            int result = 1;\r
+            result = prime * result + ((name == null) ? 0 : name.hashCode());\r
+            result = prime * result + ((value == null) ? 0 : value.hashCode());\r
+            return result;\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#equals(java.lang.Object)\r
+         */\r
+        @Override\r
+        public boolean equals(Object obj) {\r
+            if (this == obj) {\r
+                return true;\r
+            }\r
+            if (obj == null) {\r
+                return false;\r
+            }\r
+            if (getClass() != obj.getClass()) {\r
+                return false;\r
+            }\r
+            EnumPairImpl other = (EnumPairImpl) obj;\r
+            if (name == null) {\r
+                if (other.name != null) {\r
+                    return false;\r
+                }\r
+            } else if (!name.equals(other.name)) {\r
+                return false;\r
+            }\r
+            if (value == null) {\r
+                if (other.value != null) {\r
+                    return false;\r
+                }\r
+            } else if (!value.equals(other.value)) {\r
+                return false;\r
+            }\r
+            return true;\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#toString()\r
+         */\r
+        @Override\r
+        public String toString() {\r
+            StringBuilder builder = new StringBuilder();\r
+            builder.append("EnumPairImpl [name=");\r
+            builder.append(name);\r
+            builder.append(", value=");\r
+            builder.append(value);\r
+            builder.append("]");\r
+            return builder.toString();\r
+        }\r
+    }\r
+\r
+    private static final class EnumerationImpl implements Enumeration {\r
+\r
+        private final Type definingType;\r
+        private final String packageName;\r
+        private final String name;\r
+        private final List<Pair> values;\r
+\r
+        public EnumerationImpl(final Type definingType,\r
+                final String packageName, final String name,\r
+                final List<Pair> values) {\r
+            super();\r
+            this.definingType = definingType;\r
+            this.packageName = packageName;\r
+            this.name = name;\r
+            this.values = Collections.unmodifiableList(values);\r
+        }\r
+\r
+        @Override\r
+        public Type getDefiningType() {\r
+            return definingType;\r
+        }\r
+\r
+        @Override\r
+        public String getPackageName() {\r
+            return packageName;\r
+        }\r
+\r
+        @Override\r
+        public String getName() {\r
+            return name;\r
+        }\r
+\r
+        @Override\r
+        public List<Pair> getValues() {\r
+            return values;\r
+        }\r
+\r
+        @Override\r
+        public String toFormattedString() {\r
+            StringBuilder builder = new StringBuilder();\r
+            builder.append("public enum");\r
+            builder.append(" ");\r
+            builder.append(name);\r
+            builder.append(" {");\r
+            builder.append("\n");\r
+\r
+            int i = 0;\r
+            for (final Enumeration.Pair valPair : values) {\r
+                builder.append("\t");\r
+                builder.append(" ");\r
+                builder.append(valPair.getName());\r
+                builder.append(" (");\r
+                builder.append(valPair.getValue());\r
+\r
+                if (i == (values.size() - 1)) {\r
+                    builder.append(" );");\r
+                } else {\r
+                    builder.append(" ),");\r
+                }\r
+                ++i;\r
+            }\r
+            return builder.toString();\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#hashCode()\r
+         */\r
+        @Override\r
+        public int hashCode() {\r
+            final int prime = 31;\r
+            int result = 1;\r
+            result = prime * result + ((name == null) ? 0 : name.hashCode());\r
+            result = prime * result\r
+                    + ((packageName == null) ? 0 : packageName.hashCode());\r
+            result = prime * result\r
+                    + ((values == null) ? 0 : values.hashCode());\r
+\r
+            if (definingType != null) {\r
+                result = prime\r
+                        * result\r
+                        + ((definingType.getPackageName() == null) ? 0\r
+                                : definingType.getPackageName().hashCode());\r
+                result = prime\r
+                        * result\r
+                        + ((definingType.getName() == null) ? 0 : definingType\r
+                                .getName().hashCode());\r
+            }\r
+\r
+            return result;\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#equals(java.lang.Object)\r
+         */\r
+        @Override\r
+        public boolean equals(Object obj) {\r
+            if (this == obj) {\r
+                return true;\r
+            }\r
+            if (obj == null) {\r
+                return false;\r
+            }\r
+            if (getClass() != obj.getClass()) {\r
+                return false;\r
+            }\r
+            EnumerationImpl other = (EnumerationImpl) obj;\r
+            if (name == null) {\r
+                if (other.name != null) {\r
+                    return false;\r
+                }\r
+            } else if (!name.equals(other.name)) {\r
+                return false;\r
+            }\r
+            if (packageName == null) {\r
+                if (other.packageName != null) {\r
+                    return false;\r
+                }\r
+            } else if (!packageName.equals(other.packageName)) {\r
+                return false;\r
+            }\r
+            if (values == null) {\r
+                if (other.values != null) {\r
+                    return false;\r
+                }\r
+            } else if (!values.equals(other.values)) {\r
+                return false;\r
+            }\r
+            if (definingType == null) {\r
+                if (other.definingType != null) {\r
+                    return false;\r
+                }\r
+            } else if ((definingType != null) && (other.definingType != null)) {\r
+                if (!definingType.getPackageName().equals(\r
+                        other.definingType.getPackageName())\r
+                        && !definingType.getName().equals(\r
+                                other.definingType.getName())) {\r
+                    return false;\r
+                }\r
+            }\r
+            return true;\r
+        }\r
+\r
+        /*\r
+         * (non-Javadoc)\r
+         * \r
+         * @see java.lang.Object#toString()\r
+         */\r
+        @Override\r
+        public String toString() {\r
+            StringBuilder builder = new StringBuilder();\r
+            builder.append("EnumerationImpl [packageName=");\r
+            builder.append(packageName);\r
+            if (definingType != null) {\r
+                builder.append(", definingType=");\r
+                builder.append(definingType.getPackageName());\r
+                builder.append(".");\r
+                builder.append(definingType.getName());\r
+            } else {\r
+                builder.append(", definingType= null");\r
+            }\r
+            builder.append(", name=");\r
+            builder.append(name);\r
+            builder.append(", values=");\r
+            builder.append(values);\r
+            builder.append("]");\r
+            return builder.toString();\r
+        }\r
+    }\r
+}\r