X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmodel%2Fparser%2Fbuilder%2FDeviationBuilder.java;fp=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmodel%2Fparser%2Fbuilder%2FDeviationBuilder.java;h=abc6198811d9ebe0bb7c06f0bdcba30657a70c1a;hb=42210c03b0a4c54706320ba9f55794c0abd4d201;hp=0000000000000000000000000000000000000000;hpb=7576b38152b393793b1c9ec3df0ff86685f95236;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/model/parser/builder/DeviationBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/model/parser/builder/DeviationBuilder.java new file mode 100644 index 0000000000..abc6198811 --- /dev/null +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/model/parser/builder/DeviationBuilder.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.model.parser.builder; + +import org.opendaylight.controller.model.parser.api.Builder; +import org.opendaylight.controller.model.parser.util.YangModelBuilderHelper; +import org.opendaylight.controller.yang.model.api.Deviation; +import org.opendaylight.controller.yang.model.api.MustDefinition; +import org.opendaylight.controller.yang.model.api.SchemaPath; +import org.opendaylight.controller.yang.model.api.Deviation.Deviate; + + +public class DeviationBuilder implements MustAwareBuilder, Builder { + + private final DeviationImpl instance; + private MustDefinitionBuilder mustDefinitionBuilder; + + DeviationBuilder(String targetPathStr) { + SchemaPath targetPath = YangModelBuilderHelper.parsePath(targetPathStr); + instance = new DeviationImpl(targetPath); + } + + @Override + public Deviation build() { + // MUST definition + if(mustDefinitionBuilder != null) { + MustDefinition md = mustDefinitionBuilder.build(); + instance.setMustDefinition(md); + } + return instance; + } + + public void setDeviate(String deviate) { + if(deviate.equals("not-supported")) { + instance.setDeviate(Deviate.NOT_SUPPORTED); + } else if(deviate.equals("add")) { + instance.setDeviate(Deviate.ADD); + } else if(deviate.equals("replace")) { + instance.setDeviate(Deviate.REPLACE); + } else if(deviate.equals("delete")) { + instance.setDeviate(Deviate.DELETE); + } else { + throw new IllegalArgumentException("Unsupported type of 'deviate' statement: "+ deviate); + } + } + + public void setReference(String reference) { + instance.setReference(reference); + } + + @Override + public void setMustDefinitionBuilder(MustDefinitionBuilder mustDefinitionBuilder) { + this.mustDefinitionBuilder = mustDefinitionBuilder; + } + + private static class DeviationImpl implements Deviation { + + private SchemaPath targetPath; + private Deviate deviate; + private String reference; + private MustDefinition mustDefinition; + + private DeviationImpl(SchemaPath targetPath) { + this.targetPath = targetPath; + } + + @Override + public SchemaPath getTargetPath() { + return targetPath; + } + + @Override + public Deviate getDeviate() { + return deviate; + } + private void setDeviate(Deviate deviate) { + this.deviate = deviate; + } + + @Override + public String getReference() { + return reference; + } + private void setReference(String reference) { + this.reference = reference; + } + + @Override + public String toString() { + return DeviationImpl.class.getSimpleName() +"[targetPath="+ targetPath +", deviate="+ deviate +", reference="+ reference +", mustDefinition="+ mustDefinition +"]"; + } + + @Override + public MustDefinition getMustDefinition() { + return mustDefinition; + } + private void setMustDefinition(MustDefinition mustDefinition) { + this.mustDefinition = mustDefinition; + } + + } + +}