A great update on the alto-commons implementation.
[alto.git] / alto-extensions / cli / file-converter / src / main / java / org / opendaylight / alto / ext / cli / fileconverter / RFC2Yang.java
1 package org.opendaylight.alto.ext.cli.fileconverter;
2
3 import org.apache.karaf.shell.console.OsgiCommandSupport;
4
5 import org.apache.felix.gogo.commands.Argument;
6 import org.apache.felix.gogo.commands.Command;
7
8 import org.opendaylight.alto.commons.types.converter.RFC2ModelNetworkMapConverter;
9 import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
10 import org.opendaylight.alto.commons.types.rfc7285.RFC7285NetworkMap;
11 import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
12 import org.opendaylight.alto.commons.types.model150404.ModelNetworkMap;
13
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 @Command(scope = "alto", name = "file-rfc2yang", description = "Convert file from RFC 7285 format to Yang Data format")
18 public class RFC2Yang extends OsgiCommandSupport {
19
20     private static final Logger logger = LoggerFactory.getLogger(RFC2Yang.class);
21
22     @Argument(index = 0, name = "type", description = "The type of the source file", required = true, multiValued = false)
23     String type = null;
24
25     @Argument(index = 1, name = "source", description = "The source file", required = true, multiValued = false)
26     String source = null;
27
28     @Argument(index = 2, name = "target", description = "The target file", required = false, multiValued = false)
29     String target = null;
30
31     protected RFC7285JSONMapper rfcMapper = new RFC7285JSONMapper();
32     protected ModelJSONMapper modelMapper = new ModelJSONMapper();
33     protected FileConverterHelper helper = new FileConverterHelper();
34
35     @Override
36     protected Object doExecute() throws Exception {
37         logger.info("command: alto:rfc2yang {} {} {}",
38                         type, source, target);
39         if (ConvertType.NETWORK_MAP.equals(type)) {
40             String input = helper.load(source);
41             RFC7285NetworkMap rfcMap = rfcMapper.asNetworkMap(input);
42
43             RFC2ModelNetworkMapConverter conv = new RFC2ModelNetworkMapConverter();
44
45             ModelNetworkMap modelMap = conv.convert(rfcMap);
46             String output = modelMapper.asJSON(modelMap);
47             helper.save(target, output);
48         }
49         throw new UnsupportedOperationException("Not implemented yet");
50     }
51 }
52