aboutsummaryrefslogtreecommitdiffstats
path: root/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
diff options
context:
space:
mode:
Diffstat (limited to 'ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java')
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java1164
1 files changed, 594 insertions, 570 deletions
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
index d7e4b5d..7e2172b 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
@@ -32,9 +32,6 @@ import java.util.stream.Collectors;
import org.apache.log4j.Logger;
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
import org.onap.ransim.rest.api.models.GNBCUCPFunction;
import org.onap.ransim.rest.api.models.GNBCUUPFunction;
import org.onap.ransim.rest.api.models.GNBDUFunction;
@@ -63,574 +60,601 @@ import org.onap.ransim.rest.web.mapper.NRCellDUModel;
import org.onap.ransim.rest.web.mapper.NearRTRICModel;
import org.onap.ransim.rest.web.mapper.RANSliceInfoModel;
import org.onap.ransim.rest.web.mapper.RRMPolicyRatioModel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
@Service
public class RANSliceConfigService {
- private static Logger logger = Logger.getLogger(RANSliceConfigService.class.getName());
- @Autowired
- private NRCellCURepository nRCellCURepository;
-
- @Autowired
- private GNBCUCPRepository gNBCUCPRepository;
-
- @Autowired
- private GNBCUUPRepository gNBCUUPRepository;
-
- @Autowired
- private GNBDURepository gNBDURepository;
-
- @Autowired
- private NearRTRICRepository nearRTRICRepository;
-
- @Autowired
- private RRMPolicyRepository rRMPolicyRepository;
-
- @Autowired
- private RANInventoryRepository ranInventoryRepo;
-
- @Autowired
- private TACellRepository tACellRepository;
-
- private ModelMapper modelMapper = new ModelMapper();
-
- /**
- * To store/update the NRCEllCU details
- *
- * @param nRCellCUModel
- * @return NRCellCUModel
- */
- public NRCellCUModel saveNRcellCU(NRCellCUModel nRCellCUModel) {
- logger.debug("Request received to save NRcellCU: id::"+ nRCellCUModel.getCellLocalId());
- NRCellCU cellCUEntity = new NRCellCU();
- modelMapper.map(nRCellCUModel, cellCUEntity);
- if(!cellCUEntity.getpLMNInfoList().isEmpty()) {
- for(PLMNInfo plmn:cellCUEntity.getpLMNInfoList()) {
- //plmn.setnRCellCU(cellCUEntity);
- }
- }
- NRCellCU cellCUEntityResponse = nRCellCURepository.save(cellCUEntity);
- modelMapper.map(cellCUEntityResponse,nRCellCUModel);
- return nRCellCUModel;
- }
-
- /**
- * To fetch the NRCellCU details
- *
- * @param cellLocalId
- * @return NRCellCUModel
- */
- public NRCellCUModel fetchNRCellCUDetails(Integer cellLocalId) {
- logger.debug("Request received to fetchNRCellCUDetails: id::"+ cellLocalId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- NRCellCU cellCUEntity = nRCellCURepository.findById(cellLocalId).isPresent()?nRCellCURepository.findById(cellLocalId).get():null;
- NRCellCUModel nRCellCUModel = new NRCellCUModel();
- modelMapper.map(cellCUEntity,nRCellCUModel);
- return nRCellCUModel;
- }
-
- /**
- * To store the slice / config details of GNBCUCPFunction
- * @param gNBCUCPModel
- * @return
- */
- public GNBCUCPModel saveGNBCUCP(GNBCUCPModel gNBCUCPModel) {
- logger.debug("Request received to save GNBCUCPModel: id::"+ gNBCUCPModel.getgNBCUName());
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBCUCPFunction gNBCUCPFunction=new GNBCUCPFunction(); NearRTRIC nearRTRICRef = new NearRTRIC();
- try {
- modelMapper.map(gNBCUCPModel, gNBCUCPFunction);
- if(gNBCUCPModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).isPresent()) {
- gNBCUCPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).get());
- }
- if(gNBCUCPFunction!=null && !gNBCUCPFunction.getCellCUList().isEmpty()) {
- gNBCUCPFunction.getCellCUList().forEach(cellCU->{
- cellCU.setgNBCUCPFunction(gNBCUCPFunction);
- });
- }
- GNBCUCPFunction gNBCUCPEntity = gNBCUCPRepository.save(gNBCUCPFunction);
- modelMapper.map(gNBCUCPEntity,gNBCUCPModel);
- }catch(Exception e) {
- logger.debug("Error occured during saveGNBCUCP"+e.getMessage());
- return null;
- }
- return gNBCUCPModel;
- }
-
- /**
- * To fetch the gNBCUCP details
- *
- * @param cucpName
- * @return GNBCUCPModel
- */
- public GNBCUCPModel fetchGNBCUCPData(String cucpName) {
- logger.debug("Request received to fetch GNBCUCPFunction: name::"+ cucpName);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBCUCPFunction gNBCUCPEntity = gNBCUCPRepository.findById(cucpName).isPresent()?gNBCUCPRepository.findById(cucpName).get():null;
- GNBCUCPModel gNBCUCPModel = new GNBCUCPModel();
- modelMapper.map(gNBCUCPEntity,gNBCUCPModel);
- return gNBCUCPModel;
- }
-
- /**
- * To store the slice / config details of GNBCUCPFunction
- * @param gNBCUCPModel
- * @return
- */
- public GNBCUUPModel saveGNBCUUP(GNBCUUPModel gNBCUUPModel) {
- logger.debug("Request received to save GNBCUUPModel: id::"+ gNBCUUPModel.getgNBCUUPId());
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBCUUPFunction gNBCUUPFunction=new GNBCUUPFunction();
- modelMapper.map(gNBCUUPModel, gNBCUUPFunction);
- if(gNBCUUPModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).isPresent()) {
- gNBCUUPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).get());
- }
- if(gNBCUUPFunction!=null && !gNBCUUPFunction.getpLMNInfoList().isEmpty()) {
- gNBCUUPFunction.getpLMNInfoList().forEach(plmn->{
- //plmn.setgNBCUUPFunction(gNBCUUPFunction);
- });
- }
- GNBCUUPFunction gNBCUUPEntity = gNBCUUPRepository.save(gNBCUUPFunction);
- modelMapper.map(gNBCUUPEntity,gNBCUUPModel);
- return gNBCUUPModel;
- }
-
- /**
- * To fetch the gNBCUUP details
- *
- * @param cucpName
- * @return GNBCUUPModel
- */
- public GNBCUUPModel fetchGNBCUUPData(Integer gNBCUUPId) {
- logger.debug("Request received to fetch GNBCUUPFunction: id::"+ gNBCUUPId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBCUUPFunction gNBCUUPEntity = gNBCUUPRepository.findById(gNBCUUPId).isPresent()?gNBCUUPRepository.findById(gNBCUUPId).get():null;
- GNBCUUPModel gNBCUUPModel = new GNBCUUPModel();
- modelMapper.map(gNBCUUPEntity,gNBCUUPModel);
- return gNBCUUPModel;
- }
-
- /**
- * To store the slice / config details of GNBDUFunction
- * @param GNBDUModel
- * @return
- */
- public GNBDUModel saveGNBDU(GNBDUModel gNBDUModel) {
- logger.debug("Request received to save GNBDUModel: id::"+ gNBDUModel.getgNBDUId());
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBDUFunction gNBDUFunction=new GNBDUFunction();NearRTRIC nearRTRICRef = new NearRTRIC();
- modelMapper.map(gNBDUModel, gNBDUFunction);
- if(gNBDUModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).isPresent()) {
- nearRTRICRef = nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).get();
- gNBDUFunction.setNearRTRIC(nearRTRICRef);
- }
- NearRTRIC nearRTRICRefNew = nearRTRICRef;
- nearRTRICRefNew.setNearRTRICId(gNBDUModel.getNearRTRICId());
- if(gNBDUFunction!=null && !gNBDUFunction.getCellDUList().isEmpty()) {
- gNBDUFunction.getCellDUList().forEach(cellDU->{
- cellDU.setgNBDUFunction(gNBDUFunction);
- });
- }
- GNBDUFunction gNBDUEntity = gNBDURepository.save(gNBDUFunction);
- modelMapper.map(gNBDUEntity,gNBDUModel);
- return gNBDUModel;
- }
-
- /**
- * To fetch the gNBDU details
- *
- * @param gNBDUId
- * @return GNBDUModel
- */
- public GNBDUModel fetchGNBDUData(Integer gNBDUId) {
- logger.debug("Request received to fetch GNBDUFunction: id::"+ gNBDUId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- GNBDUFunction gNBDUEntity = gNBDURepository.findById(gNBDUId).isPresent()?gNBDURepository.findById(gNBDUId).get():null;
- GNBDUModel gNBDUModel = new GNBDUModel();
- modelMapper.map(gNBDUEntity,gNBDUModel);
- return gNBDUModel;
- }
-
- /**
- * Stored NearRTRIC
- *
- * @param nearRTRIC
- * @return
- */
- public NearRTRICModel saveNearRTRIC(NearRTRICModel nearRTRIC) {
- logger.debug("Request received to store NearRTRIC: id::"+ nearRTRIC.getNearRTRICId());
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- NearRTRIC nearRTRICEntity = new NearRTRIC();
- modelMapper.map(nearRTRIC, nearRTRICEntity);
- NearRTRIC nearRTRICEntityEResponse = nearRTRICRepository.save(nearRTRICEntity);
- modelMapper.map(nearRTRICEntityEResponse,nearRTRIC);
- return nearRTRIC;
- }
-
- /**
- * To fetch the nearRTRIC details
- *
- * @param nearRTRICId
- * @return NearRTRICModel
- */
- public NearRTRICModel fetchNearRTRICData(Integer nearRTRICId) {
- logger.debug("Request received to fetch GNBDUFunction: id::"+ nearRTRICId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- NearRTRIC nearRTRICEntity = nearRTRICRepository.findById(nearRTRICId).isPresent()?nearRTRICRepository.findById(nearRTRICId).get():null;
- NearRTRICModel nearRTRICModel = new NearRTRICModel();
- modelMapper.map(nearRTRICEntity,nearRTRICModel);
- return nearRTRICModel;
- }
-
- /**
- * To retrieve the RRMPolicy of a network function
- *
- * @param resourceType
- * @param resourceID
- * @return
- */
- public RRMPolicyRatioModel fetchRRMPolicyOfNE(String resourceType, String resourceID) {
- logger.debug("Request received to fetch RRMPolicy:"+ resourceType+"--"+resourceID);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- RRMPolicyRatioModel rrmPolicyResponse = new RRMPolicyRatioModel();
- RRMPolicyRatio rrmPolicyEntity = rRMPolicyRepository.findByResourceTypeAndId(resourceType, resourceID);
- modelMapper.map(rrmPolicyEntity, rrmPolicyResponse);
- return rrmPolicyResponse;
- }
-
- /**
- * To update RRM policy of NF
- *
- * @param rrmPolicy
- * @return
- */
- public RRMPolicyRatioModel updateRRMPolicy(RRMPolicyRatioModel rrmPolicy) {
- logger.debug("Request received to update RRMPolicy:"+ rrmPolicy.getRrmPolicyID());
- RRMPolicyRatio rrmPolicyEntity = new RRMPolicyRatio();
- modelMapper.map(rrmPolicy, rrmPolicyEntity);
- rrmPolicyEntity = rRMPolicyRepository.save(rrmPolicyEntity);
- modelMapper.map(rrmPolicyEntity, rrmPolicy);
- return rrmPolicy;
- }
-
- /**
- * @param trackingArea
- * @return List<NearRTRICModel>
- */
- public List<NearRTRICModel> findRICsInTA(String trackingArea) {
- logger.debug("Request received to find the NearRTRICs in Tracking Area::"+ trackingArea);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<NearRTRIC> nearRTRICsList = nearRTRICRepository.getListOfRICsInTrackingArea(trackingArea);
- List<NearRTRICModel> ricModelList = nearRTRICsList.stream()
- .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
- return ricModelList;
- }
-
- /**
- * @param cellsList
- * @return
- */
- public List<NearRTRICModel> findNearRTRICofCells(List<Integer> cellsList){
- List<NearRTRIC> ricEntitiesList = new ArrayList<>();
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<String> cucpNames = gNBCUCPRepository.findCUCPByCellIds(cellsList);
- cucpNames.forEach(cucpName -> {
- List<NearRTRIC> ricEntities = new ArrayList<>();
- ricEntities = nearRTRICRepository.findNearRTRICByCUCPName(cucpName);
- ricEntitiesList.addAll(ricEntities);
- });
- List<NearRTRICModel> ricModelList = ricEntitiesList.stream()
- .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
- return ricModelList;
- }
-
-
- /**
- * To update the RAN Slice details
- *
- * @param rANSliceInfoModel
- * @return RANSliceInfoModel
- */
- public RANSliceInfoModel updateRANInventory(RANSliceInfoModel rANSliceInfoModel) {
- logger.debug("Request received to update inventory for id::"+ rANSliceInfoModel.getRanNFNSSIId());
- RANSliceInfo rANSliceInfoEntity = new RANSliceInfo();
- modelMapper.map(rANSliceInfoModel, rANSliceInfoEntity);
- if(ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).isPresent()) {
- RANSliceInfo ranInfo = ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).get();
- List<String> ranNSSIList = ranInfo.getRanNSSIList();
- ranNSSIList.addAll(rANSliceInfoEntity.getRanNSSIList());
- rANSliceInfoEntity.setRanNSSIList(ranNSSIList);
-
- List<String> nSSAIList = ranInfo.getnSSAIList();
- nSSAIList.addAll(rANSliceInfoEntity.getnSSAIList());
- rANSliceInfoEntity.setnSSAIList(nSSAIList);
-
- List<SliceProfile> sliceProfilesList = ranInfo.getSliceProfilesList();
- sliceProfilesList.addAll(rANSliceInfoEntity.getSliceProfilesList());
- rANSliceInfoEntity.setSliceProfilesList(sliceProfilesList);
- }
- else {
- if(!rANSliceInfoEntity.getSliceProfilesList().isEmpty()) {
- for(SliceProfile profile:rANSliceInfoEntity.getSliceProfilesList()) {
- profile.setrANSliceInventory(rANSliceInfoEntity);
- }
- }
- }
- rANSliceInfoEntity = ranInventoryRepo.save(rANSliceInfoEntity);
- modelMapper.map(rANSliceInfoEntity, rANSliceInfoModel);
- return rANSliceInfoModel;
- }
-
- /**
- * @param ranNFNSSIId
- * @return RANSliceInfoModel
- */
- public RANSliceInfoModel fetchRANSlice(String ranNFNSSIId) {
- logger.debug("Request received to read inventory details for id::"+ ranNFNSSIId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- RANSliceInfo ranSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()?ranInventoryRepo.findById(ranNFNSSIId).get():null;
- RANSliceInfoModel rANSliceInfoModel = new RANSliceInfoModel();
- modelMapper.map(ranSliceInfo, rANSliceInfoModel);
- return rANSliceInfoModel;
- }
-
- /**
- * @param trackingArea
- * @return List<String>
- */
- public List<String> fetchCellsofTA(String trackingArea) {
- logger.debug("Request recieved to fetch the cell details of TA:"+ trackingArea);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- String cells = tACellRepository.findById(trackingArea).isPresent()?tACellRepository.findById(trackingArea).get().getCellsList():null;
- return cells!=null? Arrays.asList(cells.split(",")):null;
-
- }
-
- public Iterable<TACells> fetchAllTA()
- {
- logger.info("Request recieved to fetch all TA:");
- return tACellRepository.findAll();
- }
-
- /**
- * @param nearRTRICId
- * @return List<NRCellCUModel>
- */
- public List<NRCellCUModel> fetchCUCellsofRIC(Integer nearRTRICId) {
- logger.debug("Request recieved to fetch the cell (CU) details of nearRTRICId:"+ nearRTRICId);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<NRCellCU> cellCUEntities = new ArrayList<NRCellCU>();
- NearRTRIC nearRTRIC = nearRTRICRepository.findById(nearRTRICId).isPresent()?nearRTRICRepository.findById(nearRTRICId).get():null;
- if(nearRTRIC!=null) {
- List<GNBCUCPFunction> cucpFunctions = nearRTRIC.getgNBCUCPList();
- cucpFunctions.forEach(cucpFunction->{
- List<NRCellCU> cellCUList = new ArrayList<NRCellCU>();
- cellCUList.addAll(cucpFunction.getCellCUList());
- cellCUEntities.addAll(cellCUList);
- });
- List<NRCellCUModel> cuCellModels = cellCUEntities.stream()
- .map(cellCUEntity -> modelMapper.map(cellCUEntity, NRCellCUModel.class)).collect(Collectors.toList());
- return cuCellModels;
- }
- return new ArrayList<NRCellCUModel>();
- }
-
- /**
- * @param trackingArea
- * @return List<NRCellDUModel>
- */
- public Map<Integer, List<NRCellDUModel>> fetchDUCellsofRIC(String sNSSAI) {
- logger.debug("Request recieved to fetch the cell (DU) details of sNSSAI:"+ sNSSAI);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- Set<NRCellDU> cellDUEntities = new HashSet<NRCellDU>();Set<NRCellDU> cellDUs = new HashSet<NRCellDU>();
- List<NearRTRICModel> ricModels = findRICsByNSSAI(sNSSAI);
- Map<Integer, List<NRCellDUModel>> cellsMap = new HashMap<Integer, List<NRCellDUModel>>();
- List<NearRTRIC> ricEntities = ricModels.stream()
- .map(ric -> modelMapper.map(ric, NearRTRIC.class)).collect(Collectors.toList());
- ricEntities.forEach(ricEntity -> {
- List<GNBDUFunction> duFunctions = ricEntity.getgNBDUList();
- duFunctions.forEach(duFunction -> {
- List<NRCellDU> cellDUList =duFunction.getCellDUList();
- cellDUList.forEach(cellDU->{
- List<PLMNInfo> plmnList = cellDU.getpLMNInfoList();
- plmnList.forEach(plmn->{
- if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())){
- cellDUs.add(cellDU);
- }
- });
- });
- //cellDUList.addAll(duFunction.getCellDUList());
- cellDUEntities.addAll(cellDUs);
- });
- List<NRCellDUModel> duCellModels = cellDUEntities.stream()
- .map(cellDUEntity -> modelMapper.map(cellDUEntity, NRCellDUModel.class)).collect(Collectors.toList());
- cellsMap.put(ricEntity.getNearRTRICId(), duCellModels);
- });
-
- return cellsMap;
- }
-
- /**
- * @param ranNFNSSIID
- * @return List<NearRTRICModel>
- */
- public List<NearRTRICModel> findNearRTRICByNSSI(String ranNFNSSIID) {
- logger.debug("Request recieved to fetch nearRTRIC of NSSI:"+ ranNFNSSIID);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSI(ranNFNSSIID);
- List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
- .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class)).collect(Collectors.toList());
- return nearRTRICModels;
- }
-
- /**
- * @param sNSSAI
- * @return List<NearRTRICModel>
- */
- public List<NearRTRICModel> findRICsByNSSAI(String sNSSAI){
- logger.debug("Request recieved to fetch nearRTRIC of NSSAI:"+ sNSSAI);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- Set<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSAI(sNSSAI);
- List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
- .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class))
- .collect(Collectors.toList());
- return nearRTRICModels;
- }
-
- /**
- * @param sNSSAI
- * @return config Details
- */
- public Map<String,Integer> findSliceProfileconfig(String sNSSAI){
- logger.debug("Request recieved to fetch Config requested for a slice:"+ sNSSAI);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- Map<String,Integer> configDetails = new HashMap<String, Integer>();
- String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
- RANSliceInfo rANSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()? ranInventoryRepo.findById(ranNFNSSIId).get():null;
- if(rANSliceInfo.getSliceProfilesList().size()>0) {
- rANSliceInfo.getSliceProfilesList().forEach(sliceProfile->{
- if(sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())){
- //configDetails.put("maxNoOfConns",sliceProfile.getMaxNumberofConns());
- configDetails.put("dLThptPerSlice",sliceProfile.getdLThptPerSlice());
- configDetails.put("uLThptPerSlice",sliceProfile.getuLThptPerSlice());
- }
- });
- }
- return configDetails;
- }
-
- /**
- * @param sNSSAI
- * @return RIC Config for a slice
- */
- public Map<Integer, NSSAIConfig> findSliceConfig(String sNSSAI){
- logger.debug("Request recieved to fetch Slice config Details at RICs:"+ sNSSAI);
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
- Map<Integer, NSSAIConfig> configMap = new HashMap<Integer, NSSAIConfig>();
- nearRTRICModels.forEach(nearRTRIC->{
- nearRTRIC.getpLMNInfoList().forEach(plmn->{
- if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
- configMap.put(nearRTRIC.getNearRTRICId(),plmn.getsNSSAI().getConfigData());
- }
- });
- });
- return configMap;
- }
-
- /**
- * @param sNSSAI
- * @return List<GNBDUModel>
- */
- public List<GNBDUModel> findDUsofSNssai(String sNSSAI){
- logger.debug("Request recieved to fetch all DUs of NSSAI");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findDUsByNSSAI(sNSSAI);
- List<GNBDUModel> duModels = duList.stream()
- .map(duEntity -> modelMapper.map(duEntity, GNBDUModel.class)).collect(Collectors.toList());
- return duModels;
- }
-
- /**
- * @param sNSSAI
- * @return List<GNBCUCPModel>
- */
- public List<GNBCUCPModel> findCUsofSNssai(String sNSSAI){
- logger.debug("Request recieved to fetch all CUs of NSSAI");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<GNBCUCPFunction> cuList = (List<GNBCUCPFunction>) gNBCUCPRepository.findCUCPsByNSSAI(sNSSAI);
- List<GNBCUCPModel> cuModels = cuList.stream()
- .map(cuEntity -> modelMapper.map(cuEntity, GNBCUCPModel.class)).collect(Collectors.toList());
- return cuModels;
- }
-
- /**
- * @param sNSSAI
- * @return Map<String, String>
- */
- public Map<String, String> getSubscriberDetails(String sNSSAI){
- logger.debug("Request recieved to fetch SubscriberDetails");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- Map<String, String> details = new HashMap<String, String>();
- String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
- details.put("ranNFNSSIId", ranNFNSSIId);
- details.put("sNSSAI", sNSSAI);
- RANSliceInfo rANSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()? ranInventoryRepo.findById(ranNFNSSIId).get():null;
- if(rANSliceInfo.getSliceProfilesList().size()>0) {
- rANSliceInfo.getSliceProfilesList().forEach(sliceProfile->{
- if(sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())){
- details.put("sliceProfileId",sliceProfile.getSliceProfileId());
- }
- });
- }
- List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
- nearRTRICModels.forEach(nearRTRIC->{
- nearRTRIC.getpLMNInfoList().forEach(plmn->{
- if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
- details.put("subscriptionServiceType",plmn.getsNSSAI().getSubscriptionServiceType());
- details.put("globalSubscriberId",plmn.getsNSSAI().getGlobalSubscriberId());
- }
- });
- });
-
- return details;
- }
-
- // Data required for PM data Simulation
- /**
- * @return List<GNBCUCPModel>
- */
- public List<GNBCUCPModel> findAllCUCPFunctions(){
- logger.debug("Request recieved to fetch all CUCPs");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<GNBCUCPFunction> cucpsList = (List<GNBCUCPFunction>) gNBCUCPRepository.findAll();
- List<GNBCUCPModel> cucpModels = cucpsList.stream()
- .map(cucpEntity -> modelMapper.map(cucpEntity, GNBCUCPModel.class)).collect(Collectors.toList());
- return cucpModels;
- }
-
- /**
- * @return List<GNBDUModel>
- */
- public List<GNBDUModel> findAllDUFunctions(){
- logger.debug("Request recieved to fetch all DUs");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findAll();
- List<GNBDUModel> duModels = duList.stream().map(duEntity -> {
- GNBDUModel gnbDuModel = modelMapper.map(duEntity, GNBDUModel.class);
- gnbDuModel.setNearRTRICId(duEntity.getNearRTRIC().getNearRTRICId());
- return gnbDuModel;
- }).collect(Collectors.toList());
- return duModels;
- }
-
- public List<NearRTRICModel> findAllNearRTRIC()
- {
- logger.debug("Request received to fetch all NearRTRICModel");
- modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
- List<NearRTRIC> rtricList = (List<NearRTRIC>) nearRTRICRepository.findAll();
- List<NearRTRICModel> rtricmodels = rtricList.stream()
- .map(rtricEntity -> modelMapper.map(rtricEntity, NearRTRICModel.class)).collect(Collectors.toList());
- return rtricmodels;
- }
-
+ private static Logger logger = Logger.getLogger(RANSliceConfigService.class.getName());
+ @Autowired
+ private NRCellCURepository nRCellCURepository;
+
+ @Autowired
+ private GNBCUCPRepository gNBCUCPRepository;
+
+ @Autowired
+ private GNBCUUPRepository gNBCUUPRepository;
+
+ @Autowired
+ private GNBDURepository gNBDURepository;
+
+ @Autowired
+ private NearRTRICRepository nearRTRICRepository;
+
+ @Autowired
+ private RRMPolicyRepository rRMPolicyRepository;
+
+ @Autowired
+ private RANInventoryRepository ranInventoryRepo;
+
+ @Autowired
+ private TACellRepository tACellRepository;
+
+ private ModelMapper modelMapper = new ModelMapper();
+
+ /**
+ * To store/update the NRCEllCU details
+ *
+ * @param nRCellCUModel
+ * @return NRCellCUModel
+ */
+ public NRCellCUModel saveNRcellCU(NRCellCUModel nRCellCUModel) {
+ logger.debug("Request received to save NRcellCU: id::" + nRCellCUModel.getCellLocalId());
+ NRCellCU cellCUEntity = new NRCellCU();
+ modelMapper.map(nRCellCUModel, cellCUEntity);
+ if (!cellCUEntity.getpLMNInfoList().isEmpty()) {
+ for (PLMNInfo plmn : cellCUEntity.getpLMNInfoList()) {
+ // plmn.setnRCellCU(cellCUEntity);
+ }
+ }
+ NRCellCU cellCUEntityResponse = nRCellCURepository.save(cellCUEntity);
+ modelMapper.map(cellCUEntityResponse, nRCellCUModel);
+ return nRCellCUModel;
+ }
+
+ /**
+ * To fetch the NRCellCU details
+ *
+ * @param cellLocalId
+ * @return NRCellCUModel
+ */
+ public NRCellCUModel fetchNRCellCUDetails(Integer cellLocalId) {
+ logger.debug("Request received to fetchNRCellCUDetails: id::" + cellLocalId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NRCellCU cellCUEntity =
+ nRCellCURepository.findById(cellLocalId).isPresent() ? nRCellCURepository.findById(cellLocalId).get()
+ : null;
+ NRCellCUModel nRCellCUModel = new NRCellCUModel();
+ modelMapper.map(cellCUEntity, nRCellCUModel);
+ return nRCellCUModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBCUCPFunction
+ *
+ * @param gNBCUCPModel
+ * @return
+ */
+ public GNBCUCPModel saveGNBCUCP(GNBCUCPModel gNBCUCPModel) {
+ logger.debug("Request received to save GNBCUCPModel: id::" + gNBCUCPModel.getgNBCUName());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUCPFunction gNBCUCPFunction = new GNBCUCPFunction();
+ NearRTRIC nearRTRICRef = new NearRTRIC();
+ try {
+ modelMapper.map(gNBCUCPModel, gNBCUCPFunction);
+ if (gNBCUCPModel.getNearRTRICId() != null
+ && nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).isPresent()) {
+ gNBCUCPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).get());
+ }
+ if (gNBCUCPFunction != null && !gNBCUCPFunction.getCellCUList().isEmpty()) {
+ gNBCUCPFunction.getCellCUList().forEach(cellCU -> {
+ cellCU.setgNBCUCPFunction(gNBCUCPFunction);
+ });
+ }
+ GNBCUCPFunction gNBCUCPEntity = gNBCUCPRepository.save(gNBCUCPFunction);
+ modelMapper.map(gNBCUCPEntity, gNBCUCPModel);
+ } catch (Exception e) {
+ logger.debug("Error occured during saveGNBCUCP" + e.getMessage());
+ return null;
+ }
+ return gNBCUCPModel;
+ }
+
+ /**
+ * To fetch the gNBCUCP details
+ *
+ * @param cucpName
+ * @return GNBCUCPModel
+ */
+ public GNBCUCPModel fetchGNBCUCPData(String cucpName) {
+ logger.debug("Request received to fetch GNBCUCPFunction: name::" + cucpName);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUCPFunction gNBCUCPEntity =
+ gNBCUCPRepository.findById(cucpName).isPresent() ? gNBCUCPRepository.findById(cucpName).get() : null;
+ GNBCUCPModel gNBCUCPModel = new GNBCUCPModel();
+ modelMapper.map(gNBCUCPEntity, gNBCUCPModel);
+ return gNBCUCPModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBCUCPFunction
+ *
+ * @param gNBCUCPModel
+ * @return
+ */
+ public GNBCUUPModel saveGNBCUUP(GNBCUUPModel gNBCUUPModel) {
+ logger.debug("Request received to save GNBCUUPModel: id::" + gNBCUUPModel.getgNBCUUPId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUUPFunction gNBCUUPFunction = new GNBCUUPFunction();
+ modelMapper.map(gNBCUUPModel, gNBCUUPFunction);
+ if (gNBCUUPModel.getNearRTRICId() != null
+ && nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).isPresent()) {
+ gNBCUUPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).get());
+ }
+ if (gNBCUUPFunction != null && !gNBCUUPFunction.getpLMNInfoList().isEmpty()) {
+ gNBCUUPFunction.getpLMNInfoList().forEach(plmn -> {
+ // plmn.setgNBCUUPFunction(gNBCUUPFunction);
+ });
+ }
+ GNBCUUPFunction gNBCUUPEntity = gNBCUUPRepository.save(gNBCUUPFunction);
+ modelMapper.map(gNBCUUPEntity, gNBCUUPModel);
+ return gNBCUUPModel;
+ }
+
+ /**
+ * To fetch the gNBCUUP details
+ *
+ * @param cucpName
+ * @return GNBCUUPModel
+ */
+ public GNBCUUPModel fetchGNBCUUPData(Integer gNBCUUPId) {
+ logger.debug("Request received to fetch GNBCUUPFunction: id::" + gNBCUUPId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUUPFunction gNBCUUPEntity =
+ gNBCUUPRepository.findById(gNBCUUPId).isPresent() ? gNBCUUPRepository.findById(gNBCUUPId).get() : null;
+ GNBCUUPModel gNBCUUPModel = new GNBCUUPModel();
+ modelMapper.map(gNBCUUPEntity, gNBCUUPModel);
+ return gNBCUUPModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBDUFunction
+ *
+ * @param GNBDUModel
+ * @return
+ */
+ public GNBDUModel saveGNBDU(GNBDUModel gNBDUModel) {
+ logger.debug("Request received to save GNBDUModel: id::" + gNBDUModel.getgNBDUId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBDUFunction gNBDUFunction = new GNBDUFunction();
+ NearRTRIC nearRTRICRef = new NearRTRIC();
+ modelMapper.map(gNBDUModel, gNBDUFunction);
+ if (gNBDUModel.getNearRTRICId() != null
+ && nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).isPresent()) {
+ nearRTRICRef = nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).get();
+ gNBDUFunction.setNearRTRIC(nearRTRICRef);
+ }
+ NearRTRIC nearRTRICRefNew = nearRTRICRef;
+ nearRTRICRefNew.setNearRTRICId(gNBDUModel.getNearRTRICId());
+ if (gNBDUFunction != null && !gNBDUFunction.getCellDUList().isEmpty()) {
+ gNBDUFunction.getCellDUList().forEach(cellDU -> {
+ cellDU.setgNBDUFunction(gNBDUFunction);
+ });
+ }
+ GNBDUFunction gNBDUEntity = gNBDURepository.save(gNBDUFunction);
+ modelMapper.map(gNBDUEntity, gNBDUModel);
+ return gNBDUModel;
+ }
+
+ /**
+ * To fetch the gNBDU details
+ *
+ * @param gNBDUId
+ * @return GNBDUModel
+ */
+ public GNBDUModel fetchGNBDUData(Integer gNBDUId) {
+ logger.debug("Request received to fetch GNBDUFunction: id::" + gNBDUId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBDUFunction gNBDUEntity =
+ gNBDURepository.findById(gNBDUId).isPresent() ? gNBDURepository.findById(gNBDUId).get() : null;
+ GNBDUModel gNBDUModel = new GNBDUModel();
+ modelMapper.map(gNBDUEntity, gNBDUModel);
+ return gNBDUModel;
+ }
+
+ /**
+ * Stored NearRTRIC
+ *
+ * @param nearRTRIC
+ * @return
+ */
+ public NearRTRICModel saveNearRTRIC(NearRTRICModel nearRTRIC) {
+ logger.debug("Request received to store NearRTRIC: id::" + nearRTRIC.getNearRTRICId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NearRTRIC nearRTRICEntity = new NearRTRIC();
+ modelMapper.map(nearRTRIC, nearRTRICEntity);
+ NearRTRIC nearRTRICEntityEResponse = nearRTRICRepository.save(nearRTRICEntity);
+ modelMapper.map(nearRTRICEntityEResponse, nearRTRIC);
+ return nearRTRIC;
+ }
+
+ /**
+ * To fetch the nearRTRIC details
+ *
+ * @param nearRTRICId
+ * @return NearRTRICModel
+ */
+ public NearRTRICModel fetchNearRTRICData(Integer nearRTRICId) {
+ logger.debug("Request received to fetch GNBDUFunction: id::" + nearRTRICId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NearRTRIC nearRTRICEntity =
+ nearRTRICRepository.findById(nearRTRICId).isPresent() ? nearRTRICRepository.findById(nearRTRICId).get()
+ : null;
+ NearRTRICModel nearRTRICModel = new NearRTRICModel();
+ modelMapper.map(nearRTRICEntity, nearRTRICModel);
+ return nearRTRICModel;
+ }
+
+ /**
+ * To retrieve the RRMPolicy of a network function
+ *
+ * @param resourceType
+ * @param resourceID
+ * @return
+ */
+ public RRMPolicyRatioModel fetchRRMPolicyOfNE(String resourceType, String resourceID) {
+ logger.debug("Request received to fetch RRMPolicy:" + resourceType + "--" + resourceID);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ RRMPolicyRatioModel rrmPolicyResponse = new RRMPolicyRatioModel();
+ RRMPolicyRatio rrmPolicyEntity = rRMPolicyRepository.findByResourceTypeAndId(resourceType, resourceID);
+ modelMapper.map(rrmPolicyEntity, rrmPolicyResponse);
+ return rrmPolicyResponse;
+ }
+
+ /**
+ * To update RRM policy of NF
+ *
+ * @param rrmPolicy
+ * @return
+ */
+ public RRMPolicyRatioModel updateRRMPolicy(RRMPolicyRatioModel rrmPolicy) {
+ logger.debug("Request received to update RRMPolicy:" + rrmPolicy.getRrmPolicyID());
+ RRMPolicyRatio rrmPolicyEntity = new RRMPolicyRatio();
+ modelMapper.map(rrmPolicy, rrmPolicyEntity);
+ rrmPolicyEntity = rRMPolicyRepository.save(rrmPolicyEntity);
+ modelMapper.map(rrmPolicyEntity, rrmPolicy);
+ return rrmPolicy;
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findRICsInTA(String trackingArea) {
+ logger.debug("Request received to find the NearRTRICs in Tracking Area::" + trackingArea);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> nearRTRICsList = nearRTRICRepository.getListOfRICsInTrackingArea(trackingArea);
+ List<NearRTRICModel> ricModelList = nearRTRICsList.stream()
+ .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return ricModelList;
+ }
+
+ /**
+ * @param cellsList
+ * @return
+ */
+ public List<NearRTRICModel> findNearRTRICofCells(List<Integer> cellsList) {
+ List<NearRTRIC> ricEntitiesList = new ArrayList<>();
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<String> cucpNames = gNBCUCPRepository.findCUCPByCellIds(cellsList);
+ cucpNames.forEach(cucpName -> {
+ List<NearRTRIC> ricEntities = new ArrayList<>();
+ ricEntities = nearRTRICRepository.findNearRTRICByCUCPName(cucpName);
+ ricEntitiesList.addAll(ricEntities);
+ });
+ List<NearRTRICModel> ricModelList = ricEntitiesList.stream()
+ .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return ricModelList;
+ }
+
+ /**
+ * To update the RAN Slice details
+ *
+ * @param rANSliceInfoModel
+ * @return RANSliceInfoModel
+ */
+ public RANSliceInfoModel updateRANInventory(RANSliceInfoModel rANSliceInfoModel) {
+ logger.debug("Request received to update inventory for id::" + rANSliceInfoModel.getRanNFNSSIId());
+ RANSliceInfo rANSliceInfoEntity = new RANSliceInfo();
+ modelMapper.map(rANSliceInfoModel, rANSliceInfoEntity);
+ if (ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).isPresent()) {
+ RANSliceInfo ranInfo = ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).get();
+ List<String> ranNSSIList = ranInfo.getRanNSSIList();
+ ranNSSIList.addAll(rANSliceInfoEntity.getRanNSSIList());
+ rANSliceInfoEntity.setRanNSSIList(ranNSSIList);
+
+ List<String> nSSAIList = ranInfo.getnSSAIList();
+ nSSAIList.addAll(rANSliceInfoEntity.getnSSAIList());
+ rANSliceInfoEntity.setnSSAIList(nSSAIList);
+
+ List<SliceProfile> sliceProfilesList = ranInfo.getSliceProfilesList();
+ sliceProfilesList.addAll(rANSliceInfoEntity.getSliceProfilesList());
+ rANSliceInfoEntity.setSliceProfilesList(sliceProfilesList);
+ } else {
+ if (!rANSliceInfoEntity.getSliceProfilesList().isEmpty()) {
+ for (SliceProfile profile : rANSliceInfoEntity.getSliceProfilesList()) {
+ profile.setrANSliceInventory(rANSliceInfoEntity);
+ }
+ }
+ }
+ rANSliceInfoEntity = ranInventoryRepo.save(rANSliceInfoEntity);
+ modelMapper.map(rANSliceInfoEntity, rANSliceInfoModel);
+ return rANSliceInfoModel;
+ }
+
+ /**
+ * @param ranNFNSSIId
+ * @return RANSliceInfoModel
+ */
+ public RANSliceInfoModel fetchRANSlice(String ranNFNSSIId) {
+ logger.debug("Request received to read inventory details for id::" + ranNFNSSIId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ RANSliceInfo ranSliceInfo =
+ ranInventoryRepo.findById(ranNFNSSIId).isPresent() ? ranInventoryRepo.findById(ranNFNSSIId).get()
+ : null;
+ RANSliceInfoModel rANSliceInfoModel = new RANSliceInfoModel();
+ modelMapper.map(ranSliceInfo, rANSliceInfoModel);
+ return rANSliceInfoModel;
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<String>
+ */
+ public List<String> fetchCellsofTA(String trackingArea) {
+ logger.debug("Request recieved to fetch the cell details of TA:" + trackingArea);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ String cells = tACellRepository.findById(trackingArea).isPresent()
+ ? tACellRepository.findById(trackingArea).get().getCellsList()
+ : null;
+ return cells != null ? Arrays.asList(cells.split(",")) : null;
+
+ }
+
+ public Iterable<TACells> fetchAllTA() {
+ logger.info("Request recieved to fetch all TA:");
+ return tACellRepository.findAll();
+ }
+
+ /**
+ * @param nearRTRICId
+ * @return List<NRCellCUModel>
+ */
+ public List<NRCellCUModel> fetchCUCellsofRIC(Integer nearRTRICId) {
+ logger.debug("Request recieved to fetch the cell (CU) details of nearRTRICId:" + nearRTRICId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NRCellCU> cellCUEntities = new ArrayList<NRCellCU>();
+ NearRTRIC nearRTRIC =
+ nearRTRICRepository.findById(nearRTRICId).isPresent() ? nearRTRICRepository.findById(nearRTRICId).get()
+ : null;
+ if (nearRTRIC != null) {
+ List<GNBCUCPFunction> cucpFunctions = nearRTRIC.getgNBCUCPList();
+ cucpFunctions.forEach(cucpFunction -> {
+ List<NRCellCU> cellCUList = new ArrayList<NRCellCU>();
+ cellCUList.addAll(cucpFunction.getCellCUList());
+ cellCUEntities.addAll(cellCUList);
+ });
+ List<NRCellCUModel> cuCellModels =
+ cellCUEntities.stream().map(cellCUEntity -> modelMapper.map(cellCUEntity, NRCellCUModel.class))
+ .collect(Collectors.toList());
+ return cuCellModels;
+ }
+ return new ArrayList<NRCellCUModel>();
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<NRCellDUModel>
+ */
+ public Map<Integer, List<NRCellDUModel>> fetchDUCellsofRIC(String sNSSAI) {
+ logger.debug("Request recieved to fetch the cell (DU) details of sNSSAI:" + sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Set<NRCellDU> cellDUEntities = new HashSet<NRCellDU>();
+ Set<NRCellDU> cellDUs = new HashSet<NRCellDU>();
+ List<NearRTRICModel> ricModels = findRICsByNSSAI(sNSSAI);
+ Map<Integer, List<NRCellDUModel>> cellsMap = new HashMap<Integer, List<NRCellDUModel>>();
+ List<NearRTRIC> ricEntities =
+ ricModels.stream().map(ric -> modelMapper.map(ric, NearRTRIC.class)).collect(Collectors.toList());
+ ricEntities.forEach(ricEntity -> {
+ List<GNBDUFunction> duFunctions = ricEntity.getgNBDUList();
+ duFunctions.forEach(duFunction -> {
+ List<NRCellDU> cellDUList = duFunction.getCellDUList();
+ cellDUList.forEach(cellDU -> {
+ List<PLMNInfo> plmnList = cellDU.getpLMNInfoList();
+ plmnList.forEach(plmn -> {
+ if (sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
+ cellDUs.add(cellDU);
+ }
+ });
+ });
+ // cellDUList.addAll(duFunction.getCellDUList());
+ cellDUEntities.addAll(cellDUs);
+ });
+ List<NRCellDUModel> duCellModels =
+ cellDUEntities.stream().map(cellDUEntity -> modelMapper.map(cellDUEntity, NRCellDUModel.class))
+ .collect(Collectors.toList());
+ cellsMap.put(ricEntity.getNearRTRICId(), duCellModels);
+ });
+
+ return cellsMap;
+ }
+
+ /**
+ * @param ranNFNSSIID
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findNearRTRICByNSSI(String ranNFNSSIID) {
+ logger.debug("Request recieved to fetch nearRTRIC of NSSI:" + ranNFNSSIID);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSI(ranNFNSSIID);
+ List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
+ .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class))
+ .collect(Collectors.toList());
+ return nearRTRICModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findRICsByNSSAI(String sNSSAI) {
+ logger.debug("Request recieved to fetch nearRTRIC of NSSAI:" + sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Set<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSAI(sNSSAI);
+ List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
+ .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class))
+ .collect(Collectors.toList());
+ return nearRTRICModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return config Details
+ */
+ public Map<String, Integer> findSliceProfileconfig(String sNSSAI) {
+ logger.debug("Request recieved to fetch Config requested for a slice:" + sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Map<String, Integer> configDetails = new HashMap<String, Integer>();
+ String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
+ RANSliceInfo rANSliceInfo =
+ ranInventoryRepo.findById(ranNFNSSIId).isPresent() ? ranInventoryRepo.findById(ranNFNSSIId).get()
+ : null;
+ if (rANSliceInfo.getSliceProfilesList().size() > 0) {
+ rANSliceInfo.getSliceProfilesList().forEach(sliceProfile -> {
+ if (sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())) {
+ // configDetails.put("maxNoOfConns",sliceProfile.getMaxNumberofConns());
+ configDetails.put("dLThptPerSlice", sliceProfile.getdLThptPerSlice());
+ configDetails.put("uLThptPerSlice", sliceProfile.getuLThptPerSlice());
+ }
+ });
+ }
+ return configDetails;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return RIC Config for a slice
+ */
+ public Map<Integer, NSSAIConfig> findSliceConfig(String sNSSAI) {
+ logger.debug("Request recieved to fetch Slice config Details at RICs:" + sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
+ Map<Integer, NSSAIConfig> configMap = new HashMap<Integer, NSSAIConfig>();
+ nearRTRICModels.forEach(nearRTRIC -> {
+ nearRTRIC.getpLMNInfoList().forEach(plmn -> {
+ if (sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
+ configMap.put(nearRTRIC.getNearRTRICId(), plmn.getsNSSAI().getConfigData());
+ }
+ });
+ });
+ return configMap;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<GNBDUModel>
+ */
+ public List<GNBDUModel> findDUsofSNssai(String sNSSAI) {
+ logger.debug("Request recieved to fetch all DUs of NSSAI");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findDUsByNSSAI(sNSSAI);
+ List<GNBDUModel> duModels = duList.stream().map(duEntity -> modelMapper.map(duEntity, GNBDUModel.class))
+ .collect(Collectors.toList());
+ return duModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<GNBCUCPModel>
+ */
+ public List<GNBCUCPModel> findCUsofSNssai(String sNSSAI) {
+ logger.debug("Request recieved to fetch all CUs of NSSAI");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBCUCPFunction> cuList = (List<GNBCUCPFunction>) gNBCUCPRepository.findCUCPsByNSSAI(sNSSAI);
+ List<GNBCUCPModel> cuModels = cuList.stream().map(cuEntity -> modelMapper.map(cuEntity, GNBCUCPModel.class))
+ .collect(Collectors.toList());
+ return cuModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return Map<String, String>
+ */
+ public Map<String, String> getSubscriberDetails(String sNSSAI) {
+ logger.debug("Request recieved to fetch SubscriberDetails");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Map<String, String> details = new HashMap<String, String>();
+ String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
+ details.put("ranNFNSSIId", ranNFNSSIId);
+ details.put("sNSSAI", sNSSAI);
+ RANSliceInfo rANSliceInfo =
+ ranInventoryRepo.findById(ranNFNSSIId).isPresent() ? ranInventoryRepo.findById(ranNFNSSIId).get()
+ : null;
+ if (rANSliceInfo.getSliceProfilesList().size() > 0) {
+ rANSliceInfo.getSliceProfilesList().forEach(sliceProfile -> {
+ if (sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())) {
+ details.put("sliceProfileId", sliceProfile.getSliceProfileId());
+ }
+ });
+ }
+ List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
+ nearRTRICModels.forEach(nearRTRIC -> {
+ nearRTRIC.getpLMNInfoList().forEach(plmn -> {
+ if (sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
+ details.put("subscriptionServiceType", plmn.getsNSSAI().getSubscriptionServiceType());
+ details.put("globalSubscriberId", plmn.getsNSSAI().getGlobalSubscriberId());
+ }
+ });
+ });
+
+ return details;
+ }
+
+ // Data required for PM data Simulation
+ /**
+ * @return List<GNBCUCPModel>
+ */
+ public List<GNBCUCPModel> findAllCUCPFunctions() {
+ logger.debug("Request recieved to fetch all CUCPs");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBCUCPFunction> cucpsList = (List<GNBCUCPFunction>) gNBCUCPRepository.findAll();
+ List<GNBCUCPModel> cucpModels = cucpsList.stream()
+ .map(cucpEntity -> modelMapper.map(cucpEntity, GNBCUCPModel.class)).collect(Collectors.toList());
+ return cucpModels;
+ }
+
+ /**
+ * @return List<GNBDUModel>
+ */
+ public List<GNBDUModel> findAllDUFunctions() {
+ logger.debug("Request recieved to fetch all DUs");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findAll();
+ List<GNBDUModel> duModels = duList.stream().map(duEntity -> {
+ GNBDUModel gnbDuModel = modelMapper.map(duEntity, GNBDUModel.class);
+ gnbDuModel.setNearRTRICId(duEntity.getNearRTRIC().getNearRTRICId());
+ return gnbDuModel;
+ }).collect(Collectors.toList());
+ return duModels;
+ }
+
+ public List<NearRTRICModel> findAllNearRTRIC() {
+ logger.debug("Request received to fetch all NearRTRICModel");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> rtricList = (List<NearRTRIC>) nearRTRICRepository.findAll();
+ List<NearRTRICModel> rtricmodels = rtricList.stream()
+ .map(rtricEntity -> modelMapper.map(rtricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return rtricmodels;
+ }
+
}