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.openecomp.policy.daoImp;
23 import java.util.ArrayList;
24 import java.util.List;
26 import org.hibernate.Criteria;
27 import org.hibernate.Query;
28 import org.hibernate.Session;
29 import org.hibernate.SessionFactory;
30 import org.hibernate.Transaction;
31 import org.hibernate.criterion.Conjunction;
32 import org.hibernate.criterion.Disjunction;
33 import org.hibernate.criterion.Projections;
34 import org.hibernate.criterion.Restrictions;
35 import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
36 import org.openecomp.policy.common.logging.flexlogger.Logger;
37 import org.openecomp.policy.rest.dao.CommonClassDao;
38 import org.openecomp.policy.rest.jpa.PolicyRoles;
39 import org.openecomp.policy.xacml.api.XACMLErrorConstants;
40 import org.springframework.beans.factory.annotation.Autowired;
41 import org.springframework.stereotype.Service;
43 @Service("CommonClassDao")
44 public class CommonClassDaoImpl implements CommonClassDao{
46 private static final Logger LOGGER = FlexLogger.getLogger(CommonClassDaoImpl.class);
49 SessionFactory sessionfactory;
51 @SuppressWarnings({ "unchecked", "rawtypes" })
53 public List<Object> getData(Class className) {
54 Session session = sessionfactory.openSession();
55 List<Object> data = null;
57 Criteria cr = session.createCriteria(className);
60 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
65 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
72 @SuppressWarnings({ "rawtypes", "unchecked" })
74 public List<Object> getDataById(Class className, String columnName, String key) {
75 Session session = sessionfactory.openSession();
76 List<Object> data = null;
78 Criteria cr = session.createCriteria(className);
79 if(columnName.contains(":") && key.contains(":")){
80 String[] columns = columnName.split(":");
81 String[] keys = key.split(":");
82 for(int i=0; i < columns.length; i++){
83 cr.add(Restrictions.eq(columns[i], keys[i]));
86 cr.add(Restrictions.eq(columnName, key));
89 } catch (Exception e) {
90 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
95 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
102 public void save(Object entity) {
103 Session session = sessionfactory.openSession();
104 Transaction tx = session.beginTransaction();
106 session.persist(entity);
109 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Saving data to Table"+e);
113 }catch(Exception e1){
114 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
121 public void delete(Object entity) {
122 Session session = sessionfactory.openSession();
123 Transaction tx = session.beginTransaction();
125 session.delete(entity);
128 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Deleting data from Table"+e);
132 }catch(Exception e1){
133 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
141 public void update(Object entity) {
142 Session session = sessionfactory.openSession();
143 Transaction tx = session.beginTransaction();
145 session.update(entity);
148 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating data to Table"+e);
152 }catch(Exception e1){
153 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
160 @SuppressWarnings({ "unchecked", "rawtypes" })
162 public List<Object> checkDuplicateEntry(String value, String columnName, Class className) {
163 Session session = sessionfactory.openSession();
164 Transaction tx = session.beginTransaction();
165 List<Object> data = null;
166 String[] columnNames = null;
167 if(columnName != null && columnName.contains(":")){
168 columnNames = columnName.split(":");
170 String[] values = null;
171 if(value != null && value.contains(":")){
172 values = value.split(":");
175 Criteria cr = session.createCriteria(className);
176 if(columnNames != null && values != null && columnNames.length == values.length){
177 for (int i = 0; i < columnNames.length; i++){
178 cr.add(Restrictions.eq(columnNames[i],values[i]));
181 cr.add(Restrictions.eq(columnName,value));
185 } catch (Exception e) {
186 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for Table"+e + className);
190 }catch(Exception e1){
191 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
198 @SuppressWarnings("unchecked")
200 public List<PolicyRoles> getUserRoles() {
201 Session session = sessionfactory.openSession();
202 Transaction tx = session.beginTransaction();
203 List<PolicyRoles> rolesData = null;
205 Criteria cr = session.createCriteria(PolicyRoles.class);
206 Disjunction disjunction = Restrictions.disjunction();
207 Conjunction conjunction1 = Restrictions.conjunction();
208 conjunction1.add(Restrictions.eq("role", "admin"));
209 Conjunction conjunction2 = Restrictions.conjunction();
210 conjunction2.add(Restrictions.eq("role", "editor"));
211 Conjunction conjunction3 = Restrictions.conjunction();
212 conjunction3.add(Restrictions.eq("role", "guest"));
213 disjunction.add(conjunction1);
214 disjunction.add(conjunction2);
215 disjunction.add(conjunction3);
216 rolesData = cr.add(disjunction).list();
218 } catch (Exception e) {
219 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying PolicyRoles Table"+e);
223 }catch(Exception e1){
224 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
232 public List<Object> checkExistingGroupListforUpdate(String arg0, String arg1) {
238 public void deleteAll() {}
241 @SuppressWarnings("unchecked")
243 public List<Object> getDataByQuery(String query) {
244 Session session = sessionfactory.openSession();
245 Transaction tx = session.beginTransaction();
246 List<Object> data = null;
248 Query hbquery = session.createQuery(query);
249 data = hbquery.list();
251 } catch (Exception e) {
252 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
256 }catch(Exception e1){
257 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
264 @SuppressWarnings("rawtypes")
266 public Object getEntityItem(Class className, String columnName, String key) {
267 Session session = sessionfactory.openSession();
268 Transaction tx = session.beginTransaction();
271 Criteria cr = session.createCriteria(className);
272 if(columnName.contains(":") && key.contains(":")){
273 String[] columns = columnName.split(":");
274 String[] keys = key.split(":");
275 for(int i=0; i < columns.length; i++){
276 cr.add(Restrictions.eq(columns[i], keys[i]));
279 cr.add(Restrictions.eq(columnName, key));
281 data = cr.list().get(0);
283 } catch (Exception e) {
284 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e);
288 }catch(Exception e1){
289 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
297 public void updateClAlarms(String arg0, String arg1) {}
301 public void updateClYaml(String arg0, String arg1) {}
305 public void updateQuery(String query) {
306 Session session = sessionfactory.openSession();
307 Transaction tx = session.beginTransaction();
309 Query hbquery = session.createQuery(query);
310 hbquery.executeUpdate();
312 } catch (Exception e) {
313 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating Database Table"+e);
317 }catch(Exception e1){
318 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);
325 @SuppressWarnings({ "rawtypes", "unchecked" })
327 public List<String> getDataByColumn(Class className, String columnName) {
328 Session session = sessionfactory.openSession();
329 List<String> data = null;
331 Criteria cr = session.createCriteria(className);
332 cr.setProjection(Projections.property(columnName));
335 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e);
340 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e);
347 @SuppressWarnings({ "rawtypes", "unchecked" })
349 public List<Object> getMultipleDataOnAddingConjunction(Class className, String columnName, List<String> data) {
350 Session session = sessionfactory.openSession();
351 Transaction tx = session.beginTransaction();
352 List<Object> entityData = null;
354 Criteria cr = session.createCriteria(className);
355 Disjunction disjunction = Restrictions.disjunction();
356 List<Conjunction> conjunctionList = new ArrayList<Conjunction>();
357 String[] columNames = columnName.split(":");
358 for(int i =0; i < data.size(); i++){
359 String[] entiySplit = data.get(i).split(":");
360 Conjunction conjunction = Restrictions.conjunction();
361 conjunction.add(Restrictions.eq(columNames[0], entiySplit[0]));
362 conjunction.add(Restrictions.eq(columNames[1], entiySplit[1]));
363 conjunctionList.add(conjunction);
365 for(int j =0 ; j < conjunctionList.size(); j++){
366 disjunction.add(conjunctionList.get(j));
368 entityData = cr.add(disjunction).list();
370 } catch (Exception e) {
371 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table" +className +e);
375 }catch(Exception e1){
376 LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1);