Merge "BUG-509: add missing copyright headers"
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / gofactory / GenericGeneratedObjectFactory.groovy
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
9 package org.opendaylight.controller.config.yangjmxgenerator.plugin.gofactory
10
11 import com.google.common.base.Optional
12 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.FtlTemplate
13 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName
14 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.GeneratedObject
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.GeneratedObjectBuilder
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.JavaFileInputBuilder
17
18 public class GenericGeneratedObjectFactory {
19
20     public GeneratedObject toGeneratedObject(FtlTemplate template, Optional<String> copyright) {
21         JavaFileInputBuilder b = new JavaFileInputBuilder();
22         b.setHeader(template.headerString)
23         b.setFqn(new FullyQualifiedName(template.packageName, template.typeDeclaration.name))
24         b.setClassJavaDoc(template.maybeJavadoc)
25         template.annotations.each { b.addClassAnnotation(it) }
26         // type declaration
27         template.typeDeclaration.extended.each { b.addExtendsFQN(FullyQualifiedName.fromString(it)) }
28         template.typeDeclaration.implemented.each { b.addImplementsFQN(FullyQualifiedName.fromString(it)) }
29         b.setCopyright(copyright);
30         b.setTypeName(template.typeDeclaration.toTypeName())
31         // fields
32         template.fields.each { b.addToBody(it.toString()) }
33         // constructors
34         template.constructors.each { b.addToBody(it.toString()) }
35         // methods
36         template.methods.each { b.addToBody(it.toString()) }
37
38         return new GeneratedObjectBuilder(b.build()).toGeneratedObject();
39     }
40 }