--- /dev/null
+/*\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