Merge "BUG 718: changed codec for URI parsing"
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / ftl / directives / HeaderDirective.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.directives;
9
10 import java.io.IOException;
11 import java.io.Writer;
12 import java.util.Date;
13 import java.util.Map;
14
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator;
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Header;
17
18 import com.google.common.base.Preconditions;
19
20 import freemarker.core.Environment;
21 import freemarker.ext.beans.StringModel;
22 import freemarker.template.TemplateDirectiveBody;
23 import freemarker.template.TemplateDirectiveModel;
24 import freemarker.template.TemplateException;
25 import freemarker.template.TemplateModel;
26
27 /**
28  * Add annotations to freemarker template.
29  */
30 public class HeaderDirective implements TemplateDirectiveModel {
31
32     private static final String GENERATOR_CLASS = JMXGenerator.class
33             .getCanonicalName();
34     private static final String OBJECT = "header";
35
36     @Override
37     public void execute(Environment env, Map params, TemplateModel[] loopVars,
38             TemplateDirectiveBody body) throws TemplateException, IOException {
39
40         // FIXME do not allow null header
41         // Preconditions.checkNotNull(object, "Null type declaration");
42         Object object = params.get(OBJECT);
43         Header header = null;
44         if (object != null) {
45             object = ((StringModel) object).getWrappedObject();
46             Preconditions.checkArgument(object instanceof Header,
47                     "Template header should be instance of " + Header.class
48                             + " but was " + object.getClass());
49
50             header = (Header) object;
51         }
52
53         Writer out = env.getOut();
54         StringBuilder build = new StringBuilder();
55         build.append("/**");
56         build.append(System.lineSeparator());
57         build.append("* ");
58         build.append("Generated file");
59         build.append(System.lineSeparator());
60         build.append(System.lineSeparator());
61         build.append("* ");
62         build.append("Generated from: ");
63         build.append(header != null ? header.toString() : "");
64         build.append(System.lineSeparator());
65         build.append("* ");
66         build.append("Generated by: " + GENERATOR_CLASS);
67         build.append(System.lineSeparator());
68         build.append("* ");
69         build.append("Generated at: " + new Date());
70         build.append(System.lineSeparator());
71         build.append("* ");
72         build.append(System.lineSeparator());
73         build.append("* ");
74         build.append("Do not modify this file unless it is present under src/main directory ");
75         build.append(System.lineSeparator());
76         build.append("*/");
77         build.append(System.lineSeparator());
78
79         out.write(build.toString().toCharArray());
80     }
81 }