7f80299f009e04da625adc6cab1d4315eaf8e494
[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 java.io.File;
11 import java.util.List;
12
13 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation;
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 com.google.common.collect.Lists;
21
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;
30
31     protected AbstractFtlTemplate(Header header, String packageName,
32             List<Field> fields, List<? extends Method> methods,
33             TypeDeclaration typeDeclaration) {
34         this.packageName = packageName;
35         this.fields = fields;
36         this.methods = methods;
37         this.annotations = Lists.newArrayList();
38         this.typeDeclaration = typeDeclaration;
39         this.header = header;
40     }
41
42     @Override
43     public Header getHeader() {
44         return header;
45     }
46
47     @Override
48     public String getFullyQualifiedName() {
49         return FullyQualifiedNameHelper.getFullyQualifiedName(getPackageName(),
50                 getTypeDeclaration().getName());
51     }
52
53     @Override
54     public String getPackageName() {
55         return packageName;
56     }
57
58     @Override
59     public TypeDeclaration getTypeDeclaration() {
60         return typeDeclaration;
61     }
62
63     @Override
64     public String getJavadoc() {
65         return javadoc;
66     }
67
68     public void setJavadoc(String javadoc) {
69         this.javadoc = javadoc;
70     }
71
72     @Override
73     public List<Annotation> getAnnotations() {
74         return annotations;
75     }
76
77     @Override
78     public List<Field> getFields() {
79         return fields;
80     }
81
82     @Override
83     public List<? extends Method> getMethods() {
84         return methods;
85     }
86
87     @Override
88     public File getRelativeFile() {
89         return new File(packageName.replace(".", File.separator),
90                 getTypeDeclaration().getName() + ".java");
91     }
92
93     @Override
94     public String getFtlTempleteLocation() {
95         return "abstract_ftl_file.ftl";
96     }
97
98     @Override
99     public String toString() {
100         return "AbstractFtlTemplate{" + "typeDeclaration=" + typeDeclaration
101                 + ", packageName='" + packageName + '\'' + '}';
102     }
103 }