Example usage for org.hibernate.mapping ForeignKey getReferencedEntityName

List of usage examples for org.hibernate.mapping ForeignKey getReferencedEntityName

Introduction

In this page you can find the example usage for org.hibernate.mapping ForeignKey getReferencedEntityName.

Prototype

public String getReferencedEntityName() 

Source Link

Usage

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;
}