Fix duplicate dependency warnings
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / ftl / AbstractFtlTemplate.java
1 /*
2  * Copyright (c) 2013 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 package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl;
9
10 import com.google.common.base.Optional;
11 import com.google.common.collect.Lists;
12 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation;
13 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Constructor;
14 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Field;
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Header;
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Method;
17 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.TypeDeclaration;
18 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.FullyQualifiedNameHelper;
19
20 import java.util.Collections;
21 import java.util.List;
22
23 public abstract class AbstractFtlTemplate implements FtlTemplate {
24     private final String packageName;
25     private final List<Field> fields;
26     private final List<Annotation> annotations;
27     private final List<? extends Method> methods;
28     private String javadoc = null;
29     private final TypeDeclaration typeDeclaration;
30     private final Header header;
31
32     protected AbstractFtlTemplate(Header header, String packageName,
33             List<Field> fields, List<? extends Method> methods,
34             TypeDeclaration typeDeclaration) {
35         this.packageName = packageName;
36         this.fields = fields;
37         this.methods = methods;
38         this.annotations = Lists.newArrayList();
39         this.typeDeclaration = typeDeclaration;
40         this.header = header;
41     }
42
43     @Override
44     public Header getHeader() {
45         return header;
46     }
47
48     @Override
49     public Optional<String> getHeaderString() {
50         if (header == null) {
51             return Optional.absent();
52         } else {
53             return Optional.of(header.toString());
54         }
55     }
56
57     @Override
58     public String getFullyQualifiedName() {
59         return FullyQualifiedNameHelper.getFullyQualifiedName(getPackageName(),
60                 getTypeDeclaration().getName());
61     }
62
63     @Override
64     public String getPackageName() {
65         return packageName;
66     }
67
68     @Override
69     public TypeDeclaration getTypeDeclaration() {
70         return typeDeclaration;
71     }
72
73
74     @Override
75     public Optional<String> getMaybeJavadoc() {
76         if (javadoc == null) {
77             return Optional.absent();
78         } else {
79             return Optional.of(javadoc);
80         }
81     }
82
83     public void setJavadoc(String javadoc) {
84         this.javadoc = javadoc;
85     }
86
87     @Override
88     public List<Annotation> getAnnotations() {
89         return annotations;
90     }
91
92     @Override
93     public List<Field> getFields() {
94         return fields;
95     }
96
97     @Override
98     public List<? extends Method> getMethods() {
99         return methods;
100     }
101
102
103     @Override
104     public List<Constructor> getConstructors() {
105         return Collections.emptyList();
106     }
107
108     @Override
109     public String toString() {
110         return "AbstractFtlTemplate{" + "typeDeclaration=" + typeDeclaration
111                 + ", packageName='" + packageName + '\'' + '}';
112     }
113 }