2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.daoImp;
23 import java.util.ArrayList;
24 import java.util.List;
27 import javax.script.SimpleBindings;
29 import org.hibernate.Criteria;
30 import org.hibernate.Query;
31 import org.hibernate.Session;
32 import org.hibernate.SessionFactory;
33 import org.hibernate.Transaction;
34 import org.hibernate.criterion.Conjunction;
35 import org.hibernate.criterion.Disjunction;
36 import org.hibernate.criterion.Projections;
37 import org.hibernate.criterion.Restrictions;
38 import org.onap.policy.common.logging.flexlogger.FlexLogger;
39 import org.onap.policy.common.logging.flexlogger.Logger;
40 import org.onap.policy.rest.dao.CommonClassDao;
41 import org.onap.policy.rest.jpa.PolicyRoles;
42 import org.onap.policy.xacml.api.XACMLErrorConstants;
43 import org.springframework.beans.factory.annotation.Autowired;
44 import org.springframework.stereotype.Service;
46 @Service("CommonClassDao")
47 public class CommonClassDaoImpl implements CommonClassDao{
49 private static final Logger LOGGER = FlexLogger.getLogger(CommonClassDaoImpl.class);
50 private static SessionFactory sessionfactory;
52 public static SessionFactory getSessionfactory() {
53 return sessionfactory;
56 public static void setSessionfactory(SessionFactory sessionfactory) {
57 CommonClassDaoImpl.sessionfactory = sessionfactory;
61 private CommonClassDaoImpl(SessionFactory sessionfactory){
62 CommonClassDaoImpl.sessionfactory = sessionfactory;
65 public CommonClassDaoImpl(){
71 @SuppressWarnings({ "unchecked", "rawtypes" })
73 public List<Object> getData(Class className) {
74 Session session = sessionfactory.openSession();
75 List<Object> data = null;
77 Criteria cr = session.createCriteria(className);
80 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
85 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
92 @SuppressWarnings({ "rawtypes", "unchecked" })
94 public List<Object> getDataById(Class className, String columnName, String key) {
95 Session session = sessionfactory.openSession();
96 List<Object> data = null;
98 Criteria cr = session.createCriteria(className);
99 if(columnName.contains(":") && key.contains(":")){
100 String[] columns = columnName.split(":");
101 String[] keys = key.split(":");
102 for(int i=0; i < columns.length; i++){
103 cr.add(Restrictions.eq(columns[i], keys[i]));
106 cr.add(Restrictions.eq(columnName, key));
109 } catch (Exception e) {
110 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
114 }catch(Exception e1){
115 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
122 public void save(Object entity) {
123 Session session = sessionfactory.openSession();
124 Transaction tx = session.beginTransaction();
126 session.persist(entity);
129 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Saving data to Table"+e);
133 }catch(Exception e1){
134 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
141 public void delete(Object entity) {
142 Session session = sessionfactory.openSession();
143 Transaction tx = session.beginTransaction();
145 session.delete(entity);
148 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Deleting data from Table"+e);
152 }catch(Exception e1){
153 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
161 public void update(Object entity) {
162 Session session = sessionfactory.openSession();
163 Transaction tx = session.beginTransaction();
165 session.update(entity);
168 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating data to Table"+e);
172 }catch(Exception e1){
173 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
180 @SuppressWarnings({ "unchecked", "rawtypes" })
182 public List<Object> checkDuplicateEntry(String value, String columnName, Class className) {
183 Session session = sessionfactory.openSession();
184 Transaction tx = session.beginTransaction();
185 List<Object> data = null;
186 String[] columnNames = null;
187 if(columnName != null && columnName.contains(":")){
188 columnNames = columnName.split(":");
190 String[] values = null;
191 if(value != null && value.contains(":")){
192 values = value.split(":");
195 Criteria cr = session.createCriteria(className);
196 if(columnNames != null && values != null && columnNames.length == values.length){
197 for (int i = 0; i < columnNames.length; i++){
198 cr.add(Restrictions.eq(columnNames[i],values[i]));
201 cr.add(Restrictions.eq(columnName,value));
205 } catch (Exception e) {
206 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for Table"+e + className);
210 }catch(Exception e1){
211 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
218 @SuppressWarnings("unchecked")
220 public List<PolicyRoles> getUserRoles() {
221 Session session = sessionfactory.openSession();
222 Transaction tx = session.beginTransaction();
223 List<PolicyRoles> rolesData = null;
225 Criteria cr = session.createCriteria(PolicyRoles.class);
226 Disjunction disjunction = Restrictions.disjunction();
227 Conjunction conjunction1 = Restrictions.conjunction();
228 conjunction1.add(Restrictions.eq("role", "admin"));
229 Conjunction conjunction2 = Restrictions.conjunction();
230 conjunction2.add(Restrictions.eq("role", "editor"));
231 Conjunction conjunction3 = Restrictions.conjunction();
232 conjunction3.add(Restrictions.eq("role", "guest"));
233 disjunction.add(conjunction1);
234 disjunction.add(conjunction2);
235 disjunction.add(conjunction3);
236 rolesData = cr.add(disjunction).list();
238 } catch (Exception e) {
239 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying PolicyRoles Table"+e);
243 }catch(Exception e1){
244 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
252 public List<Object> checkExistingGroupListforUpdate(String arg0, String arg1) {
258 public void deleteAll() {}
261 @SuppressWarnings("unchecked")
263 public List<Object> getDataByQuery(String query, SimpleBindings params) {
264 Session session = sessionfactory.openSession();
265 Transaction tx = session.beginTransaction();
266 List<Object> data = null;
268 Query hbquery = session.createQuery(query);
269 for (Map.Entry<String, Object> paramPair : params.entrySet()) {
270 hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
272 data = hbquery.list();
274 } catch (Exception e) {
275 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
280 }catch(Exception e1){
281 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
289 @SuppressWarnings("rawtypes")
291 public Object getEntityItem(Class className, String columnName, String key) {
292 Session session = sessionfactory.openSession();
293 Transaction tx = session.beginTransaction();
296 Criteria cr = session.createCriteria(className);
297 if(columnName.contains(":") && key.contains(":")){
298 String[] columns = columnName.split(":");
299 String[] keys = key.split(":");
300 for(int i=0; i < columns.length; i++){
301 cr.add(Restrictions.eq(columns[i], keys[i]));
304 cr.add(Restrictions.eq(columnName, key));
306 data = cr.list().get(0);
308 } catch (Exception e) {
309 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
313 }catch(Exception e1){
314 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
322 public void updateClAlarms(String arg0, String arg1) {}
326 public void updateClYaml(String arg0, String arg1) {}
330 public void updateQuery(String query) {
331 Session session = sessionfactory.openSession();
332 Transaction tx = session.beginTransaction();
334 Query hbquery = session.createQuery(query);
335 hbquery.executeUpdate();
337 } catch (Exception e) {
338 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating Database Table"+e);
342 }catch(Exception e1){
343 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
350 @SuppressWarnings({ "rawtypes", "unchecked" })
352 public List<String> getDataByColumn(Class className, String columnName) {
353 Session session = sessionfactory.openSession();
354 List<String> data = null;
356 Criteria cr = session.createCriteria(className);
357 cr.setProjection(Projections.property(columnName));
360 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
365 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
372 @SuppressWarnings({ "rawtypes", "unchecked" })
374 public List<Object> getMultipleDataOnAddingConjunction(Class className, String columnName, List<String> data) {
375 Session session = sessionfactory.openSession();
376 Transaction tx = session.beginTransaction();
377 List<Object> entityData = null;
379 Criteria cr = session.createCriteria(className);
380 Disjunction disjunction = Restrictions.disjunction();
381 List<Conjunction> conjunctionList = new ArrayList<>();
382 String[] columNames = columnName.split(":");
383 for(int i =0; i < data.size(); i++){
384 String[] entiySplit = data.get(i).split(":");
385 Conjunction conjunction = Restrictions.conjunction();
386 conjunction.add(Restrictions.eq(columNames[0], entiySplit[0]));
387 conjunction.add(Restrictions.eq(columNames[1], entiySplit[1]));
388 conjunctionList.add(conjunction);
390 for(int j =0 ; j < conjunctionList.size(); j++){
391 disjunction.add(conjunctionList.get(j));
393 entityData = cr.add(disjunction).list();
395 } catch (Exception e) {
396 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table" +className +e);
400 }catch(Exception e1){
401 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);