Adjust to yangtools-2.0.0 changes
[mdsal.git] / binding2 / mdsal-binding2-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / javav2 / java / api / generator / renderers / EnumRenderer.java
1 /*
2  * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.mdsal.binding.javav2.java.api.generator.renderers;
10
11 import static org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.asJavadoc;
12 import static org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.encodeAngleBrackets;
13
14 import java.util.LinkedList;
15 import java.util.List;
16 import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
17 import org.opendaylight.mdsal.binding.javav2.java.api.generator.txt.enumTemplate;
18
19 public class EnumRenderer extends BaseRenderer {
20     private final Enumeration enums;
21
22     public EnumRenderer(final Enumeration type) {
23         super(type);
24         enums = type;
25     }
26
27     @Override
28     protected String body() {
29         String importedName = importedName(String.class);
30         return enumTemplate.render(enums, importedName).body();
31     }
32
33     /**
34      * @param enumeration enumeration to write
35      * @return List of enumeration pairs with javadoc
36      */
37     public static String writeEnumeration(final Enumeration enumeration) {
38         final List<CharSequence> strings = new LinkedList<>();
39         if (!enumeration.getValues().isEmpty()) {
40             for (Enumeration.Pair pair : enumeration.getValues()) {
41                 final StringBuilder sb = new StringBuilder();
42                 sb.append(asJavadoc(encodeAngleBrackets(pair.getDescription().orElse(null))));
43                 sb.append("\n");
44                 sb.append(pair.getMappedName());
45                 sb.append('(');
46                 sb.append(pair.getValue());
47                 sb.append(", \"");
48                 sb.append(pair.getName());
49                 sb.append("\")");
50                 strings.add(sb);
51             }
52         }
53         return String.join(",\n", strings).concat(";");
54     }
55 }