BUG-4688: eliminate SimpleDateFormatUtil.DEFAULT_DATE_REV
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / ModuleEffectiveStatementImpl.java
index 390769b3561df5251e74cbe9771b80b1618fd64e..57f4640b1de11dcd159730e12c6c0a82442489d2 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import java.net.URI;
-import java.util.Date;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleImpl;
-import java.util.List;
-import java.util.Set;
+import com.google.common.base.Verify;
+import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.Deviation;
-import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
-import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
-import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ModuleImport;
-import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.yangtools.concepts.Immutable;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
 
-public class ModuleEffectiveStatementImpl extends
-        AbstractEffectiveDocumentedDataNodeContainer<String, ModuleStatement>
-        implements Module, Immutable {
-
+public final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule<ModuleStatement> {
     private final QNameModule qnameModule;
-    private final String name;
-    private String sourcePath;
-    private String prefix;
-    private String yangVersion;
-    private String organization;
-    private String contact;
-    private ImmutableSet<ModuleImport> imports;
-    private ImmutableSet<Module> submodules;
-    private ImmutableSet<FeatureDefinition> features;
-    private ImmutableSet<NotificationDefinition> notifications;
-    private ImmutableSet<AugmentationSchema> augmentations;
-    private ImmutableSet<RpcDefinition> rpcs;
-    private ImmutableSet<Deviation> deviations;
-    private ImmutableList<ExtensionDefinition> extensionNodes;
-    private ImmutableSet<IdentitySchemaNode> identities;
-    private ImmutableList<UnknownSchemaNode> unknownNodes;
-    private String source;
 
     public ModuleEffectiveStatementImpl(
-            StmtContext<String, ModuleStatement, ?> ctx) {
+            final StmtContext<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> ctx) {
         super(ctx);
 
-        name = argument();
-        qnameModule = ctx.getFromNamespace(ModuleNameToModuleQName.class, name);
-        // :TODO init other fields
-
-        initSubstatementCollections();
-
-    }
-
-    private void initSubstatementCollections() {
-        Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
-
-        List<UnknownSchemaNode> unknownNodesInit = new LinkedList<>();
-        Set<AugmentationSchema> augmentationsInit = new HashSet<>();
-
-        for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements) {
-            if (effectiveStatement instanceof UnknownSchemaNode) {
-                UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement;
-                unknownNodesInit.add(unknownNode);
-            }
-            if (effectiveStatement instanceof AugmentationSchema) {
-                AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement;
-                augmentationsInit.add(augmentationSchema);
-            }
-        }
-
-        this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
-        this.augmentations = ImmutableSet.copyOf(augmentationsInit);
-
-        // :TODO other substatement collections ...
-    }
-
-    @Override
-    public String getModuleSourcePath() {
-        return sourcePath;
-    }
-
-    @Override
-    public URI getNamespace() {
-        return qnameModule.getNamespace();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public Date getRevision() {
-        return qnameModule.getRevision();
-    }
-
-    @Override
-    public String getPrefix() {
-        return prefix;
-    }
-
-    @Override
-    public String getYangVersion() {
-        return yangVersion;
-    }
-
-    @Override
-    public String getOrganization() {
-        return organization;
-    }
-
-    @Override
-    public String getContact() {
-        return contact;
-    }
-
-    @Override
-    public Set<ModuleImport> getImports() {
-        return imports;
-    }
-
-    @Override
-    public Set<Module> getSubmodules() {
-        return submodules;
+        qnameModule = Verify.verifyNotNull(ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx));
     }
 
     @Override
-    public Set<FeatureDefinition> getFeatures() {
-        return features;
-    }
-
-    @Override
-    public Set<NotificationDefinition> getNotifications() {
-        return notifications;
-    }
-
-    @Override
-    public Set<AugmentationSchema> getAugmentations() {
-        return augmentations;
-    }
-
-    @Override
-    public Set<RpcDefinition> getRpcs() {
-        return rpcs;
-    }
-
-    @Override
-    public Set<Deviation> getDeviations() {
-        return deviations;
-    }
-
-    @Override
-    public List<ExtensionDefinition> getExtensionSchemaNodes() {
-        return extensionNodes;
-    }
-
-    @Override
-    public Set<IdentitySchemaNode> getIdentities() {
-        return identities;
-    }
-
-    @Override
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-        return unknownNodes;
-    }
-
-    @Override
-    public String getSource() {
-        return source;
+    public QNameModule getQNameModule() {
+        return qnameModule;
     }
 
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((name == null) ? 0 : name.hashCode());
-        result = prime * result
-                + ((yangVersion == null) ? 0 : yangVersion.hashCode());
-        result = prime * result + qnameModule.hashCode();
+        result = prime * result + Objects.hashCode(getName());
+        result = prime * result + Objects.hashCode(getYangVersion());
+        result = prime * result + Objects.hashCode(qnameModule);
         return result;
     }
 
@@ -204,56 +45,20 @@ public class ModuleEffectiveStatementImpl extends
         if (this == obj) {
             return true;
         }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
+        if (!(obj instanceof ModuleEffectiveStatementImpl)) {
             return false;
         }
         ModuleEffectiveStatementImpl other = (ModuleEffectiveStatementImpl) obj;
-        if (name == null) {
-            if (other.name != null) {
-                return false;
-            }
-        } else if (!name.equals(other.name)) {
+        if (!Objects.equals(getName(), other.getName())) {
             return false;
         }
         if (!qnameModule.equals(other.qnameModule)) {
             return false;
         }
-        if (yangVersion == null) {
-            if (other.yangVersion != null) {
-                return false;
-            }
-        } else if (!yangVersion.equals(other.yangVersion)) {
+        if (!Objects.equals(getYangVersion(), other.getYangVersion())) {
             return false;
         }
         return true;
     }
 
-    // private static <T extends SchemaNode> Set<T> toImmutableSortedSet(final
-    // Set<T> original) {
-    // TreeSet<T> sorted = new TreeSet<>(Comparators.SCHEMA_NODE_COMP);
-    // sorted.addAll(original);
-    // return Collections.unmodifiableSet(sorted);
-    // }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder(ModuleImpl.class.getSimpleName());
-        sb.append("[");
-        sb.append("name=").append(name);
-        sb.append(", namespace=").append(getNamespace());
-        sb.append(", revision=").append(getRevision());
-        sb.append(", prefix=").append(prefix);
-        sb.append(", yangVersion=").append(yangVersion);
-        sb.append("]");
-        return sb.toString();
-    }
-
-    @Override
-    public QNameModule getQNameModule() {
-        return qnameModule;
-    }
-
 }