diff options
Diffstat (limited to 'server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java')
-rw-r--r-- | server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java | 162 |
1 files changed, 161 insertions, 1 deletions
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java index 3c04ec21..c54e591c 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/intent/impl/IntentInstanceServiceImpl.java @@ -22,12 +22,18 @@ import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; +import org.onap.usecaseui.server.bean.csmf.ServiceCreateResult; +import org.onap.usecaseui.server.bean.csmf.SlicingOrder; import org.onap.usecaseui.server.bean.intent.InstancePerformance; import org.onap.usecaseui.server.bean.intent.CCVPNInstance; +import org.onap.usecaseui.server.bean.intent.IntentInstance; +import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult; import org.onap.usecaseui.server.constant.IntentConstant; +import org.onap.usecaseui.server.service.csmf.SlicingService; import org.onap.usecaseui.server.service.intent.IntentApiService; import org.onap.usecaseui.server.service.intent.IntentInstanceService; import org.onap.usecaseui.server.service.lcm.domain.so.SOService; +import org.onap.usecaseui.server.service.nsmf.ResourceMgtService; import org.onap.usecaseui.server.util.Page; import org.onap.usecaseui.server.util.RestfulServices; import org.onap.usecaseui.server.util.UuiCommonUtil; @@ -39,6 +45,7 @@ import org.springframework.stereotype.Service; import retrofit2.Call; import retrofit2.Response; +import javax.annotation.Resource; import javax.transaction.Transactional; import java.io.*; import java.text.SimpleDateFormat; @@ -56,6 +63,11 @@ public class IntentInstanceServiceImpl implements IntentInstanceService { @Autowired private SessionFactory sessionFactory; + @Resource(name = "ResourceMgtService") + private ResourceMgtService resourceMgtService; + + @Resource(name = "SlicingService") + private SlicingService slicingService; private IntentApiService intentApiService; @@ -151,7 +163,7 @@ public class IntentInstanceServiceImpl implements IntentInstanceService { } @Override - public int createIntentInstance(CCVPNInstance instance) { + public int createCCVPNInstance(CCVPNInstance instance) { Session session = getSession(); Transaction tx = null; try{ @@ -711,6 +723,154 @@ public class IntentInstanceServiceImpl implements IntentInstanceService { intentApiService.addCustomer(globalCustomerId, requestBody).execute(); } + @Override + public IntentInstance createIntentInstance(Object body,String businessInstanceId, String businessInstance, String type) { + IntentInstance instance = new IntentInstance(); + if (IntentConstant.MODEL_TYPE_CCVPN.equals(type)) { + assembleIntentInstanceFormCCVPNInfo(instance, body); + } + else if (IntentConstant.MODEL_TYPE_5GS.equals(type)) { + assembleIntentInstanceFormSliceInfo(instance, body); + } + instance.setIntentSource(type); + instance.setBusinessInstanceId(businessInstanceId); + instance.setBusinessInstance(businessInstance); + Session session = getSession(); + Transaction tx = null; + try{ + tx = session.beginTransaction(); + session.save(instance); + tx.commit(); + return instance; + } catch (Exception e) { + if (tx != null) { + tx.rollback(); + } + logger.error("createIntentInstance Details:" + e.getMessage()); + return null; + } finally { + session.close(); + } + } + + private IntentInstance assembleIntentInstanceFormCCVPNInfo(IntentInstance instance, Object body) { + JSONObject jsonObject = new JSONObject((Map) body); + String intent_content = jsonObject.getString("intentContent"); + jsonObject.remove("intentContent"); + instance.setIntentConfig(jsonObject.toJSONString()); + instance.setIntentContent(intent_content); + instance.setIntentName(jsonObject.getString("name")); + return instance; + } + + private IntentInstance assembleIntentInstanceFormSliceInfo(IntentInstance instance, Object body) { + JSONObject jsonObject = new JSONObject((Map) body); + JSONObject slicingOrderInfo = jsonObject.getJSONObject("slicing_order_info"); + String intent_content = slicingOrderInfo.getString("intentContent"); + slicingOrderInfo.remove("intentContent"); + instance.setIntentConfig(slicingOrderInfo.toJSONString()); + instance.setIntentContent(intent_content); + instance.setIntentName(slicingOrderInfo.getString("name")); + return instance; + } + + + @Override + public void deleteIntent(int id) { + Transaction tx = null; + Session session = getSession(); + try { + IntentInstance intentInstance = (IntentInstance)session.createQuery("from IntentInstance where id = :id") + .setParameter("id", id).uniqueResult(); + if (IntentConstant.MODEL_TYPE_CCVPN.equals(intentInstance.getIntentSource())) { + deleteIntentInstance(intentInstance.getBusinessInstanceId()); + } else { + resourceMgtService.terminateSlicingService(intentInstance.getBusinessInstanceId()); + } + + + tx = session.beginTransaction(); + session.delete(intentInstance); + tx.commit(); + logger.info("delete IntentInstance OK, id=" + intentInstance.getId()); + } catch (Exception e) { + if(tx!=null){ + tx.rollback(); + } + logger.error("delete IntentInstance occur exception:"+e); + + } finally { + session.close(); + } + } + + @Override + public void verifyIntent(int id) { + Session session = getSession(); + IntentInstance instance = new IntentInstance(); + try { + String hql = "from IntentInstance where id = :id"; + Query query = session.createQuery(hql).setParameter("id", id); + instance = (IntentInstance) query.uniqueResult(); + + } catch (Exception e) { + logger.error("verifyIntentInstance error. Details:" + e.getMessage()); + } finally { + session.close(); + } + } + + @Override + public Page<IntentInstance> getIntentInstanceList(int currentPage, int pageSize) { + Page<IntentInstance> page = new Page<IntentInstance>(); + int allRow = getIntentInstanceAllCount(); + int offset = page.countOffset(currentPage, pageSize); + Session session = getSession(); + try{ + String hql = "from IntentInstance order by id"; + Query query = session.createQuery(hql); + query.setFirstResult(offset); + query.setMaxResults(pageSize); + List<IntentInstance> list= query.list(); + page.setPageNo(currentPage); + page.setPageSize(pageSize); + page.setTotalRecords(allRow); + page.setList(list); + return page; + } catch (Exception e) { + logger.error("exception occurred while performing IntentInstanceServiceImpl getIntentInstanceList. Details:" + e.getMessage()); + return null; + } finally { + session.close(); + } + } + + @Override + public ServiceResult createSlicingServiceWithIntent(Object slicingOrderBody) { + + SlicingOrder slicingOrder = JSONObject.parseObject(JSONObject.toJSONString(slicingOrderBody), SlicingOrder.class); + ServiceResult serviceResult = slicingService.createSlicingService(slicingOrder); + ServiceCreateResult createResult = (ServiceCreateResult) serviceResult.getResult_body(); + + createIntentInstance(slicingOrderBody,createResult.getService_id(), slicingOrder.getSlicing_order_info().getName(), IntentConstant.MODEL_TYPE_5GS); + return serviceResult; + } + + public int getIntentInstanceAllCount() { + Session session = getSession(); + try{ + String count="select count(*) from IntentInstance"; + Query query = session.createQuery(count); + long q=(long)query.uniqueResult(); + return (int)q; + } catch (Exception e) { + logger.error("exception occurred while performing IntentInstanceServiceImpl getAllCount. Details:" + e.getMessage()); + return -1; + } finally { + session.close(); + } + } + public void addSubscription() throws IOException { Properties environment = getProperties(); String globalCustomerId = environment.getProperty("ccvpn.globalCustomerId"); |