aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/pom.xml12
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java35
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java164
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java289
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java326
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java52
6 files changed, 876 insertions, 2 deletions
diff --git a/server/pom.xml b/server/pom.xml
index f72cfb67..7a88c68f 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -231,7 +231,11 @@
<artifactId>okhttp</artifactId>
<version>3.12.1</version>
</dependency>
-
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.4</version>
+ </dependency>
<!-- commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
@@ -275,7 +279,11 @@
<artifactId>httpclient</artifactId>
<version>4.5.4</version>
</dependency>
-
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.4</version>
+ </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java
new file mode 100644
index 00000000..253367df
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.nsmf;
+
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+
+public interface TaskMgtService {
+
+ ServiceResult querySlicingTask(int pageNo, int pageSize);
+
+ ServiceResult querySlicingTaskByStatus(String processingStatus, int pageNo, int pageSize);
+
+ ServiceResult queryTaskAuditInfo(String taskId);
+
+ ServiceResult updateTaskAuditInfo(SlicingTaskAuditInfo slicingTaskAuditInfo);
+
+ ServiceResult queryTaskCreationInfo(String taskId);
+
+ ServiceResult queryTaskCreationProgress(String taskId);
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java
new file mode 100644
index 00000000..df6c8be8
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceAndInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.Relationship;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import retrofit2.Response;
+
+public class GeneralConvertImpl {
+
+ private static final Logger logger = LoggerFactory.getLogger(GeneralConvertImpl.class);
+ private AAISliceService aaiSliceService;
+
+ public GeneralConvertImpl() {
+ this(RestfulServices.create(AAISliceService.class));
+ }
+
+ public GeneralConvertImpl(AAISliceService aaiSliceService) {
+ this.aaiSliceService = aaiSliceService;
+ }
+
+ public AAIServiceAndInstance queryServiceUtil(JSONObject object) {
+ if (object.containsKey("relationship-list")) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ aaiServiceAndInstance.setModelInvariantId(object.getString("model-invariant-id"));
+ aaiServiceAndInstance.setModelVersionId(object.getString("model-version-id"));
+ if (object.containsKey("workload-context")) {
+ aaiServiceAndInstance.setWorkloadContext(object.getString("workload-context"));
+ }
+
+ JSONArray array = object.getJSONObject("relationship-list").getJSONArray("relationship");
+ List<Relationship> relationshipList = new ArrayList<Relationship>();
+ for (int i = 0; i < array.size(); i++) {
+ Relationship relationship = new Relationship();
+ JSONObject objectShip = array.getJSONObject(i);
+ JSONArray arrayData = objectShip.getJSONArray("relationship-data");
+ relationship.setRelatedTo(objectShip.getString("related-to"));
+ List<RelationshipData> RelationshipDataList = new ArrayList<RelationshipData>();
+ for (int j = 0; j < arrayData.size(); j++) {
+ RelationshipData relationshipData = new RelationshipData();
+ JSONObject objectData = arrayData.getJSONObject(j);
+ relationshipData.setRelationshipKey(objectData.getString("relationship-key"));
+ relationshipData.setRelationshipValue(objectData.getString("relationship-value"));
+ RelationshipDataList.add(relationshipData);
+ }
+ relationshipList.add(relationship);
+ relationship.setRelationshipData(RelationshipDataList);
+
+ }
+ aaiServiceAndInstance.setRelationshipList(relationshipList);
+ return aaiServiceAndInstance;
+ } else {
+ return null;
+ }
+
+ }
+
+ List<String> getAreaTaList(String sourceCoverageAreaTAList) {
+ if (sourceCoverageAreaTAList == null || sourceCoverageAreaTAList.length() == 0) {
+ logger.error("getAreaTaList: sourceCoverageAreaTAList is null or length is 0");
+ return null;
+ }
+ String[] strArr = sourceCoverageAreaTAList.split("\\|");
+ return Arrays.asList(strArr);
+ }
+
+ public AAIServiceAndInstance listServiceByIdUtil(JSONObject object) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ aaiServiceAndInstance.setServiceInstanceId(object.getString("service-instance-id"));
+ aaiServiceAndInstance.setServiceInstanceName(object.getString("service-instance-name"));
+ aaiServiceAndInstance.setEnvironmentContext(object.getString("environment-context"));
+ aaiServiceAndInstance.setOrchestrationStatus(object.getString("orchestration-status"));
+ aaiServiceAndInstance.setServiceType(object.getString("service-type"));
+ return aaiServiceAndInstance;
+
+ }
+
+ String getUseInterval(String serviceId) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .queryOrderByService(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, serviceId)
+ .execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("getUseInterval: queryOrderByService response is:{}", response.body());
+ aaiServiceAndInstance = queryServiceUtil(object);
+ String orderId = getOrderIdFromRelation(aaiServiceAndInstance);
+ Response<JSONObject> orderResponse = this.aaiSliceService
+ .queryOrderByOrderId(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, orderId)
+ .execute();
+ if (orderResponse.isSuccessful()) {
+ logger.info("getUseInterval: queryOrderByOrderId response is:{}", orderResponse.body());
+ JSONObject orderObject = orderResponse.body();
+ AAIServiceAndInstance aaiOrderServiceAndInstance = queryServiceUtil(orderObject);
+ String useInterval = aaiOrderServiceAndInstance.getWorkloadContext();
+ return useInterval;
+ } else {
+ logger.error(String
+ .format("getUseInterval: Can not get queryOrderByOrderId[code={}, message={}]", response.code(),
+ response.message()));
+ return "";
+ }
+
+ } else {
+ logger.error(String
+ .format("getUseInterval: Can not get queryOrderByService[code={}, message={}]", response.code(),
+ response.message()));
+ return "";
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return "";
+ }
+ }
+
+ String getOrderIdFromRelation(AAIServiceAndInstance aaiServiceAndInstance) {
+ //获取第一个元素,总共一个切片业务对应一个订单
+ String orderId = "";
+ if (aaiServiceAndInstance.getRelationshipList() != null
+ && aaiServiceAndInstance.getRelationshipList().size() > 0) {
+ Relationship relationship = aaiServiceAndInstance.getRelationshipList().get(0);
+
+ if (null != relationship) {
+ List<org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData> relationshipDataList = relationship
+ .getRelationshipData();
+
+ for (org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData relationshipData : relationshipDataList) {
+ String relationKey = relationshipData.getRelationshipKey();
+ if (relationKey.equals("service-instance.service-instance-id")) {
+ orderId = relationshipData.getRelationshipValue();
+ }
+ }
+ }
+ }
+
+ return orderId;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java
new file mode 100644
index 00000000..6b007d19
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.beanutils.BeanUtils;
+import org.onap.usecaseui.server.bean.nsmf.common.PagedResult;
+import org.onap.usecaseui.server.bean.nsmf.task.BusinessDemandInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.NsiAndSubNssiInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.NstInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationProgress;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskList;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskRsp;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.onap.usecaseui.server.util.nsmf.NsmfCommonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TaskMgtServiceConvert {
+
+ private static final Logger logger = LoggerFactory.getLogger(TaskMgtServiceConvert.class);
+
+ private GeneralConvertImpl generalConvert = new GeneralConvertImpl();
+ private AAISliceService aaiSliceService;
+
+ public TaskMgtServiceConvert() {
+ this(RestfulServices.create(AAISliceService.class));
+ }
+
+ public TaskMgtServiceConvert(AAISliceService aaiSliceService) {
+ this.aaiSliceService = aaiSliceService;
+ }
+
+ void convertSlicingTaskList(SlicingTaskList targetSlicingTaskList, SOTaskRsp sourceSoTaskRsp, int pageNo,
+ int pageSize)
+ throws InvocationTargetException, IllegalAccessException {
+ if (sourceSoTaskRsp.getTask() == null) {
+ logger.error("convertSlicingTaskList: sourceSoTaskRsp.getTask() is null");
+ return;
+ }
+
+ List<SlicingTaskInfo> slicingTaskInfoList = new ArrayList<>();
+ for (SOTask soTask : sourceSoTaskRsp.getTask()) {
+ SlicingTaskInfo slicingTaskInfo = new SlicingTaskInfo();
+ BeanUtils.copyProperties(slicingTaskInfo, soTask);
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ slicingTaskInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ slicingTaskInfo.setServiceType(paramsObject.getString("ServiceProfile.sST"));
+ slicingTaskInfo.setCreateTime(soTask.getCreatedTime());
+ slicingTaskInfo.setName(paramsObject.getString("ServiceName"));
+ slicingTaskInfoList.add(slicingTaskInfo);
+ }
+ PagedResult pagedOrderList = NsmfCommonUtil.getPagedList(slicingTaskInfoList, pageNo, pageSize);
+ targetSlicingTaskList.setSlicingTaskInfoList(pagedOrderList.getPagedList());
+ targetSlicingTaskList.setRecordNumber(slicingTaskInfoList.size());
+ }
+
+ void convertTaskAuditInfo(SlicingTaskAuditInfo targetSlicingTaskAuditInfo, SOTask sourceSoTaskInfo) {
+ targetSlicingTaskAuditInfo.setTaskId(sourceSoTaskInfo.getTaskId());
+ targetSlicingTaskAuditInfo.setTaskName(sourceSoTaskInfo.getName());
+ targetSlicingTaskAuditInfo.setCreateTime(sourceSoTaskInfo.getCreatedTime());
+ targetSlicingTaskAuditInfo.setProcessingStatus(sourceSoTaskInfo.getStatus());
+
+ JSONObject paramsObject = JSON.parseObject(sourceSoTaskInfo.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskAuditInfo: paramsObject is null");
+ return;
+ }
+
+ BusinessDemandInfo businessDemandInfo = new BusinessDemandInfo();
+ convertBusinessDemandInfo(businessDemandInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setBusinessDemandInfo(businessDemandInfo);
+
+ NstInfo nstInfo = new NstInfo();
+ convertNstInfo(nstInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setNstInfo(nstInfo);
+
+ NsiAndSubNssiInfo nsiAndSubNssiInfo = new NsiAndSubNssiInfo();
+ convertNsiAndSubNssiInfo(nsiAndSubNssiInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setNsiAndSubNssiInfo(nsiAndSubNssiInfo);
+ }
+
+ void convertBusinessDemandInfo(BusinessDemandInfo targetBusinessDemandInfo, JSONObject paramsObject) {
+
+ targetBusinessDemandInfo.setServiceName(paramsObject.getString("ServiceName"));
+ targetBusinessDemandInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ targetBusinessDemandInfo.setExpDataRateDL(paramsObject.getString("ServiceProfile.expDataRateDL"));
+ targetBusinessDemandInfo.setExpDataRateUL(paramsObject.getString("ServiceProfile.expDataRateUL"));
+ targetBusinessDemandInfo.setUeMobilityLevel(paramsObject.getString("ServiceProfile.uEMobilityLevel"));
+ targetBusinessDemandInfo.setLatency(paramsObject.getString("ServiceProfile.latency"));
+
+ String useInterval = generalConvert.getUseInterval(paramsObject.getString("ServiceId"));
+ targetBusinessDemandInfo.setUseInterval(useInterval);
+
+ String coverageAreaTA = paramsObject.getString("ServiceProfile.coverageAreaTAList");
+ targetBusinessDemandInfo.setCoverageAreaTaList(generalConvert.getAreaTaList(coverageAreaTA));
+ targetBusinessDemandInfo.setActivityFactor(paramsObject.getString("ServiceProfile.activityFactor"));
+ targetBusinessDemandInfo.setResourceSharingLevel(paramsObject.getString("ServiceProfile.resourceSharingLevel"));
+ targetBusinessDemandInfo.setAreaTrafficCapDL(paramsObject.getString("ServiceProfile.areaTrafficCapDL"));
+ targetBusinessDemandInfo.setAreaTrafficCapUL(paramsObject.getString("ServiceProfile.areaTrafficCapUL"));
+ targetBusinessDemandInfo.setMaxNumberOfUEs(paramsObject.getString("ServiceProfile.maxNumberofUEs"));
+ }
+
+ void convertNstInfo(NstInfo nstInfo, JSONObject paramsObject) {
+ nstInfo.setNstId(paramsObject.getString("NSTId"));
+ nstInfo.setNstName(paramsObject.getString("NSTName"));
+ }
+
+ void convertNsiAndSubNssiInfo(NsiAndSubNssiInfo nsiAndSubNssiInfo, JSONObject paramsObject) {
+ nsiAndSubNssiInfo.setSuggestNsiId(paramsObject.getString("suggestNSIId"));
+ nsiAndSubNssiInfo.setSuggestNsiName(paramsObject.getString("suggestNSIName"));
+ nsiAndSubNssiInfo.setAnSuggestNssiId(paramsObject.getString("AN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setAnSuggestNssiName(paramsObject.getString("AN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setAn5qi(paramsObject.getString("SliceProfile.AN.5QI"));
+
+ String anCoverageAreaTA = paramsObject.getString("SliceProfile.AN.coverageAreaTAList");
+ nsiAndSubNssiInfo.setAnCoverageAreaTaList(generalConvert.getAreaTaList(anCoverageAreaTA));
+ nsiAndSubNssiInfo.setAnLatency(paramsObject.getString("SliceProfile.AN.latency"));
+ nsiAndSubNssiInfo.setAnScriptName(paramsObject.getString("AN.ScriptName"));
+
+ nsiAndSubNssiInfo.setTnSuggestNssiId(paramsObject.getString("TN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setTnSuggestNssiName(paramsObject.getString("TN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setTnLatency(paramsObject.getString("SliceProfile.TN.latency"));
+ nsiAndSubNssiInfo.setTnBandwidth(paramsObject.getString("SliceProfile.TN.bandwidth"));
+ nsiAndSubNssiInfo.setTnScriptName(paramsObject.getString("TN.ScriptName"));
+
+ nsiAndSubNssiInfo.setCnSuggestNssiId(paramsObject.getString("CN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setCnSuggestNssiName(paramsObject.getString("CN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setCnServiceSnssai(paramsObject.getString("SliceProfile.CN.sNSSAI"));
+ nsiAndSubNssiInfo.setCnResourceSharingLevel(paramsObject.getString("SliceProfile.CN.resourceSharingLevel"));
+ nsiAndSubNssiInfo.setCnUeMobilityLevel(paramsObject.getString("SliceProfile.CN.uEMobilityLevel"));
+ nsiAndSubNssiInfo.setCnLatency(paramsObject.getString("SliceProfile.CN.latency"));
+ nsiAndSubNssiInfo.setCnMaxNumberOfUes(paramsObject.getString("SliceProfile.CN.maxNumberofUEs"));
+ nsiAndSubNssiInfo.setCnActivityFactor(paramsObject.getString("SliceProfile.CN.activityFactor"));
+ nsiAndSubNssiInfo.setCnExpDataRateDl(paramsObject.getString("SliceProfile.CN.expDataRateDL"));
+ nsiAndSubNssiInfo.setCnExpDataRateUl(paramsObject.getString("SliceProfile.CN.expDataRateUL"));
+ nsiAndSubNssiInfo.setCnAreaTrafficCapDl(paramsObject.getString("SliceProfile.CN.areaTrafficCapDL"));
+ nsiAndSubNssiInfo.setCnAreaTrafficCapUl(paramsObject.getString("SliceProfile.CN.areaTrafficCapUL"));
+ nsiAndSubNssiInfo.setCnScriptName(paramsObject.getString("CN.ScriptName"));
+ }
+
+ void convertTaskAuditToSoTask(SOTask targetSoTaskInfo, SlicingTaskAuditInfo sourceSlicingTaskAuditInfo) {
+ if (sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo() == null) {
+ logger.error("convertTaskAuditToSoTask: sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo() is null");
+ return;
+ }
+
+ JSONObject jsonObject = JSONObject.parseObject(targetSoTaskInfo.getParams());
+ jsonObject.put("suggestNSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getSuggestNsiId());
+ jsonObject.put("suggestNSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getSuggestNsiName());
+ jsonObject.put("AN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnSuggestNssiId());
+ jsonObject.put("AN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnSuggestNssiName());
+ jsonObject.put("SliceProfile.AN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnLatency());
+ jsonObject.put("SliceProfile.AN.5QI", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAn5qi());
+
+ String aNCoverageAreaTAList = getAreaTaListString
+ (sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnCoverageAreaTaList(), '|');
+ jsonObject.put("SliceProfile.AN.coverageAreaTAList", aNCoverageAreaTAList);
+ jsonObject.put("AN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnScriptName());
+
+ jsonObject.put("TN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnSuggestNssiId());
+ jsonObject.put("TN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnSuggestNssiName());
+ jsonObject.put("SliceProfile.TN.bandwidth", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnBandwidth());
+ jsonObject.put("SliceProfile.TN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnLatency());
+ jsonObject.put("TN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnScriptName());
+
+ jsonObject.put("CN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnSuggestNssiId());
+ jsonObject.put("CN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnSuggestNssiName());
+ jsonObject
+ .put("SliceProfile.CN.sNSSAI", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnServiceSnssai());
+ jsonObject.put("SliceProfile.CN.resourceSharingLevel",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnResourceSharingLevel());
+ jsonObject.put("SliceProfile.CN.uEMobilityLevel",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnUeMobilityLevel());
+ jsonObject.put("SliceProfile.CN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnLatency());
+ jsonObject.put("SliceProfile.CN.maxNumberofUEs",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnMaxNumberOfUes());
+ jsonObject.put("SliceProfile.CN.activityFactor",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnActivityFactor());
+ jsonObject.put("SliceProfile.CN.expDataRateDL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnExpDataRateDl());
+ jsonObject.put("SliceProfile.CN.expDataRateUL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnExpDataRateUl());
+ jsonObject.put("SliceProfile.CN.areaTrafficCapDL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnAreaTrafficCapDl());
+ jsonObject.put("SliceProfile.CN.areaTrafficCapUL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnAreaTrafficCapUl());
+ jsonObject.put("CN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnScriptName());
+ String param = jsonObject.toJSONString();
+ targetSoTaskInfo.setParams(param);
+ }
+
+ String getAreaTaListString(List<String> anCoverageAreaTaList, char separator) {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < anCoverageAreaTaList.size(); i++) {
+ sb.append(anCoverageAreaTaList.get(i)).append(separator);
+ }
+ return sb.toString().substring(0, sb.toString().length() - 1);
+ }
+
+ void convertTaskCreationInfo(SlicingTaskCreationInfo slicingTaskCreationInfo, SOTask soTask) {
+ slicingTaskCreationInfo.setTaskId(soTask.getTaskId());
+ slicingTaskCreationInfo.setCreateTime(soTask.getCreatedTime());
+ slicingTaskCreationInfo.setProcessingStatus(soTask.getStatus());
+ slicingTaskCreationInfo.setTaskName(soTask.getName());
+
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskCreationInfo: paramsObject is null");
+ return;
+ }
+
+ BusinessDemandInfo businessDemandInfo = new BusinessDemandInfo();
+ convertCreationBusinessDemandInfo(businessDemandInfo, paramsObject);
+ slicingTaskCreationInfo.setBusinessDemandInfo(businessDemandInfo);
+
+ NstInfo nstInfo = new NstInfo();
+ convertNstInfo(nstInfo, paramsObject);
+ slicingTaskCreationInfo.setNstInfo(nstInfo);
+ }
+
+ void convertCreationBusinessDemandInfo(BusinessDemandInfo targetBusinessDemandInfo, JSONObject paramsObject) {
+ targetBusinessDemandInfo.setServiceName(paramsObject.getString("ServiceName"));
+ targetBusinessDemandInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ targetBusinessDemandInfo.setExpDataRateDL(paramsObject.getString("ServiceProfile.expDataRateDL"));
+ targetBusinessDemandInfo.setExpDataRateUL(paramsObject.getString("ServiceProfile.expDataRateUL"));
+ targetBusinessDemandInfo.setUeMobilityLevel(paramsObject.getString("ServiceProfile.uEMobilityLevel"));
+ targetBusinessDemandInfo.setLatency(paramsObject.getString("ServiceProfile.latency"));
+ String useInterval = generalConvert.getUseInterval(paramsObject.getString("ServiceId"));
+ targetBusinessDemandInfo.setUseInterval(useInterval);
+
+ String coverageAreaTA = paramsObject.getString("ServiceProfile.coverageAreaTAList");
+ targetBusinessDemandInfo.setCoverageAreaTaList(generalConvert.getAreaTaList(coverageAreaTA));
+ targetBusinessDemandInfo.setActivityFactor(paramsObject.getString("ServiceProfile.activityFactor"));
+ targetBusinessDemandInfo.setResourceSharingLevel(paramsObject.getString("ServiceProfile.resourceSharingLevel"));
+ targetBusinessDemandInfo.setAreaTrafficCapDL(paramsObject.getString("ServiceProfile.areaTrafficCapDL"));
+ targetBusinessDemandInfo.setAreaTrafficCapUL(paramsObject.getString("ServiceProfile.areaTrafficCapUL"));
+ targetBusinessDemandInfo.setMaxNumberOfUEs(paramsObject.getString("ServiceProfile.maxNumberofUEs"));
+ }
+
+ void convertTaskCreationProgress(SlicingTaskCreationProgress slicingTaskCreationProgress, SOTask soTask) {
+
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskCreationProgress: paramsObject is null");
+ return;
+ }
+
+ String anProgress = paramsObject.getString("AN.progress");
+ slicingTaskCreationProgress.setAnProgress(anProgress);
+
+ String tnProgress = paramsObject.getString("TN.progress");
+ slicingTaskCreationProgress.setTnProgress(tnProgress);
+
+ String cnProgress = paramsObject.getString("CN.progress");
+ slicingTaskCreationProgress.setCnProgress(cnProgress);
+
+ String anStatus = paramsObject.getString("AN.status");
+ slicingTaskCreationProgress.setAnStatus(anStatus);
+
+ String tnStatus = paramsObject.getString("TN.status");
+ slicingTaskCreationProgress.setTnStatus(tnStatus);
+
+ String cnStatus = paramsObject.getString("CN.status");
+ slicingTaskCreationProgress.setCnStatus(cnStatus);
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java
new file mode 100644
index 00000000..6c2a10fb
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import java.lang.reflect.Type;
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import org.onap.usecaseui.server.bean.nsmf.common.ResultHeader;
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationProgress;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskList;
+import org.onap.usecaseui.server.constant.nsmf.NsmfCodeConstant;
+
+import org.onap.usecaseui.server.service.nsmf.TaskMgtService;
+import org.onap.usecaseui.server.service.slicingdomain.so.SOSliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskRsp;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.stereotype.Service;
+import retrofit2.Response;
+
+@Service("TaskMgtService")
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+public class TaskMgtServiceImpl implements TaskMgtService {
+
+ private static final Logger logger = LoggerFactory.getLogger(TaskMgtServiceImpl.class);
+ private TaskMgtServiceConvert taskMgtServiceConvert = new TaskMgtServiceConvert();
+
+ private SOSliceService soSliceService;
+
+ public TaskMgtServiceImpl() {
+ this(RestfulServices.create(SOSliceService.class));
+ }
+
+ public TaskMgtServiceImpl(SOSliceService soSliceService) {
+ this.soSliceService = soSliceService;
+ }
+
+ @Override
+ public ServiceResult querySlicingTask(int pageNo, int pageSize) {
+
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskList slicingTaskList = new SlicingTaskList();
+ SOTaskRsp soTaskRsp = new SOTaskRsp();
+ String resultMsg;
+
+ try {
+ Response<JSONArray> response = this.soSliceService.listTask().execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ Type type = new TypeToken<List<SOTask>>() {
+ }.getType();
+ soTaskRsp.setTask(gson.fromJson(response.body().toString(), type));
+ logger.info("querySlicingTask: listTask response is:{}", response.body().toString());
+ taskMgtServiceConvert.convertSlicingTaskList(slicingTaskList, soTaskRsp, pageNo, pageSize);
+ resultMsg = "5G slicing task query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(
+ String.format("querySlicingTask: Can not get slicingTaskList[code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task result query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingTask: 5G slicing task result query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult querySlicingTaskByStatus(String status, int pageNo, int pageSize) {
+
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskList slicingTaskList = new SlicingTaskList();
+ SOTaskRsp soTaskRsp = new SOTaskRsp();
+ String resultMsg;
+ try {
+ Response<JSONArray> response = this.soSliceService.listTaskByStage(status).execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ Type type = new TypeToken<List<SOTask>>() {
+ }.getType();
+ soTaskRsp.setTask(gson.fromJson(response.body().toString(), type));
+ logger.info("querySlicingTaskByStatus: listTaskByStage response is:{}", response.body().toString());
+ taskMgtServiceConvert.convertSlicingTaskList(slicingTaskList, soTaskRsp, pageNo, pageSize);
+ resultMsg = "5G slicing task query based on status result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("querySlicingTaskByStatus: Can not get slicingTaskList[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query based on status failed. ";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task result query based on status failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingTaskByStatus: 5G slicing task result query based on status has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskAuditInfo(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskAuditInfo slicingTaskAuditInfo = new SlicingTaskAuditInfo();
+ String resultMsg = "";
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskById(taskId).execute();
+ if (response.isSuccessful()) {
+ SOTask soTaskInfo = response.body();
+ Gson gson = new Gson();
+ logger.info("queryTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTaskInfo).toString());
+ taskMgtServiceConvert.convertTaskAuditInfo(slicingTaskAuditInfo, soTaskInfo);
+ // return normal result code
+ resultMsg = "5G slicing task configure audit information query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("queryTaskAuditInfo: Can not get slicingTaskAuditInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task configure audit information query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task configure audit information query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryTaskAuditInfo: 5G slicing task configure audit information query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskAuditInfo);
+ return serviceResult;
+ }
+
+ public ServiceResult updateTaskAuditInfo(SlicingTaskAuditInfo slicingTaskAuditInfo) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ String resultMsg;
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskById(slicingTaskAuditInfo.getTaskId()).execute();
+ if (response.isSuccessful()) {
+ SOTask soTaskInfo = response.body();
+ Gson gson = new Gson();
+ logger.info("updateTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTaskInfo).toString());
+ taskMgtServiceConvert.convertTaskAuditToSoTask(soTaskInfo, slicingTaskAuditInfo);
+
+ String jsonstr = JSON.toJSONString(soTaskInfo);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr.toString());
+ Response<ResponseBody> updateResponse = soSliceService
+ .updateService(slicingTaskAuditInfo.getTaskId(), requestBody).execute();
+
+ if (updateResponse.isSuccessful()) {
+ Response<ResponseBody> commitResponse = this.soSliceService
+ .commitTask(slicingTaskAuditInfo.getTaskId()).execute();
+ if (commitResponse.isSuccessful()) {
+ resultMsg = "5G slicing task submit result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("updateTaskAuditInfo: Can not commitTask [code={}, message={}]",
+ commitResponse.code(),
+ commitResponse.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } else {
+ logger.error(String
+ .format("updateTaskAuditInfo: Can not updateService [code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } else {
+ logger.error(String.format("updateTaskAuditInfo: Can not get slicingTaskAuditInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task submit failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("updateTaskAuditInfo: 5G slicing task submit has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskCreationInfo(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskCreationInfo slicingTaskCreationInfo = new SlicingTaskCreationInfo();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskByIdD(taskId).execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ SOTask soTask = response.body();
+ logger.info("updateTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTask).toString());
+ taskMgtServiceConvert.convertTaskCreationInfo(slicingTaskCreationInfo, soTask);
+ // return normal result code
+ resultMsg = "5G slicing task creation infomation query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("updateTaskAuditInfo: Can not get slicingTaskCreationInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task creation infomation query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task creation infomation query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("updateTaskAuditInfo: 5G slicing task creation infomation query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskCreationInfo);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskCreationProgress(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskCreationProgress slicingTaskCreationProgress = new SlicingTaskCreationProgress();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskByIdD(taskId).execute();
+ if (response.isSuccessful()) {
+ SOTask soTask = response.body();
+ Gson gson = new Gson();
+ logger.info("queryTaskCreationProgress: getTaskById response is:{}", gson.toJson(soTask).toString());
+ taskMgtServiceConvert.convertTaskCreationProgress(slicingTaskCreationProgress, soTask);
+ resultMsg = "5G slicing task operation progress query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryTaskCreationProgress: Can not get slicingTaskCreationProgress[code={}, message={}]",
+ response.code(), response.message()));
+ resultMsg = "5G slicing task operation progress query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task operation progress query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryTaskCreationProgress: 5G slicing task operation progress has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskCreationProgress);
+ return serviceResult;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java b/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java
new file mode 100644
index 00000000..3012a723
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.util.nsmf;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.onap.usecaseui.server.bean.nsmf.common.PagedResult;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+
+
+public class NsmfCommonUtil {
+
+ public static String timestamp2Time(String timeStamp) throws ParseException {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(NsmfParamConstant.DATE_FORMAT);
+ Date date = simpleDateFormat.parse(timeStamp);
+ long time = date.getTime();
+ return String.valueOf(time);
+ }
+
+ public static String time2Timestamp(String time) {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(NsmfParamConstant.DATE_FORMAT);
+ long longTime = new Long(time);
+ Date date = new Date(longTime);
+ return simpleDateFormat.format(date);
+ }
+
+ public static <T> PagedResult getPagedList(List<T> list, int pageNo, int pageSize) {
+ if (list == null || pageNo < 1 || (pageNo - 1) * pageSize > list.size()) {
+ return new PagedResult(0, Collections.EMPTY_LIST);
+ }
+ list = list.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+ return new PagedResult(list.size(), list );
+ }
+}