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=========================================================
20 package org.onap.policy.rest.daoimpl;
22 import java.util.ArrayList;
23 import java.util.List;
26 import javax.script.SimpleBindings;
28 import org.hibernate.Criteria;
29 import org.hibernate.HibernateException;
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.Component;
45 import org.springframework.stereotype.Service;
48 public class PolicyValidationDaoImpl implements CommonClassDao{
50 private static final Logger LOGGER = FlexLogger.getLogger(PolicyValidationDaoImpl.class);
51 private static SessionFactory sessionfactory;
53 public static SessionFactory getSessionfactory() {
54 return sessionfactory;
57 public static void setSessionfactory(SessionFactory sessionfactory) {
58 PolicyValidationDaoImpl.sessionfactory = sessionfactory;
62 private PolicyValidationDaoImpl(SessionFactory sessionfactory){
63 PolicyValidationDaoImpl.sessionfactory = sessionfactory;
66 public PolicyValidationDaoImpl(){
70 @SuppressWarnings({ "unchecked", "rawtypes" })
72 public List<Object> getData(Class className) {
73 Session session = sessionfactory.openSession();
74 List<Object> data = null;
76 Criteria cr = session.createCriteria(className);
79 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
84 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
91 @SuppressWarnings({ "rawtypes", "unchecked" })
93 public List<Object> getDataById(Class className, String columnName, String key) {
94 Session session = sessionfactory.openSession();
95 List<Object> data = null;
97 Criteria cr = session.createCriteria(className);
98 if(columnName.contains(":") && key.contains(":")){
99 String[] columns = columnName.split(":");
100 String[] keys = key.split(":");
101 for(int i=0; i < columns.length; i++){
102 cr.add(Restrictions.eq(columns[i], keys[i]));
105 cr.add(Restrictions.eq(columnName, key));
108 } catch (Exception e) {
109 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
113 }catch(Exception e1){
114 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
121 public void save(Object entity) {
122 Session session = sessionfactory.openSession();
123 Transaction tx = session.beginTransaction();
125 session.persist(entity);
128 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Saving data to Table"+e);
132 }catch(Exception e1){
133 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
140 public void delete(Object entity) {
141 Session session = sessionfactory.openSession();
142 Transaction tx = session.beginTransaction();
144 session.delete(entity);
147 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Deleting data from Table"+e);
151 }catch(Exception e1){
152 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
160 public void update(Object entity) {
161 Session session = sessionfactory.openSession();
162 Transaction tx = session.beginTransaction();
164 session.update(entity);
167 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating data to Table"+e);
171 }catch(Exception e1){
172 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
179 @SuppressWarnings({ "unchecked", "rawtypes" })
181 public List<Object> checkDuplicateEntry(String value, String columnName, Class className) {
182 Session session = sessionfactory.openSession();
183 Transaction tx = session.beginTransaction();
184 List<Object> data = null;
185 String[] columnNames = null;
186 if(columnName != null && columnName.contains(":")){
187 columnNames = columnName.split(":");
189 String[] values = null;
190 if(value != null && value.contains(":")){
191 values = value.split(":");
194 Criteria cr = session.createCriteria(className);
195 if(columnNames != null && values != null && columnNames.length == values.length){
196 for (int i = 0; i < columnNames.length; i++){
197 cr.add(Restrictions.eq(columnNames[i],values[i]));
200 cr.add(Restrictions.eq(columnName,value));
204 } catch (Exception e) {
205 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for Table"+e + className);
209 }catch(Exception e1){
210 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
217 @SuppressWarnings("unchecked")
219 public List<PolicyRoles> getUserRoles() {
220 Session session = sessionfactory.openSession();
221 Transaction tx = session.beginTransaction();
222 List<PolicyRoles> rolesData = null;
224 Criteria cr = session.createCriteria(PolicyRoles.class);
225 Disjunction disjunction = Restrictions.disjunction();
226 Conjunction conjunction1 = Restrictions.conjunction();
227 conjunction1.add(Restrictions.eq("role", "admin"));
228 Conjunction conjunction2 = Restrictions.conjunction();
229 conjunction2.add(Restrictions.eq("role", "editor"));
230 Conjunction conjunction3 = Restrictions.conjunction();
231 conjunction3.add(Restrictions.eq("role", "guest"));
232 disjunction.add(conjunction1);
233 disjunction.add(conjunction2);
234 disjunction.add(conjunction3);
235 rolesData = cr.add(disjunction).list();
237 } catch (Exception e) {
238 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying PolicyRoles Table"+e);
242 }catch(Exception e1){
243 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
251 public List<Object> checkExistingGroupListforUpdate(String arg0, String arg1) {
257 public void deleteAll() {}
260 @SuppressWarnings("unchecked")
262 public List<Object> getDataByQuery(String query, SimpleBindings params) {
263 Session session = sessionfactory.openSession();
264 Transaction tx = session.beginTransaction();
265 List<Object> data = null;
267 Query hbquery = session.createQuery(query);
268 for (Map.Entry<String, Object> paramPair : params.entrySet()) {
269 if(paramPair.getValue() instanceof java.lang.Long){
270 hbquery.setLong(paramPair.getKey(), (long) paramPair.getValue());
273 hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
276 data = hbquery.list();
278 } catch (Exception e) {
279 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
284 }catch(HibernateException e1){
285 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
292 @SuppressWarnings("rawtypes")
294 public Object getEntityItem(Class className, String columnName, String key) {
295 Session session = sessionfactory.openSession();
296 Transaction tx = session.beginTransaction();
299 Criteria cr = session.createCriteria(className);
300 if(columnName.contains(":") && key.contains(":")){
301 String[] columns = columnName.split(":");
302 String[] keys = key.split(":");
303 for(int i=0; i < columns.length; i++){
304 cr.add(Restrictions.eq(columns[i], keys[i]));
307 cr.add(Restrictions.eq(columnName, key));
309 data = cr.list().get(0);
311 } catch (Exception e) {
312 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
316 }catch(Exception e1){
317 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
325 public void updateClAlarms(String arg0, String arg1) {}
329 public void updateClYaml(String arg0, String arg1) {}
333 public void updateQuery(String query) {
334 Session session = sessionfactory.openSession();
335 Transaction tx = session.beginTransaction();
337 Query hbquery = session.createQuery(query);
338 hbquery.executeUpdate();
340 } catch (Exception e) {
341 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating Database Table"+e);
345 }catch(Exception e1){
346 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
353 @SuppressWarnings({ "rawtypes", "unchecked" })
355 public List<String> getDataByColumn(Class className, String columnName) {
356 Session session = sessionfactory.openSession();
357 List<String> data = null;
359 Criteria cr = session.createCriteria(className);
360 cr.setProjection(Projections.property(columnName));
363 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
368 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
375 @SuppressWarnings({ "rawtypes", "unchecked" })
377 public List<Object> getMultipleDataOnAddingConjunction(Class className, String columnName, List<String> data) {
378 Session session = sessionfactory.openSession();
379 Transaction tx = session.beginTransaction();
380 List<Object> entityData = null;
382 Criteria cr = session.createCriteria(className);
383 Disjunction disjunction = Restrictions.disjunction();
384 List<Conjunction> conjunctionList = new ArrayList<>();
385 String[] columNames = columnName.split(":");
386 for(int i =0; i < data.size(); i++){
387 String[] entiySplit = data.get(i).split(":");
388 Conjunction conjunction = Restrictions.conjunction();
389 conjunction.add(Restrictions.eq(columNames[0], entiySplit[0]));
390 conjunction.add(Restrictions.eq(columNames[1], entiySplit[1]));
391 conjunctionList.add(conjunction);
393 for(int j =0 ; j < conjunctionList.size(); j++){
394 disjunction.add(conjunctionList.get(j));
396 entityData = cr.add(disjunction).list();
398 } catch (Exception e) {
399 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table" +className +e);
403 }catch(Exception e1){
404 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);