1 package org.openecomp.portalapp.widget.service.impl;
6 import javax.transaction.Transactional;
8 import org.hibernate.Criteria;
9 import org.hibernate.Query;
10 import org.hibernate.Session;
11 import org.hibernate.SessionFactory;
12 import org.hibernate.Transaction;
13 import org.hibernate.criterion.Restrictions;
14 import org.openecomp.portalapp.widget.domain.MicroserviceData;
15 import org.openecomp.portalapp.widget.domain.RoleApp;
16 import org.openecomp.portalapp.widget.domain.WidgetCatalog;
17 import org.openecomp.portalapp.widget.service.WidgetCatalogService;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
20 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.context.annotation.EnableAspectJAutoProxy;
22 import org.springframework.stereotype.Service;
24 @Service("widgetCatalogService")
26 @org.springframework.context.annotation.Configuration
27 @EnableAspectJAutoProxy
28 public class WidgetCatalogServiceImpl implements WidgetCatalogService {
30 private static final Logger logger = LoggerFactory.getLogger(WidgetCatalogServiceImpl.class);
33 private SessionFactory sessionFactory;
35 @SuppressWarnings("unchecked")
38 public List<WidgetCatalog> getWidgetCatalog(){
39 Session session = sessionFactory.getCurrentSession();
40 Criteria criteria = session.createCriteria(WidgetCatalog.class)
41 .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
42 List<WidgetCatalog> widgets = criteria.list();
43 logger.debug("WidgetCatalogServiceImpl.getWidgetCatalog: result={}", widgets);
47 @SuppressWarnings("unchecked")
49 public List<WidgetCatalog> getUserWidgetCatalog(String loginName){
50 Session session = sessionFactory.getCurrentSession();
51 StringBuilder sql = new StringBuilder()
54 .append(" select userWidgets.widget_id, userWidgets.wdg_name, userWidgets.wdg_desc, b.x, b.status_cd, b.y, b.height, b.width from ")
56 .append(" select distinct w.widget_id, w.wdg_name, w.wdg_desc from ")
57 .append(" ep_widget_catalog w, ")
58 .append(" ep_widget_catalog_role wr, ")
59 .append(" fn_user_role ur, ")
60 .append(" fn_app app, ")
61 .append(" fn_user u ")
63 .append(" w.widget_id = wr.WIDGET_ID and ")
64 .append(" ur.app_id = app.app_id and ")
65 .append(" app.enabled = 'Y' and ")
66 .append(" wr.role_id = ur.role_id and ")
67 .append(" ur.user_id = u.user_id and ")
68 .append(" u.login_id = '" + loginName + "' and (w.all_user_flag = 'N' or w.all_user_flag is null) ")
70 .append(" union all ")
73 .append(" select distinct w.widget_id, w.wdg_name, w.wdg_desc from ")
74 .append(" ep_widget_catalog w ")
75 .append(" where w.all_user_flag = 'Y' ")
77 .append(" ) userWidgets ")
79 .append(" left join ")
82 .append(" select case when pers.user_id is null then sel.user_id else pers.user_id end as 'user_id', case when sel.widget_id is null then ")
83 .append(" pers.widget_id else sel.widget_id end as 'widget_id', pers.x, sel.status_cd, pers.y, pers.height, pers.width ")
84 .append(" from (select * from ep_pers_user_widget_placement where user_id = (select user_id from fn_user where login_id = '" + loginName + "')) pers ")
85 .append(" left outer join ")
86 .append(" (select * from ep_pers_user_widget_sel where user_id = (select user_id from fn_user where login_id = '" + loginName + "')) sel ")
87 .append(" on (pers.user_id = sel.user_id and pers.widget_id = sel.widget_id) ")
91 .append(" select case when pers.user_id is null then sel.user_id else pers.user_id end as 'user_id', case when sel.widget_id is null ")
92 .append(" then pers.widget_id else sel.widget_id end as 'widget_id', pers.x, sel.status_cd, pers.y, pers.height, pers.width ")
93 .append(" from (select * from ep_pers_user_widget_placement where user_id = (select user_id from fn_user where login_id = '" + loginName + "')) pers ")
94 .append(" right outer join ")
95 .append(" (select * from ep_pers_user_widget_sel where user_id = (select user_id from fn_user where login_id = '" + loginName + "')) sel ")
96 .append(" on (pers.user_id = sel.user_id and pers.widget_id = sel.widget_id) ")
98 .append(" order by user_id, widget_id ")
101 .append(" (userWidgets.widget_id = b.widget_id) order by b.x; ");
105 Query query = session.createSQLQuery(sql.toString());
106 List<WidgetCatalog> widgets = query.list();
107 logger.debug("WidgetCatalogServiceImpl.getUserWidgetCatalog: result size={}", widgets);
112 public WidgetCatalog getWidgetCatalog(Long widgetCatalogId) {
113 Session session = sessionFactory.getCurrentSession();
114 Transaction tx = session.beginTransaction();
115 WidgetCatalog widget = (WidgetCatalog) session.get(WidgetCatalog.class, widgetCatalogId);
117 logger.debug("WidgetCatalogServiceImpl.getWidgetCatalog: getting widget={}", widget);
122 public void deleteWidgetCatalog(long widgetCatalogId) {
123 logger.debug("WidgetCatalogServiceImpl.deleteWidgetCatalog: deleting the widget with widgetId={}", widgetCatalogId);
124 WidgetCatalog widget = getWidgetCatalog(widgetCatalogId);
126 logger.error("No widget found in database while performing WidgetCatalogServiceImpl.deleteWidgetCatalog.");
129 Session session = sessionFactory.getCurrentSession();
130 Transaction tx = session.beginTransaction();
131 Query query = session.createSQLQuery("delete from ep_pers_user_widget_sel where widget_id = :widgetId ").setParameter("widgetId", widgetCatalogId);
132 query.executeUpdate();
133 query = session.createSQLQuery("delete from ep_pers_user_widget_placement where widget_id = :widgetId ").setParameter("widgetId", widgetCatalogId);
134 query.executeUpdate();
135 query = session.createSQLQuery("delete from ep_widget_catalog_files where widget_id = :widgetId ").setParameter("widgetId", widgetCatalogId);
136 query.executeUpdate();
137 query = session.createSQLQuery("delete from ep_widget_catalog_parameter where widget_id = :widgetId ").setParameter("widgetId", widgetCatalogId);
138 query.executeUpdate();
139 session.delete(widget);
144 public long saveWidgetCatalog(WidgetCatalog newWidgetCatalog) {
147 if(newWidgetCatalog.getAllowAllUser().equals("1"))
148 newWidgetCatalog.setAllowAllUser("Y");
150 newWidgetCatalog.setAllowAllUser("N");
152 logger.debug("WidgetCatalogServiceImpl.saveWidgetCatalog: widget={}", newWidgetCatalog);
153 Session session = sessionFactory.openSession();
154 Transaction tx = session.beginTransaction();
155 session.save(newWidgetCatalog);
159 updateAppId(newWidgetCatalog.getId(), newWidgetCatalog.getWidgetRoles());
162 logger.error("Exception occurred while performing WidgetCatalogServiceImpl.saveWidgetCatalog in widget microservices. Details:" + e.getMessage());
164 return newWidgetCatalog.getId();
168 public void updateWidgetCatalog(Long widgetCatalogId, WidgetCatalog newWidgetCatalog) {
169 logger.debug("WidgetCatalogServiceImpl.updateWidgetCatalog: widget={}", newWidgetCatalog);
170 WidgetCatalog oldWidget = getWidgetCatalog(widgetCatalogId);
172 if (newWidgetCatalog.getAllowAllUser().equals("1"))
173 newWidgetCatalog.setAllowAllUser("Y");
175 newWidgetCatalog.setAllowAllUser("N");
177 newWidgetCatalog.setId(widgetCatalogId);
178 newWidgetCatalog.setServiceId(oldWidget.getServiceId());
179 Session session = sessionFactory.openSession();
180 Transaction tx = session.beginTransaction();
181 session.update(newWidgetCatalog);
185 updateAppId(newWidgetCatalog.getId(), newWidgetCatalog.getWidgetRoles());
187 logger.error("Exception occurred while performing WidgetCatalogServiceImpl.updateWidgetCatalog in widget microservices. Details:" + e.getMessage());
193 public Long getServiceIdByWidget(Long widgetCatalogId) {
194 Session session = sessionFactory.getCurrentSession();
195 WidgetCatalog widget = (WidgetCatalog) session.get(WidgetCatalog.class, widgetCatalogId);
196 logger.debug("WidgetCatalogServiceImpl.getServiceIdByWidget: result={}", widget);
197 return widget.getServiceId();
201 public List<WidgetCatalog> getWidgetsByServiceId(Long serviceId) {
202 Session session = sessionFactory.getCurrentSession();
203 Criteria criteria = session.createCriteria(WidgetCatalog.class)
204 .add(Restrictions.eq("serviceId", serviceId))
205 .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
206 List<WidgetCatalog> widgets = criteria.list();
207 logger.debug("WidgetCatalogServiceImpl.getWidgetCatalog: result={}", widgets);
215 private void updateAppId(long widgetId, Set<RoleApp> roles){
216 Session session = sessionFactory.openSession();
217 for(RoleApp role: roles){
218 String sql = "UPDATE ep_widget_catalog_role SET app_id = " + role.getApp().getAppId() + " WHERE widget_id = " + widgetId + " AND ROLE_ID = " + role.getRoleId() ;
219 Query query = session.createSQLQuery(sql);
220 query.executeUpdate();
227 public boolean getWidgetIdByName(String newWidgetName) {
228 Session session = sessionFactory.openSession();
229 Criteria criteria = session.createCriteria(WidgetCatalog.class)
230 .add(Restrictions.eq("name", newWidgetName))
231 .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
233 List<MicroserviceData> widgets = criteria.list();
234 logger.debug("WidgetCatalogServiceImpl.getWidgetIdByName: result={}", widgets);
238 return (widgets.size() > 0) ? true : false;