X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-base%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fbase%2FPfKey.java;h=8ff171ee3bf003c1b884859d42bf758cc24aa017;hb=refs%2Fchanges%2F05%2F136005%2F1;hp=16e70a2c0d9fd51d1b2ddeda2fd79d93755987d9;hpb=f240fda5e8f7e940d6033b204c2dac48a9dc7c4e;p=policy%2Fmodels.git diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfKey.java b/models-base/src/main/java/org/onap/policy/models/base/PfKey.java index 16e70a2c0..8ff171ee3 100644 --- a/models-base/src/main/java/org/onap/policy/models/base/PfKey.java +++ b/models-base/src/main/java/org/onap/policy/models/base/PfKey.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019, 2023 Nordix Foundation. + * Modifications Copyright (C) 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. @@ -20,21 +21,28 @@ package org.onap.policy.models.base; +import java.io.Serial; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import lombok.NonNull; + /** - * The key uniquely identifies every entity in the system. This class is an abstract class to give a - * common parent for all key types in the system. + * The key uniquely identifies every entity in the system. This class is an abstract class to give a common parent for + * all key types in the system. */ +@NoArgsConstructor(access = AccessLevel.PROTECTED) public abstract class PfKey extends PfConcept { + @Serial private static final long serialVersionUID = 6281159885962014041L; /** Regular expression to specify the structure of key names. */ - public static final String NAME_REGEXP = "[A-Za-z0-9\\-_\\.]+"; + public static final String NAME_REGEXP = "^[A-Za-z0-9\\-_\\.]+$"; /** Regular expression to specify the structure of key versions. */ - public static final String VERSION_REGEXP = "[A-Za-z0-9.]+"; + public static final String VERSION_REGEXP = "^(\\d+.){2}\\d+$"; /** Regular expression to specify the structure of key IDs. */ - public static final String KEY_ID_REGEXP = "[A-Za-z0-9\\-_\\.]+:[0-9].[0-9].[0-9]"; + public static final String KEY_ID_REGEXP = "^[A-Za-z0-9\\-_\\.]+:(\\d+.){2}\\d+$"; /** Specifies the value for names in NULL keys. */ public static final String NULL_KEY_NAME = "NULL"; @@ -49,37 +57,27 @@ public abstract class PfKey extends PfConcept { /** The keys have different names. */ DIFFERENT, /** - * The name of the key matches but the Major version number of the keys is different (x in - * x.y.z do not match). + * The name of the key matches but the Major version number of the keys is different (x in x.y.z do not match). */ MAJOR, /** - * The name of the key matches but the Minor version number of the keys is different (y in - * x.y.z do not match). + * The name of the key matches but the Minor version number of the keys is different (y in x.y.z do not match). */ MINOR, /** - * The name of the key matches but the Patch version number of the keys is different (z in - * x.y.z do not match). + * The name of the key matches but the Patch version number of the keys is different (z in x.y.z do not match). */ PATCH, /** The keys match completely. */ IDENTICAL } - /** - * Default constructor. - */ - public PfKey() { - super(); - } - /** * Copy constructor. * * @param copyConcept the concept to copy from */ - public PfKey(final PfKey copyConcept) { + protected PfKey(final PfKey copyConcept) { super(copyConcept); } @@ -92,14 +90,49 @@ public abstract class PfKey extends PfConcept { * @param otherKey the key to check compatibility against * @return the compatibility result of the check */ - public abstract Compatibility getCompatibility(PfKey otherKey); + public abstract Compatibility getCompatibility(@NonNull PfKey otherKey); /** - * Check if two keys are compatible, that is the keys are IDENTICAL or have only MINOR, PATCH - * differences. + * Check if two keys are compatible, that is the keys are IDENTICAL or have only MINOR, PATCH differences. * * @param otherKey the key to check compatibility against * @return true, if the keys are compatible */ - public abstract boolean isCompatible(PfKey otherKey); + public abstract boolean isCompatible(@NonNull PfKey otherKey); + + /** + * Check if this key is a newer version than the other key. + * + * @param otherKey the key to check against + * @return true, if this key is newer than the other key + */ + public abstract boolean isNewerThan(@NonNull PfKey otherKey); + + /** + * Check if a key equals its null key. + * + * @return true, if the key is a null key + */ + public abstract boolean isNullKey(); + + /** + * Get the major version of a key. + * + * @return the major version of a key + */ + public abstract int getMajorVersion(); + + /** + * Get the minor version of a key. + * + * @return the minor version of a key + */ + public abstract int getMinorVersion(); + + /** + * Get the patch version of a key. + * + * @return the patch version of a key + */ + public abstract int getPatchVersion(); }