Bug 1411-2: MDSAL Binding2 Generator API
[mdsal.git] / binding2 / mdsal-binding2-generator-api / src / main / java / org / opendaylight / mdsal / binding2 / model / api / type / builder / EnumBuilder.java
diff --git a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding2/model/api/type/builder/EnumBuilder.java b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding2/model/api/type/builder/EnumBuilder.java
new file mode 100644 (file)
index 0000000..d8212e2
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.mdsal.binding2.model.api.type.builder;
+
+import com.google.common.annotations.Beta;
+import java.util.Enumeration;
+import org.opendaylight.mdsal.binding2.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
+
+/**
+ * Enum Builder is interface that contains methods to build and instantiate
+ * Enumeration definition.
+ *
+ * @see Enumeration
+ */
+@Beta
+public interface EnumBuilder extends Type {
+    /**
+     * The method creates new AnnotationTypeBuilder containing specified package
+     * name an annotation name. <br>
+     * Neither the package name or annotation name can contain <code>null</code>
+     * references. In case that any of parameters contains <code>null</code> the
+     * method SHOULD thrown {@link IllegalArgumentException}
+     *
+     * @param packageName
+     *            Package Name of Annotation Type
+     * @param name
+     *            Name of Annotation Type
+     * @return <code>new</code> instance of Annotation Type Builder.
+     */
+    AnnotationTypeBuilder addAnnotation(final String packageName, final String name);
+
+    /**
+     *
+     * @param name
+     * @param value
+     */
+    void addValue(final String name, final Integer value, final String description);
+
+    /**
+     *
+     * @param definingType
+     * @return
+     */
+    Enumeration toInstance(final Type definingType);
+
+    /**
+     * Updates this builder with data from <code>enumTypeDef</code>.
+     * Specifically this data represents list of value-name pairs.
+     *
+     * @param enumTypeDef
+     *            enum type definition as source of enum data for
+     *            <code>enumBuilder</code>
+     */
+    void updateEnumPairsFromEnumTypeDef(final EnumTypeDefinition enumTypeDef);
+
+    /**
+     * @param description
+     */
+    void setDescription(final String description);
+}