2  * ============LICENSE_START=======================================================
 
   3  * ONAP : ccsdk features
 
   4  * ================================================================================
 
   5  * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property.
 
   7  * ================================================================================
 
   8  * Licensed under the Apache License, Version 2.0 (the "License");
 
   9  * you may not use this file except in compliance with the License.
 
  10  * You may obtain a copy of the License at
 
  12  *     http://www.apache.org/licenses/LICENSE-2.0
 
  14  * Unless required by applicable law or agreed to in writing, software
 
  15  * distributed under the License is distributed on an "AS IS" BASIS,
 
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  17  * See the License for the specific language governing permissions and
 
  18  * limitations under the License.
 
  19  * ============LICENSE_END=========================================================
 
  22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.entity;
 
  24 import java.util.UUID;
 
  25 import java.util.regex.Matcher;
 
  26 import java.util.regex.Pattern;
 
  27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
 
  28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryEntity;
 
  29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
 
  30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
 
  31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata15mEntity;
 
  32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Pmdata24hEntity;
 
  35  * Database id generator for those classes which need manual id generation by object
 
  36  * implementation for this spec: https://wiki.onap.org/display/DW/SDN-R+Database+for+Instanbul
 
  40 public class DatabaseIdGenerator {
 
  42     private static final Pattern FAULTPATTERN = Pattern.compile(".*\\[layerProtocol=(.*)\\]");
 
  43     private static final String FORMAT_PMDATA_ID = "%s/%s/%s";
 
  44     private static final String FORMAT_FAULTDATA_ID = "%s/%s/%s";
 
  45     private static final String FORMAT_INVENTORYDATA_ID = "%s/%s";
 
  47     private DatabaseIdGenerator(){
 
  51     public static String getMaintenanceId(String nodeId) {
 
  55     public static String getMaintenanceId(MaintenanceEntity object) {
 
  56         return object == null ? null : object.getNodeId();
 
  59     public static String getControllerId() {
 
  60         return UUID.randomUUID().toString();
 
  63     public static String extractUuid(String objectId) {
 
  66         Matcher matcher = FAULTPATTERN.matcher(objectId);
 
  67         if (matcher.matches() && matcher.groupCount() == 1) {
 
  68             uuId = matcher.group(1);
 
  75     public static String getFaultcurrentId(String nodeId, String objectId, String problemName) {
 
  76         String uuId = extractUuid(objectId);
 
  78         return String.format(FORMAT_FAULTDATA_ID, nodeId, uuId, problemName);
 
  81     public static String getFaultcurrentId(FaultcurrentEntity object) {
 
  82         return object == null ? null : getFaultcurrentId(object.getNodeId(), object.getObjectId(), object.getProblem());
 
  85     public static String getNetworkelementConnectionId(String nodeId) {
 
  89     public static String getNetworkelementConnectionId(NetworkElementConnectionEntity object) {
 
  90         return object == null ? null : object.getNodeId();
 
  93     public static String getPmData15mId(String nodeId, String uuidInterface, String timestamp) {
 
  94         return String.format(FORMAT_PMDATA_ID, nodeId, uuidInterface, timestamp);
 
  97     public static String getPmData15mId(Pmdata15mEntity object) {
 
  98         return object == null ? null
 
  99                 : getPmData15mId(object.getNodeName(), object.getUuidInterface(), object.getTimeStamp().getValue());
 
 101     public static String getPmData24hId(String nodeId, String uuidInterface, String timestamp) {
 
 102         return String.format(FORMAT_PMDATA_ID, nodeId, uuidInterface, timestamp);
 
 105     public static String getPmData24hId(Pmdata24hEntity object) {
 
 106         return object == null ? null
 
 107                 : getPmData24hId(object.getNodeName(), object.getUuidInterface(), object.getTimeStamp().getValue());
 
 110     public static String getInventoryId(InventoryEntity object) {
 
 111         return getInventoryId(object.getNodeId(),object.getUuid());
 
 114     private static String getInventoryId(String nodeId, String uuid) {
 
 115         return String.format(FORMAT_INVENTORYDATA_ID, nodeId, uuid);