X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=models-base%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fbase%2FPfKey.java;h=4b7f8cf9554828b71faaa727551cde73d4974ca2;hb=3802ecaa87f8fa35ac1208d16cbea591605a59a6;hp=16e70a2c0d9fd51d1b2ddeda2fd79d93755987d9;hpb=a8d633825a90a9199b7646e67fad559ada63b55a;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..4b7f8cf95 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. + * 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,23 @@ package org.onap.policy.models.base; +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. */ public abstract class PfKey extends PfConcept { 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,18 +52,15 @@ 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. */ @@ -70,7 +70,7 @@ public abstract class PfKey extends PfConcept { /** * Default constructor. */ - public PfKey() { + protected PfKey() { super(); } @@ -79,7 +79,7 @@ public abstract class PfKey extends PfConcept { * * @param copyConcept the concept to copy from */ - public PfKey(final PfKey copyConcept) { + protected PfKey(final PfKey copyConcept) { super(copyConcept); } @@ -92,14 +92,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(); }