*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type;
-import java.util.Collections;
+import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
import java.util.List;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
-import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DescriptionEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ReferenceEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.StatusEffectiveStatementImpl;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.AbstractEffectiveDocumentedNode;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ValueEffectiveStatementImpl;
-public class EnumEffectiveStatementImpl extends EffectiveStatementBase<QName, EnumStatement> implements EnumPair {
- private final QName qName;
- private final SchemaPath path;
- private String description;
- private String reference;
- private Status status;
- private Integer value;
+public class EnumEffectiveStatementImpl extends AbstractEffectiveDocumentedNode<String, EnumStatement> {
+ private final List<UnknownSchemaNode> unknownSchemaNodes;
+ private final String name;
+ private final Integer declaredValue;
- public EnumEffectiveStatementImpl(final StmtContext<QName, EnumStatement, ?> ctx) {
+ public EnumEffectiveStatementImpl(final StmtContext<String, EnumStatement, ?> ctx) {
super(ctx);
- qName = ctx.getStatementArgument();
- path = Utils.getSchemaPath(ctx);
+ name = ctx.rawStatementArgument();
- for (final EffectiveStatement<?,?> effectiveStatement : effectiveSubstatements()) {
- if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) {
- description = ((DescriptionEffectiveStatementImpl) effectiveStatement).argument();
- }
- if (effectiveStatement instanceof ReferenceEffectiveStatementImpl) {
- reference = ((ReferenceEffectiveStatementImpl) effectiveStatement).argument();
- }
- if (effectiveStatement instanceof StatusEffectiveStatementImpl) {
- status = ((StatusEffectiveStatementImpl) effectiveStatement).argument();
- }
+ final List<UnknownSchemaNode> unknownSchemaNodesInit = new ArrayList<>();
+ Integer declaredValueInit = null;
+ for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof ValueEffectiveStatementImpl) {
- value = ((ValueEffectiveStatementImpl) effectiveStatement).argument();
+ declaredValueInit = ((ValueEffectiveStatementImpl) effectiveStatement).argument();
+ }
+ if (effectiveStatement instanceof UnknownSchemaNode) {
+ unknownSchemaNodesInit.add((UnknownSchemaNode) effectiveStatement);
}
}
- }
- @Override
- public String getName() {
- return qName.getLocalName();
+ declaredValue = declaredValueInit;
+ unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodesInit);
}
- @Override
- public Integer getValue() {
- return value;
- }
-
- @Override
- public QName getQName() {
- return qName;
+ public String getName() {
+ return name;
}
- @Override
- public SchemaPath getPath() {
- return path;
+ public Integer getDeclaredValue() {
+ return declaredValue;
}
@Override
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
- return Collections.emptyList();
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public String getReference() {
- return reference;
- }
-
- @Override
- public Status getStatus() {
- return status;
+ return unknownSchemaNodes;
}
}
\ No newline at end of file