Java 17 Upgrade
[policy/models.git] / models-base / src / main / java / org / onap / policy / models / base / PfConceptKey.java
index efcbe39..cda2bbf 100644 (file)
@@ -1,6 +1,7 @@
-/*-
+/*
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Nordix Foundation.
+ *  Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.models.base;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-
-import lombok.Data;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import java.io.Serial;
 import lombok.EqualsAndHashCode;
-
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.ToString;
+import org.onap.policy.common.parameters.annotations.Pattern;
 import org.onap.policy.common.utils.validation.Assertions;
-import org.onap.policy.models.base.PfValidationResult.ValidationResult;
 
 /**
- * An concept key uniquely identifies every first order entity in the system. Every first order concept in the system
+ * A concept key uniquely identifies every first order entity in the system. Every first order concept in the system
  * must have an {@link PfConceptKey} to identify it. Concepts that are wholly contained in another concept are
  * identified using a {@link PfReferenceKey} key.
  *
@@ -41,18 +40,19 @@ import org.onap.policy.models.base.PfValidationResult.ValidationResult;
  * regular expressions respectively.
  */
 @Embeddable
-@Data
+@Getter
 @EqualsAndHashCode(callSuper = false)
-public class PfConceptKey extends PfKey {
+@ToString
+public class PfConceptKey extends PfKeyImpl {
+    @Serial
     private static final long serialVersionUID = 8932717618579392561L;
 
-    private static final String NAME_TOKEN = "name";
-    private static final String VERSION_TOKEN = "version";
-
-    @Column(name = NAME_TOKEN)
+    @Column(name = NAME_TOKEN, length = 120)
+    @Pattern(regexp = NAME_REGEXP)
     private String name;
 
-    @Column(name = VERSION_TOKEN)
+    @Column(name = VERSION_TOKEN, length = 20)
+    @Pattern(regexp = VERSION_REGEXP)
     private String version;
 
     /**
@@ -74,13 +74,11 @@ public class PfConceptKey extends PfKey {
     /**
      * Constructor to create a key with the specified name and version.
      *
-     * @param name the key name
+     * @param name    the key name
      * @param version the key version
      */
     public PfConceptKey(final String name, final String version) {
-        super();
-        this.name = Assertions.validateStringParameter(NAME_TOKEN, name, NAME_REGEXP);
-        this.version = Assertions.validateStringParameter(VERSION_TOKEN, version, VERSION_REGEXP);
+        super(name, version);
     }
 
     /**
@@ -89,19 +87,15 @@ public class PfConceptKey extends PfKey {
      * @param id the key ID in a format that respects the KEY_ID_REGEXP
      */
     public PfConceptKey(final String id) {
-        Assertions.argumentNotNull(id, "id may not be null");
-
-        // Check the incoming ID is valid
-        Assertions.validateStringParameter("id", id, KEY_ID_REGEXP);
+        super(id);
+    }
 
-        // Split on colon, if the id passes the regular expression test above
-        // it'll have just one colon separating the name and version
-        // No need for range checks or size checks on the array
-        final String[] nameVersionArray = id.split(":");
+    public void setName(@NonNull final String name) {
+        this.name = Assertions.validateStringParameter(NAME_TOKEN, name, getNameRegEx());
+    }
 
-        // Return the new key
-        name = Assertions.validateStringParameter(NAME_TOKEN, nameVersionArray[0], NAME_REGEXP);
-        version = Assertions.validateStringParameter(VERSION_TOKEN, nameVersionArray[1], VERSION_REGEXP);
+    public void setVersion(@NonNull final String version) {
+        this.version = Assertions.validateStringParameter(VERSION_TOKEN, version, getVersionRegEx());
     }
 
     /**
@@ -109,124 +103,7 @@ public class PfConceptKey extends PfKey {
      *
      * @return a null concept key
      */
-    public static final PfConceptKey getNullKey() {
+    public static PfConceptKey getNullKey() {
         return new PfConceptKey(PfKey.NULL_KEY_NAME, PfKey.NULL_KEY_VERSION);
     }
-
-    @Override
-    public PfConceptKey getKey() {
-        return this;
-    }
-
-    @Override
-    public List<PfKey> getKeys() {
-        final List<PfKey> keyList = new ArrayList<>();
-        keyList.add(getKey());
-        return keyList;
-    }
-
-    @Override
-    public String getId() {
-        return name + ':' + version;
-    }
-
-    @Override
-    public PfKey.Compatibility getCompatibility(final PfKey otherKey) {
-        if (!(otherKey instanceof PfConceptKey)) {
-            return Compatibility.DIFFERENT;
-        }
-        final PfConceptKey otherConceptKey = (PfConceptKey) otherKey;
-
-        if (this.equals(otherConceptKey)) {
-            return Compatibility.IDENTICAL;
-        }
-        if (!this.getName().equals(otherConceptKey.getName())) {
-            return Compatibility.DIFFERENT;
-        }
-
-        final String[] thisVersionArray = getVersion().split("\\.");
-        final String[] otherVersionArray = otherConceptKey.getVersion().split("\\.");
-
-        // There must always be at least one element in each version
-        if (!thisVersionArray[0].equals(otherVersionArray[0])) {
-            return Compatibility.MAJOR;
-        }
-
-        if (thisVersionArray.length >= 2 && otherVersionArray.length >= 2
-                        && !thisVersionArray[1].equals(otherVersionArray[1])) {
-            return Compatibility.MINOR;
-        }
-
-        return Compatibility.PATCH;
-    }
-
-    @Override
-    public boolean isCompatible(final PfKey otherKey) {
-        if (!(otherKey instanceof PfConceptKey)) {
-            return false;
-        }
-        final PfConceptKey otherConceptKey = (PfConceptKey) otherKey;
-
-        final Compatibility compatibility = this.getCompatibility(otherConceptKey);
-
-        return !(compatibility == Compatibility.DIFFERENT || compatibility == Compatibility.MAJOR);
-    }
-
-    @Override
-    public PfValidationResult validate(final PfValidationResult result) {
-        final String nameValidationErrorMessage = Assertions.getStringParameterValidationMessage(NAME_TOKEN, name,
-                        NAME_REGEXP);
-        if (nameValidationErrorMessage != null) {
-            result.addValidationMessage(new PfValidationMessage(this, this.getClass(), ValidationResult.INVALID,
-                            "name invalid-" + nameValidationErrorMessage));
-        }
-
-        final String versionValidationErrorMessage = Assertions.getStringParameterValidationMessage(VERSION_TOKEN,
-                        version, VERSION_REGEXP);
-        if (versionValidationErrorMessage != null) {
-            result.addValidationMessage(new PfValidationMessage(this, this.getClass(), ValidationResult.INVALID,
-                            "version invalid-" + versionValidationErrorMessage));
-        }
-
-        return result;
-    }
-
-    @Override
-    public void clean() {
-        name = Assertions.validateStringParameter(NAME_TOKEN, name, NAME_REGEXP);
-        version = Assertions.validateStringParameter(VERSION_TOKEN, version, VERSION_REGEXP);
-    }
-
-    @Override
-    public PfConcept copyTo(final PfConcept target) {
-        Assertions.argumentNotNull(target, "target may not be null");
-
-        final PfConcept copyObject = target;
-        Assertions.instanceOf(copyObject, PfConceptKey.class);
-
-        final PfConceptKey copy = ((PfConceptKey) copyObject);
-        copy.setName(name);
-        copy.setVersion(version);
-
-        return copyObject;
-    }
-
-    @Override
-    public int compareTo(final PfConcept otherObj) {
-        Assertions.argumentNotNull(otherObj, "comparison object may not be null");
-
-        if (this == otherObj) {
-            return 0;
-        }
-        if (getClass() != otherObj.getClass()) {
-            return this.hashCode() - otherObj.hashCode();
-        }
-
-        final PfConceptKey other = (PfConceptKey) otherObj;
-
-        if (!name.equals(other.name)) {
-            return name.compareTo(other.name);
-        }
-        return version.compareTo(other.version);
-    }
 }