Minor clean-up: rm .checkstyle (these files are on .gitignore)
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / java / GeneratedObjectBuilder.java
1 /*
2  * Copyright (c) 2013, 2015 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.controller.config.yangjmxgenerator.plugin.java;
10
11 import static org.opendaylight.controller.config.yangjmxgenerator.plugin.util.StringUtil.prefixAndJoin;
12
13 import com.google.common.base.Optional;
14 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.StringUtil;
15
16 public class GeneratedObjectBuilder {
17     private final JavaFileInput input;
18
19     public GeneratedObjectBuilder(JavaFileInput input) {
20         this.input = input;
21     }
22
23
24     public GeneratedObject toGeneratedObject() {
25         FullyQualifiedName fqn = input.getFQN();
26         StringBuilder content = new StringBuilder();
27
28
29         content.append(maybeAddComment(input.getCopyright()));
30         content.append(maybeAddComment(input.getHeader()));
31
32         if (!input.getFQN().getPackageName().isEmpty()) {
33             content.append("package ");
34             content.append(input.getFQN().getPackageName());
35             content.append(";\n");
36         }
37         content.append(maybeAddComment(input.getClassJavaDoc(), true));
38
39         for (String classAnnotation : input.getClassAnnotations()) {
40             content.append(classAnnotation);
41             content.append("\n");
42         }
43
44         content.append("public ");
45         content.append(input.getType());
46         content.append(" ");
47         content.append(input.getFQN().getTypeName());
48         content.append(prefixAndJoin(input.getExtends(), "extends"));
49         content.append(prefixAndJoin(input.getImplements(), "implements"));
50         content.append(" {\n");
51
52         for (String method : input.getBodyElements()) {
53             content.append(method);
54             content.append("\n");
55         }
56
57         content.append("\n}\n");
58
59         return new GeneratedObject(fqn, content.toString());
60     }
61
62     private static String maybeAddComment(Optional<String> comment) {
63         return maybeAddComment(comment, false);
64     }
65
66     private static String maybeAddComment(Optional<String> comment, boolean isJavadoc) {
67
68         if (comment.isPresent()) {
69             String input = comment.get();
70             return StringUtil.writeComment(input, isJavadoc);
71         } else {
72             return "";
73         }
74     }
75
76 }