X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=mapper%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fmapper%2Futil%2FMOMetaDataUtil.java;fp=mapper%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fmapper%2Futil%2FMOMetaDataUtil.java;h=dcebc6355e1ee82a0c1818c78fdad67db0aecd84;hb=aa7991e2bb89e56479a79541a5d9b659ae619cd7;hp=a038468fb4cbc0e9e688e573b29ef279bbcdfcdf;hpb=17d7d2966615671ef113dd32c7ba5ebff47f5e6f;p=oam%2Ftr069-adapter.git diff --git a/mapper/src/main/java/org/commscope/tr069adapter/mapper/util/MOMetaDataUtil.java b/mapper/src/main/java/org/commscope/tr069adapter/mapper/util/MOMetaDataUtil.java index a038468..dcebc63 100644 --- a/mapper/src/main/java/org/commscope/tr069adapter/mapper/util/MOMetaDataUtil.java +++ b/mapper/src/main/java/org/commscope/tr069adapter/mapper/util/MOMetaDataUtil.java @@ -28,14 +28,15 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; - import javax.annotation.PostConstruct; - import org.apache.commons.io.FileUtils; import org.commscope.tr069adapter.acs.common.ParameterDTO; +import org.commscope.tr069adapter.common.deviceversion.DeviceVersionManager; +import org.commscope.tr069adapter.common.deviceversion.ProfileDefinition; import org.commscope.tr069adapter.mapper.MOMetaData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -46,12 +47,16 @@ public class MOMetaDataUtil { private static final String GENERIC_INDEX_REGEX = "\\.\\{[i-l]\\}\\."; private static final String INDEX_REGEX = "\\.[0-9]{1,}\\."; private static final String MO_META_DATA_FILE_LOCATION = "mapper-schema"; - private Map metaDataMap; - private Map metaDataReverseMap; + private Map> metaDataMap; + private Map> metaDataReverseMap; public static final String ORAN_SW_MGMT_URI = "urn:o-ran:software-management:1.0"; + @Autowired + DeviceVersionManager versionManager; + @PostConstruct public void loadMetaData() { + try { LOG.info("Loading mapper schema"); if (metaDataMap != null) @@ -68,26 +73,33 @@ public class MOMetaDataUtil { private void getMetaDataAsMap(String fileLocation) throws IOException { metaDataMap = new HashMap<>(); metaDataReverseMap = new HashMap<>(); - Collection files = FileUtils.listFiles(new File(fileLocation), null, false); - - for (File file : files) { - LOG.info("Loading mapper schema from {}", file.getName()); - List lines = FileUtils.readLines(file, StandardCharsets.UTF_8); - for (String line : lines) { - if (line != null && line.startsWith("#")) { - continue; - } - if (line != null && line.split(",").length >= 3) { - - parseMetaDataLine(line, metaDataMap, metaDataReverseMap); + List profiles = versionManager.getSupportedProfileDefinitions(); + for (ProfileDefinition profileDefinition : profiles) { + Map profileMetaDataMap = new HashMap<>(); + Map profileMetaDataReverseMap = new HashMap<>(); + + Collection files = FileUtils.listFiles( + new File(fileLocation + "/" + profileDefinition.getCsdmMappingPath()), null, false); + for (File file : files) { + LOG.info("Loading mapper schema from {}", file.getName()); + List lines = FileUtils.readLines(file, StandardCharsets.UTF_8); + for (String line : lines) { + if (line != null && line.startsWith("#")) { + continue; + } + if (line != null && line.split(",").length >= 3) { + parseMetaDataLine(line, profileMetaDataMap, profileMetaDataReverseMap); + } } } + metaDataMap.put(profileDefinition.getProfileId(), profileMetaDataMap); + metaDataReverseMap.put(profileDefinition.getProfileId(), profileMetaDataReverseMap); } } - private static void parseMetaDataLine(String line, Map metaDataMap, - Map metaDataReverseMap) { + private static void parseMetaDataLine(String line, Map profileMetaDataMap, + Map profileMetaDataReverseMap) { String[] split = line.split(","); boolean isReadOnly = false; boolean isTabluar = false; @@ -101,12 +113,13 @@ public class MOMetaDataUtil { } else if ("TabularObject".equalsIgnoreCase(split[2])) { isTabObject = true; } - prepareMOMetaData(isReadOnly, isTabluar, split, isTabObject, metaDataMap, metaDataReverseMap); + prepareMOMetaData(isReadOnly, isTabluar, split, isTabObject, profileMetaDataMap, + profileMetaDataReverseMap); } private static void prepareMOMetaData(boolean isReadOnly, boolean isTabluar, String[] split, - boolean isTabObject, Map metaDataMap, - Map metaDataReverseMap) { + boolean isTabObject, Map profileMetaDataMap, + Map profileMetaDataReverseMap) { String dataType = ""; if (split.length > 3) { dataType = split[3]; @@ -120,49 +133,55 @@ public class MOMetaDataUtil { if ((split.length > 4 && split[4] != null) && split[4].trim().length() > 0) { metaTabData.setURI(split[4]); } - metaDataMap.put(logMessage, metaTabData); + profileMetaDataMap.put(logMessage, metaTabData); } MOMetaData metaData = new MOMetaData(split[0], dataType, isReadOnly, isTabluar, isTabObject); if ((split.length > 4 && split[4] != null) && split[4].trim().length() > 0) { metaData.setURI(split[4]); } - metaDataMap.put(split[1], metaData); - metaDataReverseMap.put(split[0], split[1]); + profileMetaDataMap.put(split[1], metaData); + profileMetaDataReverseMap.put(split[0], split[1]); } - public MOMetaData getMetaDataByNetConfName(String moName) { + public MOMetaData getMetaDataByNetConfName(String moName, String swVersion, String hwVersion) { String moNameInGnrForm = moName.replaceAll(INDEX_REGEX, STRING_I); - return metaDataMap.get(moNameInGnrForm); - } - public MOMetaData getMetaDataByTR69Name(String moName) { - String moNameInGnrForm = moName.replaceAll(INDEX_REGEX, STRING_I); - String netconfMoName = metaDataReverseMap.get(moNameInGnrForm); - return metaDataMap.get(netconfMoName); + String profileId = versionManager.getAssociatedProfileId(swVersion, hwVersion); + Map metaData = metaDataMap.get(profileId); + + return metaData.get(moNameInGnrForm); } - public String getNetconfNameByTR69Name(String moName) { + public MOMetaData getMetaDataByTR69Name(String moName, String swVersion, String hwVersion) { String moNameInGnrForm = moName.replaceAll(INDEX_REGEX, STRING_I); - return metaDataReverseMap.get(moNameInGnrForm); + + String profileId = versionManager.getAssociatedProfileId(swVersion, hwVersion); + Map profileReverseMetaData = metaDataReverseMap.get(profileId); + Map profileMetaData = metaDataMap.get(profileId); + + String netconfMoName = profileReverseMetaData.get(moNameInGnrForm); + return profileMetaData.get(netconfMoName); } - public String getNetconfNameByTR69NameWithIndexes(String moName) { + public String getNetconfNameByTR69NameWithIndexes(String moName, String swVersion, + String hwVersion) { String moNameInGnrForm = moName.replaceAll(INDEX_REGEX, STRING_I); - String netConfNMoName = metaDataReverseMap.get(moNameInGnrForm); + String profileId = versionManager.getAssociatedProfileId(swVersion, hwVersion); + Map reverseMetaData = metaDataReverseMap.get(profileId); + String netConfNMoName = reverseMetaData.get(moNameInGnrForm); return netConfNMoName != null ? getNetConfMOByReplacingIndexes(netConfNMoName, moName) : netConfNMoName; } - public Set getAllMONames() { - return metaDataMap.keySet(); - } - - public List getSupportedChildParameters(List parameters) { + public List getSupportedChildParameters(List parameters, + String swVersion, String hwVersion) { List result = new ArrayList<>(); Set allMatchedChilds = new HashSet<>(); + String profileId = versionManager.getAssociatedProfileId(swVersion, hwVersion); + Map profileMetaData = metaDataMap.get(profileId); for (ParameterDTO param : parameters) { String parentMONameInGnrc = param.getParamName().replaceAll(INDEX_REGEX, STRING_I); - MOMetaData moData = metaDataMap.get(parentMONameInGnrc); + MOMetaData moData = profileMetaData.get(parentMONameInGnrc); if (moData != null) { allMatchedChilds.add(new MOMetaData( getTR69MOByReplacingIndexes(param.getParamName(), moData.getMoName()), @@ -199,9 +218,7 @@ public class MOMetaDataUtil { tr69Mo = tr69Mo.replaceFirst(GENERIC_INDEX_REGEX, "." + split[i] + "."); } } - return tr69Mo; - } public static String getNetConfMOByReplacingIndexes(String netconfMo, String tr69Mo) { @@ -212,9 +229,6 @@ public class MOMetaDataUtil { netconfMo = netconfMo.replaceFirst(GENERIC_INDEX_REGEX, "." + split[i] + "."); } } - return netconfMo; - } - }