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.sal.java.api.generator;
10 import static org.opendaylight.controller.sal.java.api.generator.Constants.*;
12 import java.io.IOException;
13 import java.io.StringWriter;
14 import java.io.Writer;
15 import java.util.LinkedHashMap;
16 import java.util.List;
19 import org.opendaylight.controller.sal.binding.model.api.CodeGenerator;
20 import org.opendaylight.controller.sal.binding.model.api.Constant;
21 import org.opendaylight.controller.sal.binding.model.api.Enumeration;
22 import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
23 import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
24 import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
25 import org.opendaylight.controller.sal.binding.model.api.Type;
27 public class InterfaceGenerator implements CodeGenerator {
29 private Map<String, LinkedHashMap<String, Integer>> imports;
31 public Writer generate(Type type) throws IOException {
32 Writer writer = new StringWriter();
33 if (type instanceof GeneratedType
34 && !(type instanceof GeneratedTransferObject)) {
35 GeneratedType genType = (GeneratedType) type;
36 imports = GeneratorUtil.createImports(genType);
38 final String currentPkg = genType.getPackageName();
39 final List<Constant> constants = genType.getConstantDefinitions();
40 final List<MethodSignature> methods = genType
41 .getMethodDefinitions();
42 final List<Enumeration> enums = genType.getEnumDefintions();
44 writer.write(GeneratorUtil.createPackageDeclaration(genType
48 List<String> importLines = GeneratorUtil.createImportLines(imports);
49 for (String line : importLines) {
50 writer.write(line + NL);
54 writer.write(GeneratorUtil.createIfcDeclaration(genType, "",
58 if (constants != null) {
59 for (Constant c : constants) {
60 writer.write(GeneratorUtil.createConstant(c, TAB, imports,
66 if (methods != null) {
67 for (MethodSignature m : methods) {
68 writer.write(GeneratorUtil.createMethodDeclaration(m, TAB,
69 imports, currentPkg) + NL);
75 for (Enumeration e : enums) {
76 writer.write(GeneratorUtil.createEnum(e, TAB) + NL);