summaryrefslogtreecommitdiffstats
path: root/yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java')
-rw-r--r--yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java125
1 files changed, 125 insertions, 0 deletions
diff --git a/yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java b/yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java
new file mode 100644
index 0000000..0c5848b
--- /dev/null
+++ b/yang-compiler/src/main/java/org/onap/modeling/yangkit/compiler/plugin/yangpackage/SubModuleInfo.java
@@ -0,0 +1,125 @@
+/*
+Copyright 2023 Huawei Technologies
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.onap.modeling.yangkit.compiler.plugin.yangpackage;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+
+public class SubModuleInfo {
+ private final String name;
+ private final String revision;
+ private List<URI> locations = new ArrayList<>();
+
+ /**
+ * constructor.
+ * @param name submodule name
+ * @param revision submodule revision
+ */
+ public SubModuleInfo(String name, String revision) {
+ this.name = name;
+ this.revision = revision;
+ }
+
+ /**
+ * get the submodule name.
+ * @return name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * get the revision of submodule.
+ * @return revision
+ */
+ public String getRevision() {
+ return revision;
+ }
+
+ /**
+ * get locations of submodule.
+ * @return list of location.
+ */
+ public List<URI> getLocations() {
+ return locations;
+ }
+
+ /**
+ * set the locations.
+ * @param locations list of location.
+ */
+ public void setLocations(List<URI> locations) {
+ this.locations = locations;
+ }
+
+ /**
+ * add a location.
+ * @param location location uri
+ */
+ public void addLocation(URI location) {
+ if (locations.contains(location)) {
+ return;
+ }
+ locations.add(location);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof SubModuleInfo)) {
+ return false;
+ }
+ SubModuleInfo that = (SubModuleInfo) obj;
+ return getName().equals(that.getName()) && getRevision().equals(that.getRevision());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getName(), getRevision());
+ }
+
+ /**
+ * serialize submodule to json.
+ * @return json element.
+ */
+ public JsonElement serialize() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("name", this.getName());
+ if (this.getRevision() != null) {
+ jsonObject.addProperty("revision", this.getRevision());
+ }
+
+ if (!this.getLocations().isEmpty()) {
+ JsonArray locations = new JsonArray();
+ for (URI location : this.getLocations()) {
+ locations.add(location.toString());
+ }
+ jsonObject.add("location", locations);
+ }
+ return jsonObject;
+
+ }
+}