2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl;
10 import com.google.common.base.Optional;
11 import com.google.common.collect.Lists;
12 import java.util.Collections;
13 import java.util.List;
14 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation;
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Constructor;
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Field;
17 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Header;
18 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Method;
19 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.TypeDeclaration;
20 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.FullyQualifiedNameHelper;
22 public abstract class AbstractFtlTemplate implements FtlTemplate {
23 private final String packageName;
24 private final List<Field> fields;
25 private final List<Annotation> annotations;
26 private final List<? extends Method> methods;
27 private String javadoc = null;
28 private final TypeDeclaration typeDeclaration;
29 private final Header header;
31 protected AbstractFtlTemplate(Header header, String packageName,
32 List<Field> fields, List<? extends Method> methods,
33 TypeDeclaration typeDeclaration) {
34 this.packageName = packageName;
36 this.methods = methods;
37 this.annotations = Lists.newArrayList();
38 this.typeDeclaration = typeDeclaration;
43 public Header getHeader() {
48 public Optional<String> getHeaderString() {
50 return Optional.absent();
52 return Optional.of(header.toString());
57 public String getFullyQualifiedName() {
58 return FullyQualifiedNameHelper.getFullyQualifiedName(getPackageName(),
59 getTypeDeclaration().getName());
63 public String getPackageName() {
68 public TypeDeclaration getTypeDeclaration() {
69 return typeDeclaration;
74 public Optional<String> getMaybeJavadoc() {
75 if (javadoc == null) {
76 return Optional.absent();
78 return Optional.of(javadoc);
82 public void setJavadoc(String javadoc) {
83 this.javadoc = javadoc;
87 public List<Annotation> getAnnotations() {
92 public List<Field> getFields() {
97 public List<? extends Method> getMethods() {
103 public List<Constructor> getConstructors() {
104 return Collections.emptyList();
108 public String toString() {
109 return "AbstractFtlTemplate{" + "typeDeclaration=" + typeDeclaration
110 + ", packageName='" + packageName + '\'' + '}';