List of usage examples for org.hibernate.mapping ForeignKey getReferencedEntityName
public String getReferencedEntityName()
From source file:com.krawler.esp.hibernate.impl.reportMethods.java
License:Open Source License
public String loadData(HttpServletRequest request) throws ServiceException { String result = "{data:[],count : 0}"; try {/*w ww.j ava2 s . co m*/ String reportid = request.getParameter("reportid"); String query = null; Configuration cfg = getConfig(); java.util.Iterator itr = cfg.getTableMappings(); HashMap<String, Table> tableObj = new HashMap<String, Table>(); while (itr.hasNext()) { Table table = (Table) itr.next(); tableObj.put(PropsValues.PACKAGE_PATH + "." + table.getName(), table); } //Fetch all reference tables in report mb_reportlist report = (mb_reportlist) get(mb_reportlist.class, reportid); query = "Select distinct mb_gridconfig.reftable as tablename from " + PropsValues.PACKAGE_PATH + ".mb_gridconfig as mb_gridconfig where mb_gridconfig.reportid = ? and mb_gridconfig.countflag = ? "; List ls = find(query, new Object[] { report, false }); java.util.Iterator ite = ls.iterator(); String str = ""; ArrayList<String> refTableList1 = new ArrayList<String>(); HashMap<String, String> shortTableNames = new HashMap<String, String>(); while (ite.hasNext()) { String reftablename = (String) ite.next(); if (!StringUtil.isNullOrEmpty(reftablename)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reftablename); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reftablename, reftablename); } } //If new table created not present in arraylist then it is added forcefully String reportTName = reportDao.getReportTableName(reportid); if (!StringUtil.isNullOrEmpty(reportTName) && !refTableList1.contains(PropsValues.PACKAGE_PATH + "." + reportTName)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reportTName); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reportTName, reportTName); } ArrayList<String> refTableList = new ArrayList<String>(); ArrayList<String> primaryTableList = new ArrayList<String>(); HashMap<String, ArrayList<String>> parentTableObj = new HashMap<String, ArrayList<String>>(); HashMap<String, ArrayList<String>> colNameObj = new HashMap<String, ArrayList<String>>(); //Make list of reference tables which does not have any relationship with another ref. tables //Sort all reference tables in relationship order i.e. form child - parent for (int i = 0; i < refTableList1.size(); i++) { String reftablename = refTableList1.get(i); Table tb = tableObj.get(reftablename); Iterator FkIte = tb.getForeignKeyIterator(); if (FkIte.hasNext()) { boolean flg = false; ArrayList<String> parentTName1 = new ArrayList<String>(); ArrayList<String> colName1 = new ArrayList<String>(); while (FkIte.hasNext()) { //Always keep foreign key name = parent tablename + primary column name ForeignKey obj = (ForeignKey) FkIte.next(); String parentTName = obj.getReferencedEntityName(); Column col = (Column) obj.getColumns().iterator().next(); String colName = col.getName(); if (refTableList1.contains(parentTName)) { if (primaryTableList.contains(parentTName)) { primaryTableList.remove(parentTName); } if (refTableList.contains(parentTName)) { refTableList.remove(parentTName); if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } refTableList.add(parentTName); } else if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } parentTName1.add(parentTName); colName1.add(colName); flg = true; } else { if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); flg = true; } continue; } } parentTableObj.put(reftablename, parentTName1); colNameObj.put(reftablename, colName1); if (!flg) { primaryTableList.add(reftablename); } } else if (!FkIte.hasNext()) { //Check whether reference table is already part of parentTableObj. //If yes then not to add in primaryList boolean flg = true; Iterator temp = parentTableObj.keySet().iterator(); while (temp.hasNext()) { ArrayList<String> ttemp = (ArrayList<String>) parentTableObj.get(temp.next()); for (int l = 0; l < ttemp.size(); l++) { if (ttemp.contains(reftablename)) { flg = false; break; } } if (!flg) { break; } } if (flg) { primaryTableList.add(reftablename); } } } String delQuery = ""; for (int i = 0; i < refTableList.size(); i++) { String reftablename = refTableList.get(i); ArrayList<String> parentTName = parentTableObj.get(reftablename); ArrayList<String> colName = colNameObj.get(reftablename); for (int j = 0; j < parentTName.size(); j++) { String shortRefTName = shortTableNames.get(reftablename); String shortParentTName = shortTableNames.get(parentTName.get(j)); if (StringUtil.isNullOrEmpty(str)) { str += reftablename + " as " + shortRefTName + " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; delQuery += shortRefTName + ".deleteflag = 0 and " + shortParentTName + ".deleteflag = 0 "; } else if (str.contains(shortRefTName)) { //if reference table is already part of query then use alias str += " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } else { //otherwise use full path str += " inner join " + reftablename + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } } } String primaryTableQuery = ""; for (int i = 0; i < primaryTableList.size(); i++) { String reftablename = primaryTableList.get(i); String shortRefTName = shortTableNames.get(reftablename); if (StringUtil.isNullOrEmpty(delQuery)) { delQuery += shortRefTName + ".deleteflag = 0 "; } else if (!delQuery.contains(shortRefTName)) { delQuery += " and " + shortRefTName + ".deleteflag = 0 "; } if (StringUtil.isNullOrEmpty(primaryTableQuery)) { primaryTableQuery += " from " + reftablename + " as " + shortRefTName; } else { primaryTableQuery += " , " + reftablename + " as " + shortRefTName; } } String finalQuery = ""; if (!StringUtil.isNullOrEmpty(primaryTableQuery)) { finalQuery += primaryTableQuery; } if (!StringUtil.isNullOrEmpty(str)) { if (StringUtil.isNullOrEmpty(finalQuery)) { finalQuery = " from " + str; } else { finalQuery += ", " + str; } } //Fetch all display columns String SELECT_QUERY = "select mb_gridconfig.name, mb_gridconfig.xtype, mb_gridconfig.combogridconfig, mb_gridconfig.countflag, mb_gridconfig.reftable from com.krawler.esp.hibernate.impl.mb_gridconfig as mb_gridconfig" + " where mb_gridconfig.reportid = ?"; List list = find(SELECT_QUERY, new Object[] { report }); ite = list.iterator(); String fieldQuery = ""; ArrayList<String> fieldNameArray = new ArrayList<String>(); ArrayList<String> countFieldNameArray = new ArrayList<String>(); while (ite.hasNext()) { Object[] row = (Object[]) ite.next(); String fieldName = row[0].toString(); String xtype = row[1].toString(); String combogridconfig = "-1"; if (row[2] != null) { combogridconfig = row[2].toString(); } //Check for count flag if (row[3] != null && Boolean.parseBoolean(row[3].toString())) {//countFlag countFieldNameArray.add(row[4].toString()); } else { fieldNameArray.add(fieldName); String className = ""; if (xtype.equals("Combobox") && combogridconfig.equals("-1")) { className = fieldName.split(PropsValues.REPORT_HARDCODE_STR)[0]; fieldName = className + "." + getPrimaryColName(className); } else { fieldName = fieldName.replaceAll(PropsValues.REPORT_HARDCODE_STR, "."); } fieldQuery += fieldName + ","; } } if (StringUtil.isNullOrEmpty(fieldQuery)) { fieldQuery = "Select * "; } else { fieldQuery = "Select " + fieldQuery.substring(0, fieldQuery.length() - 1); } //Check for mapping filter String filterQry = ""; if (Boolean.parseBoolean(request.getParameter("isFilter"))) { // filterQry = " "+reportTName+"."+request.getParameter("filterfield").split(PropsValues.REPORT_HARDCODE_STR)[1]+" = '"+request.getParameter("filtervalue")+"'"; filterQry = request.getParameter("filterfield").replaceAll(PropsValues.REPORT_HARDCODE_STR, ".") + " = '" + request.getParameter("filtervalue") + "'"; } if (!StringUtil.isNullOrEmpty(delQuery)) { if (!StringUtil.isNullOrEmpty(filterQry)) { delQuery = " where " + filterQry + " and " + delQuery; } else { delQuery = " where " + delQuery; } } //Check for comments SELECT_QUERY = "select mb_moduleConfigMap.configid.configid from com.krawler.esp.hibernate.impl.mb_moduleConfigMap " + "as mb_moduleConfigMap where mb_moduleConfigMap.moduleid = ? "; List configlist = find(SELECT_QUERY, new Object[] { report }); ite = configlist.iterator(); boolean commentFlag = false; boolean docFlag = false; while (ite.hasNext()) { int configid = (Integer) ite.next(); if (configid == 1) { // Comments commentFlag = true; } else if (configid == 2) { // Documents docFlag = true; } } JSONObject jobj = new JSONObject(); int count = 0; String searchFilter = ""; if (request.getParameter("filterJson") != null && !request.getParameter("filterJson").equals("")) { JSONArray filterJsonObj = new JSONArray(request.getParameter("filterJson")); JSONObject ObjJSONObject = null; String substr = ""; String reportClassName = ""; for (int i = 0; i < filterJsonObj.length(); i++) { ObjJSONObject = (JSONObject) filterJsonObj.get(i); reportClassName = ObjJSONObject.getString("column").split(PropsValues.REPORT_HARDCODE_STR)[0]; if (ObjJSONObject.getString("xtype").equals("Date")) { String[] splitString = ObjJSONObject.getString("searchText").split(","); String fromDate = splitString[0]; String toDate = splitString[1]; substr = " >= '" + fromDate + " 00:00:00" + "'" + " and " + reportClassName + "." + ObjJSONObject.getString("column").split(PropsValues.REPORT_HARDCODE_STR)[1] + " <= '" + toDate + " 00:00:00" + "'"; } else if (ObjJSONObject.getString("xtype").equals("Number(Integer)") || ObjJSONObject.getString("xtype").equals("Number(Float)")) { substr = " = " + ObjJSONObject.getString("searchText"); } else if (ObjJSONObject.getString("xtype").equals("radio") || ObjJSONObject.getString("xtype").equalsIgnoreCase("checkbox")) { substr = " = " + Boolean.parseBoolean(ObjJSONObject.getString("searchText")); } else if (ObjJSONObject.getString("xtype").equals("Combobox")) { substr = " = '" + ObjJSONObject.getString("searchText") + "'"; if (!ObjJSONObject.getString("combogridconfig").equals("-1")) { searchFilter += " and " + reportClassName + "." + ObjJSONObject.getString("column").split(PropsValues.REPORT_HARDCODE_STR)[1] + substr; } else { if (reportTName.equals("")) { searchFilter += " and " + reportClassName + ".id" + substr; } else { searchFilter += " and " + reportClassName + "id" + substr; } } } else { substr = " like '%" + ObjJSONObject.getString("searchText") + "%'"; } if (!ObjJSONObject.getString("xtype").equals("Combobox")) { searchFilter += " and " + reportClassName + "." + ObjJSONObject.getString("column").split(PropsValues.REPORT_HARDCODE_STR)[1] + substr; } } } //Generate rules filter query for report grid String ruleFilterQuery = ""; // ArrayList permArray = AuthHandler.getRealRoleids(request); // for(int i = 0; i < permArray.size(); i++) { // int roleid = Integer.parseInt(permArray.get(i).toString()); // String res = ModuleBuilderController.checkFilterRulesQuery(session, report, roleid, 0, ""); // if(!StringUtil.isNullOrEmpty(res)) { // res = "("+res +")"; // if(!StringUtil.isNullOrEmpty(ruleFilterQuery)) // ruleFilterQuery = res + " or " + ruleFilterQuery; // else // ruleFilterQuery = res; // } // } if (!StringUtil.isNullOrEmpty(ruleFilterQuery)) ruleFilterQuery = " and " + ruleFilterQuery; String sortQuery = ""; if (request.getParameter("sort") != null && !request.getParameter("sort").equals("")) { String sortColumnName = request.getParameter("sort").replaceAll(PropsValues.REPORT_HARDCODE_STR, "."); sortQuery = " Order by " + sortColumnName + " " + request.getParameter("dir"); } Object[] paramArray = null; if (!StringUtil.isNullOrEmpty(finalQuery)) { //Get implementation class object and call before dataLoad method. //Check for reportTName is null; String className = reportTName; if (StringUtil.isNullOrEmpty(className)) { className = "rb_" + reportDao.toLZ(report.getReportkey(), 3) + "_" + report.getReportname().replace(" ", "").toLowerCase(); ; } Class cl1 = Class.forName(PropsValues.PACKAGE_PATH + ".impl_" + className); java.lang.reflect.Constructor co1 = cl1.getConstructor(); Object invoker1 = co1.newInstance(); Class arguments1[] = new Class[] { HibernateTemplate.class, HttpServletRequest.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, ArrayList.class, ArrayList.class, Boolean.class, Boolean.class, JSONObject.class, Boolean.class, Object[].class }; java.lang.reflect.Method objMethod1 = cl1.getMethod("beforeGridLoadData", arguments1); Object[] obj1 = new Object[] { getHibernateTemplate(), request, finalQuery, fieldQuery, delQuery, searchFilter, ruleFilterQuery, sortQuery, reportTName, fieldNameArray, countFieldNameArray, commentFlag, docFlag, jobj, true, paramArray }; Object result11 = objMethod1.invoke(invoker1, obj1); } if (jobj.has("data")) { jobj.put("count", count); result = jobj.toString(); } else { result = "{data:[],count : 0}"; } } catch (HibernateException e) { logger.warn(e.getMessage(), e); result = "{data:[],count : 0}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } catch (ServiceException e) { logger.warn(e.getMessage(), e); result = "{data:[],count : 0}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } catch (Exception e) { logger.warn(e.getMessage(), e); result = "{data:[],count : 0}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } finally { return result; } }
From source file:com.krawler.esp.hibernate.impl.reportMethods.java
License:Open Source License
public JSONObject getModuleData(HttpServletRequest request) { String result = "{data:[],count : 0}"; JSONObject jobj = new JSONObject(); try {//www . j a v a 2s. c o m String reportid = request.getParameter("moduleid"); String query = null; Configuration cfg = getConfig(); java.util.Iterator itr = cfg.getTableMappings(); HashMap<String, Table> tableObj = new HashMap<String, Table>(); while (itr.hasNext()) { Table table = (Table) itr.next(); tableObj.put(PropsValues.PACKAGE_PATH + "." + table.getName(), table); } //Fetch all reference tables in report mb_reportlist report = (mb_reportlist) get(mb_reportlist.class, reportid); query = "Select distinct mb_gridconfig.reftable as tablename from " + PropsValues.PACKAGE_PATH + ".mb_gridconfig as mb_gridconfig where mb_gridconfig.reportid = ? and mb_gridconfig.countflag = ? "; List ls = find(query, new Object[] { report, false }); java.util.Iterator ite = ls.iterator(); String str = ""; ArrayList<String> refTableList1 = new ArrayList<String>(); HashMap<String, String> shortTableNames = new HashMap<String, String>(); while (ite.hasNext()) { String reftablename = (String) ite.next(); if (!StringUtil.isNullOrEmpty(reftablename)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reftablename); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reftablename, reftablename); } } //If new table created not present in arraylist then it is added forcefully String reportTName = reportDao.getReportTableName(reportid); if (!StringUtil.isNullOrEmpty(reportTName) && !refTableList1.contains(PropsValues.PACKAGE_PATH + "." + reportTName)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reportTName); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reportTName, reportTName); } ArrayList<String> refTableList = new ArrayList<String>(); ArrayList<String> primaryTableList = new ArrayList<String>(); HashMap<String, ArrayList<String>> parentTableObj = new HashMap<String, ArrayList<String>>(); HashMap<String, ArrayList<String>> colNameObj = new HashMap<String, ArrayList<String>>(); //Make list of reference tables which does not have any relationship with another ref. tables //Sort all reference tables in relationship order i.e. form child - parent for (int i = 0; i < refTableList1.size(); i++) { String reftablename = refTableList1.get(i); Table tb = tableObj.get(reftablename); Iterator FkIte = tb.getForeignKeyIterator(); if (FkIte.hasNext()) { boolean flg = false; ArrayList<String> parentTName1 = new ArrayList<String>(); ArrayList<String> colName1 = new ArrayList<String>(); while (FkIte.hasNext()) { //Always keep foreign key name = parent tablename + primary column name ForeignKey obj = (ForeignKey) FkIte.next(); String parentTName = obj.getReferencedEntityName(); Column col = (Column) obj.getColumns().iterator().next(); String colName = col.getName(); if (refTableList1.contains(parentTName)) { if (primaryTableList.contains(parentTName)) { primaryTableList.remove(parentTName); } if (refTableList.contains(parentTName)) { refTableList.remove(parentTName); if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } refTableList.add(parentTName); } else if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } parentTName1.add(parentTName); colName1.add(colName); flg = true; } else { if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); flg = true; } continue; } } parentTableObj.put(reftablename, parentTName1); colNameObj.put(reftablename, colName1); if (!flg) { primaryTableList.add(reftablename); } } else if (!FkIte.hasNext()) { //Check whether reference table is already part of parentTableObj. //If yes then not to add in primaryList boolean flg = true; Iterator temp = parentTableObj.keySet().iterator(); while (temp.hasNext()) { ArrayList<String> ttemp = (ArrayList<String>) parentTableObj.get(temp.next()); for (int l = 0; l < ttemp.size(); l++) { if (ttemp.contains(reftablename)) { flg = false; break; } } if (!flg) { break; } } if (flg) { primaryTableList.add(reftablename); } } } String delQuery = ""; for (int i = 0; i < refTableList.size(); i++) { String reftablename = refTableList.get(i); ArrayList<String> parentTName = parentTableObj.get(reftablename); ArrayList<String> colName = colNameObj.get(reftablename); for (int j = 0; j < parentTName.size(); j++) { String shortRefTName = shortTableNames.get(reftablename); String shortParentTName = shortTableNames.get(parentTName.get(j)); if (StringUtil.isNullOrEmpty(str)) { str += reftablename + " as " + shortRefTName + " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; delQuery += shortRefTName + ".deleteflag = 0 and " + shortParentTName + ".deleteflag = 0 "; } else if (str.contains(shortRefTName)) { //if reference table is already part of query then use alias str += " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } else { //otherwise use full path str += " inner join " + reftablename + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } } } String primaryTableQuery = ""; for (int i = 0; i < primaryTableList.size(); i++) { String reftablename = primaryTableList.get(i); String shortRefTName = shortTableNames.get(reftablename); if (StringUtil.isNullOrEmpty(delQuery)) { delQuery += shortRefTName + ".deleteflag = 0 "; } else if (!delQuery.contains(shortRefTName)) { delQuery += " and " + shortRefTName + ".deleteflag = 0 "; } if (StringUtil.isNullOrEmpty(primaryTableQuery)) { primaryTableQuery += " from " + reftablename + " as " + shortRefTName; } else { primaryTableQuery += " , " + reftablename + " as " + shortRefTName; } } String finalQuery = ""; if (!StringUtil.isNullOrEmpty(primaryTableQuery)) { finalQuery += primaryTableQuery; } if (!StringUtil.isNullOrEmpty(str)) { if (StringUtil.isNullOrEmpty(finalQuery)) { finalQuery = " from " + str; } else { finalQuery += ", " + str; } } //Fetch all display columns String SELECT_QUERY = "select mb_gridconfig.name, mb_gridconfig.xtype, mb_gridconfig.combogridconfig, mb_gridconfig.countflag, mb_gridconfig.reftable, mb_gridconfig.displayfield from com.krawler.esp.hibernate.impl.mb_gridconfig as mb_gridconfig" + " where mb_gridconfig.reportid = ?"; List list = find(SELECT_QUERY, new Object[] { report }); ite = list.iterator(); String fieldQuery = ""; ArrayList<String> fieldNameArray = new ArrayList<String>(); ArrayList<String> countFieldNameArray = new ArrayList<String>(); ArrayList<String> displayFieldArray = new ArrayList<String>(); while (ite.hasNext()) { Object[] row = (Object[]) ite.next(); String fieldName = row[0].toString(); String displayField = row[5].toString(); String xtype = row[1].toString(); String combogridconfig = "-1"; if (row[2] != null) { combogridconfig = row[2].toString(); } //Check for count flag if (row[3] != null && Boolean.parseBoolean(row[3].toString())) {//countFlag countFieldNameArray.add(row[4].toString()); } else { fieldNameArray.add(fieldName); displayFieldArray.add(displayField); String className = ""; if (xtype.equals("Combobox") && combogridconfig.equals("-1")) { className = fieldName.split(PropsValues.REPORT_HARDCODE_STR)[0]; fieldName = className + "." + getPrimaryColName(className); } else { fieldName = fieldName.replaceAll(PropsValues.REPORT_HARDCODE_STR, "."); } fieldQuery += fieldName + ","; } } if (StringUtil.isNullOrEmpty(fieldQuery)) { fieldQuery = "Select * "; } else { fieldQuery = "Select " + fieldQuery.substring(0, fieldQuery.length() - 1); } //Check for mapping filter String filterQry = ""; if (!StringUtil.isNullOrEmpty(delQuery)) { if (!StringUtil.isNullOrEmpty(filterQry)) { delQuery = " where " + filterQry + " and " + delQuery; } else { delQuery = " where " + delQuery; } } //Check for comments boolean commentFlag = false; boolean docFlag = false; String ruleFilterQuery = ""; if (!StringUtil.isNullOrEmpty(ruleFilterQuery)) ruleFilterQuery = " and " + ruleFilterQuery; if (!StringUtil.isNullOrEmpty(finalQuery)) { //Get implementation class object and call before dataLoad method. //Check for reportTName is null; String className = reportTName; if (StringUtil.isNullOrEmpty(className)) { className = "rb_" + reportDao.toLZ(report.getReportkey(), 3) + "_" + report.getReportname().replace(" ", "").toLowerCase(); } Class cl1 = Class.forName(PropsValues.PACKAGE_PATH + ".impl_" + className); java.lang.reflect.Constructor co1 = cl1.getConstructor(); Object invoker1 = co1.newInstance(); Class arguments1[] = new Class[] { HibernateTemplate.class, HttpServletRequest.class, String.class, String.class, String.class, String.class, String.class, ArrayList.class, ArrayList.class, ArrayList.class, Boolean.class, Boolean.class, JSONObject.class }; java.lang.reflect.Method objMethod1 = cl1.getMethod("beforeGridExportData", arguments1); Object[] obj1 = new Object[] { getHibernateTemplate(), request, finalQuery, fieldQuery, delQuery, ruleFilterQuery, reportTName, displayFieldArray, fieldNameArray, countFieldNameArray, commentFlag, docFlag, jobj }; Object result11 = objMethod1.invoke(invoker1, obj1); } } catch (HibernateException e) { logger.warn(e.getMessage(), e); result = "{data:[],count : 0}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } catch (Exception e) { logger.warn(e.getMessage(), e); result = "{data:[],count : 0}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } finally { return jobj; } }
From source file:com.krawler.workflow.module.dao.ModuleBuilderDaoImpl.java
License:Open Source License
public String getGridData(HttpServletRequest request, Hashtable coldata, Object id, String pTable) { String result = "{data:[],count : 0}"; try {/*from w w w . ja v a 2 s. c om*/ // int start = Integer.parseInt(request.getParameter("start")); // int limit = Integer.parseInt(request.getParameter("limit")); String tName = coldata.get("reftable").toString(); String reportid = reportDao.getReportIdFromTable(tName); String query = null; Configuration cfg = getConfig(); java.util.Iterator itr = cfg.getTableMappings(); HashMap<String, Table> tableObj = new HashMap<String, Table>(); while (itr.hasNext()) { Table table = (Table) itr.next(); tableObj.put(PropsValues.PACKAGE_PATH + "." + table.getName(), table); } //Fetch all reference tables in report mb_reportlist report = (mb_reportlist) get(mb_reportlist.class, reportid); query = "Select distinct mb_gridconfig.reftable as tablename from " + PropsValues.PACKAGE_PATH + ".mb_gridconfig as mb_gridconfig where mb_gridconfig.reportid = ? and mb_gridconfig.countflag = ? "; List ls = find(query, new Object[] { report, false }); java.util.Iterator ite = ls.iterator(); String str = ""; ArrayList<String> refTableList1 = new ArrayList<String>(); HashMap<String, String> shortTableNames = new HashMap<String, String>(); while (ite.hasNext()) { String reftablename = (String) ite.next(); if (!StringUtil.isNullOrEmpty(reftablename)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reftablename); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reftablename, reftablename); } } //If new table created not present in arraylist then it is added forcefully String reportTName = reportDao.getReportTableName(reportid); if (!StringUtil.isNullOrEmpty(reportTName) && !refTableList1.contains(PropsValues.PACKAGE_PATH + "." + reportTName)) { refTableList1.add(PropsValues.PACKAGE_PATH + "." + reportTName); shortTableNames.put(PropsValues.PACKAGE_PATH + "." + reportTName, reportTName); } ArrayList<String> refTableList = new ArrayList<String>(); ArrayList<String> primaryTableList = new ArrayList<String>(); HashMap<String, ArrayList<String>> parentTableObj = new HashMap<String, ArrayList<String>>(); HashMap<String, ArrayList<String>> colNameObj = new HashMap<String, ArrayList<String>>(); //Make list of reference tables which does not have any relationship with another ref. tables //Sort all reference tables in relationship order i.e. form child - parent for (int i = 0; i < refTableList1.size(); i++) { String reftablename = refTableList1.get(i); Table tb = tableObj.get(reftablename); Iterator FkIte = tb.getForeignKeyIterator(); if (FkIte.hasNext()) { boolean flg = false; ArrayList<String> parentTName1 = new ArrayList<String>(); ArrayList<String> colName1 = new ArrayList<String>(); while (FkIte.hasNext()) { //Always keep foreign key name = parent tablename + primary column name ForeignKey obj = (ForeignKey) FkIte.next(); String parentTName = obj.getReferencedEntityName(); Column col = (Column) obj.getColumns().iterator().next(); String colName = col.getName(); if (refTableList1.contains(parentTName)) { if (primaryTableList.contains(parentTName)) { primaryTableList.remove(parentTName); } if (refTableList.contains(parentTName)) { refTableList.remove(parentTName); if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } refTableList.add(parentTName); } else if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); } parentTName1.add(parentTName); colName1.add(colName); flg = true; } else { if (!refTableList.contains(reftablename)) { refTableList.add(reftablename); flg = true; } continue; } } parentTableObj.put(reftablename, parentTName1); colNameObj.put(reftablename, colName1); if (!flg) { primaryTableList.add(reftablename); } } else if (!FkIte.hasNext()) { //Check whether reference table is already part of parentTableObj. //If yes then not to add in primaryList boolean flg = true; Iterator temp = parentTableObj.keySet().iterator(); while (temp.hasNext()) { ArrayList<String> ttemp = (ArrayList<String>) parentTableObj.get(temp.next()); for (int l = 0; l < ttemp.size(); l++) { if (ttemp.contains(reftablename)) { flg = false; break; } } if (!flg) { break; } } if (flg) { primaryTableList.add(reftablename); } } } String delQuery = ""; for (int i = 0; i < refTableList.size(); i++) { String reftablename = refTableList.get(i); ArrayList<String> parentTName = parentTableObj.get(reftablename); ArrayList<String> colName = colNameObj.get(reftablename); for (int j = 0; j < parentTName.size(); j++) { String shortRefTName = shortTableNames.get(reftablename); String shortParentTName = shortTableNames.get(parentTName.get(j)); if (StringUtil.isNullOrEmpty(str)) { str += reftablename + " as " + shortRefTName + " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; delQuery += shortRefTName + ".deleteflag = 0 and " + shortParentTName + ".deleteflag = 0 "; } else if (str.contains(shortRefTName)) { //if reference table is already part of query then use alias str += " inner join " + shortRefTName + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } else { //otherwise use full path str += " inner join " + reftablename + "." + colName.get(j) + " as " + shortParentTName; if (!delQuery.contains(shortParentTName)) { delQuery += " and " + shortParentTName + ".deleteflag = 0 "; } } } } String primaryTableQuery = ""; for (int i = 0; i < primaryTableList.size(); i++) { String reftablename = primaryTableList.get(i); String shortRefTName = shortTableNames.get(reftablename); if (StringUtil.isNullOrEmpty(delQuery)) { delQuery += shortRefTName + ".deleteflag = 0 "; } else if (!delQuery.contains(shortRefTName)) { delQuery += " and " + shortRefTName + ".deleteflag = 0 "; } if (StringUtil.isNullOrEmpty(primaryTableQuery)) { primaryTableQuery += " from " + reftablename + " as " + shortRefTName; } else { primaryTableQuery += " , " + reftablename + " as " + shortRefTName; } } String finalQuery = ""; if (!StringUtil.isNullOrEmpty(primaryTableQuery)) { finalQuery += primaryTableQuery; } if (!StringUtil.isNullOrEmpty(str)) { if (StringUtil.isNullOrEmpty(finalQuery)) { finalQuery = " from " + str; } else { finalQuery = ", " + str; } } //Fetch all display columns String SELECT_QUERY = "select mb_gridconfig.name, mb_gridconfig.xtype, mb_gridconfig.combogridconfig, mb_gridconfig.countflag, mb_gridconfig.reftable from com.krawler.esp.hibernate.impl.mb_gridconfig as mb_gridconfig" + " where mb_gridconfig.reportid = ?"; List list = find(SELECT_QUERY, new Object[] { report }); ite = list.iterator(); String fieldQuery = ""; ArrayList<String> fieldNameArray = new ArrayList<String>(); ArrayList<String> countFieldNameArray = new ArrayList<String>(); while (ite.hasNext()) { Object[] row = (Object[]) ite.next(); String fieldName = row[0].toString(); String xtype = row[1].toString(); String combogridconfig = "-1"; if (row[2] != null) { combogridconfig = row[2].toString(); } //Check for count flag if (row[3] != null && Boolean.parseBoolean(row[3].toString())) {//countFlag countFieldNameArray.add(row[4].toString()); } else { fieldNameArray.add(fieldName); String className = ""; if (xtype.equals("Combobox") && combogridconfig.equals("-1")) { className = fieldName.split(PropsValues.REPORT_HARDCODE_STR)[0]; fieldName = className + "." + getPrimaryColName(className); } else { fieldName = fieldName.replaceAll(PropsValues.REPORT_HARDCODE_STR, "."); } fieldQuery += fieldName + ","; } } if (StringUtil.isNullOrEmpty(fieldQuery)) { fieldQuery = "Select * "; } else { fieldQuery = "Select " + fieldQuery.substring(0, fieldQuery.length() - 1); } //Check for mapping filter String filtertablename = PropsValues.PACKAGE_PATH + "." + pTable; Class modcl = Class.forName(filtertablename); Object modObj = get(modcl, id.toString()); String filterQry = " where " + tName + "." + pTable + "id=?"; if (!StringUtil.isNullOrEmpty(delQuery)) { if (!StringUtil.isNullOrEmpty(filterQry)) { delQuery = filterQry + " and " + delQuery; } else { delQuery = " where " + delQuery; } } //Check for comments SELECT_QUERY = "select mb_moduleConfigMap.configid.configid from com.krawler.esp.hibernate.impl.mb_moduleConfigMap " + "as mb_moduleConfigMap where mb_moduleConfigMap.moduleid = ? "; List configlist = find(SELECT_QUERY, new Object[] { report }); ite = configlist.iterator(); boolean commentFlag = false; boolean docFlag = false; while (ite.hasNext()) { int configid = (Integer) ite.next(); if (configid == 1) { // Comments commentFlag = true; } if (configid == 2) { // Documents commentFlag = true; } } //Generate rules filter query for report grid String ruleFilterQuery = ""; // ArrayList permArray = AuthHandler.getRealRoleids(request); // for(int i = 0; i < permArray.size(); i++) { // int roleid = Integer.parseInt(permArray.get(i).toString()); // String res = ModuleBuilderController.checkFilterRulesQuery(session, report, roleid, 0, ""); // if(!StringUtil.isNullOrEmpty(res)) { // res = "("+res +")"; // if(!StringUtil.isNullOrEmpty(ruleFilterQuery)) // ruleFilterQuery = res + " or " + ruleFilterQuery; // else // ruleFilterQuery = res; // } // } if (!StringUtil.isNullOrEmpty(ruleFilterQuery)) ruleFilterQuery = " and " + ruleFilterQuery; String searchFilter = ""; String sortQuery = ""; JSONObject jobj = new JSONObject(); Object[] paramArray = new Object[] { modObj }; if (!StringUtil.isNullOrEmpty(finalQuery)) { //Get implementation class object and call before dataLoad method. //Check for reportTName is null; String className = reportTName; if (StringUtil.isNullOrEmpty(className)) { className = "rb_" + reportDao.toLZ(report.getReportkey(), 3) + "_" + report.getReportname().replace(" ", "").toLowerCase(); } Class cl1 = Class.forName(PropsValues.PACKAGE_PATH + ".impl_" + className); java.lang.reflect.Constructor co1 = cl1.getConstructor(); Object invoker1 = co1.newInstance(); Class arguments1[] = new Class[] { HibernateTemplate.class, HttpServletRequest.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, ArrayList.class, ArrayList.class, Boolean.class, Boolean.class, JSONObject.class, Boolean.class, Object[].class }; java.lang.reflect.Method objMethod1 = cl1.getMethod("beforeGridLoadData", arguments1); Object[] obj1 = new Object[] { getHibernateTemplate(), request, finalQuery, fieldQuery, delQuery, searchFilter, ruleFilterQuery, sortQuery, reportTName, fieldNameArray, countFieldNameArray, commentFlag, docFlag, jobj, false, paramArray }; Object result11 = objMethod1.invoke(invoker1, obj1); } if (jobj.has("data")) { // jobj.put("count", count); result = jobj.toString(); } else { result = "{data:[]}"; } } catch (HibernateException e) { logger.warn(e.getMessage(), e); result = "{data:[]}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } catch (Exception e) { logger.warn(e.getMessage(), e); result = "{data:[]}"; throw ServiceException.FAILURE("reportMethods.loadData", e); } finally { return result; } }
From source file:com.siemens.scr.avt.ad.query.common.NaturalJoinTreeLoadingStrategy.java
License:Open Source License
private void processFKs(NaturalJoinTree tree, Set<ForeignKey> fks) { for (ForeignKey fk : fks) { assert fk.getColumnSpan() == 1;// we do not allow composite FK for now String columnName = fk.getColumn(0).getName(); Table contextTable = fk.getTable(); String table = tableNameFromTable(contextTable); String entityName = fk.getReferencedEntityName(); PersistentClass referencedPC = getConfig().getClassMapping(entityName); String referencedTable = tableNameFromPersistentClass(referencedPC); tree.handleFK(table, referencedTable, columnName); }//from www .j a va 2 s. c o m }
From source file:com.zutubi.pulse.master.hibernate.SchemaRefactor.java
License:Apache License
protected Table clone(Table table) { Table clone = new Table(table.getName()); clone.setAbstract(table.isAbstract()); clone.setCatalog(table.getCatalog()); clone.setComment(table.getComment()); clone.setName(table.getName());/*w ww. j a v a 2 s .co m*/ clone.setPrimaryKey(table.getPrimaryKey()); clone.setQuoted(table.isQuoted()); clone.setRowId(table.getRowId()); clone.setSchema(table.getSchema()); clone.setSubselect(table.getSubselect()); Iterator columns = table.getColumnIterator(); while (columns.hasNext()) { Column column = (Column) columns.next(); clone.addColumn(column); } Iterator foreignKeys = table.getForeignKeyIterator(); while (foreignKeys.hasNext()) { ForeignKey key = (ForeignKey) foreignKeys.next(); clone.createForeignKey(key.getName(), key.getColumns(), key.getReferencedEntityName(), key.getReferencedColumns()); } return clone; }