Example usage for org.hibernate.mapping Table getForeignKeyIterator

List of usage examples for org.hibernate.mapping Table getForeignKeyIterator

Introduction

In this page you can find the example usage for org.hibernate.mapping Table getForeignKeyIterator.

Prototype

public Iterator getForeignKeyIterator() 

Source Link

Usage

From source file:com.clican.pluto.orm.dynamic.impl.DataBaseOperationImpl.java

License:LGPL

@SuppressWarnings("unchecked")
public void alterTable(Configuration cfg, ModelDescription oldOne, ModelDescription newOne) {
    Connection conn = null;/*from   w w  w  .ja va 2 s . c o m*/
    DatabaseMetadata meta = null;
    String defaultCatalog = cfg.getProperties().getProperty(Environment.DEFAULT_CATALOG);
    String defaultSchema = cfg.getProperties().getProperty(Environment.DEFAULT_SCHEMA);
    List<String> alterSqls = new ArrayList<String>();
    try {
        conn = dataSource.getConnection();
        meta = new DatabaseMetadata(conn, dialect);
        Mapping mapping = cfg.buildMapping();
        // Alter table name;
        if (!oldOne.getName().equals(newOne.getName())) {
            String alterTableName = "alter table " + dialect.openQuote() + oldOne.getName().toUpperCase()
                    + dialect.closeQuote() + "rename to " + dialect.openQuote() + newOne.getName().toUpperCase()
                    + dialect.closeQuote();
            executeSql(conn, alterTableName);
        }

        List<PropertyDescription> oldPropertyDescriptionList = oldOne.getPropertyDescriptionList();
        List<PropertyDescription> currentPropertyDescriptionList = newOne.getPropertyDescriptionList();
        List<PropertyDescription> removePropertyList = new ArrayList<PropertyDescription>();
        List<PropertyDescription> addPropertyList = new ArrayList<PropertyDescription>(
                currentPropertyDescriptionList);
        Map<PropertyDescription, PropertyDescription> pdMap = new HashMap<PropertyDescription, PropertyDescription>();
        for (PropertyDescription pd1 : oldPropertyDescriptionList) {
            boolean remove = true;
            for (PropertyDescription pd2 : currentPropertyDescriptionList) {
                if (pd1.getId().equals(pd2.getId())) {
                    addPropertyList.remove(pd2);
                    if (!pd1.equals(pd2)) {
                        pdMap.put(pd2, pd1);
                    }
                    remove = false;
                    break;
                }
            }
            if (remove) {
                removePropertyList.add(pd1);
            }
        }

        Iterator<Table> tableIter = cfg.getTableMappings();
        while (tableIter.hasNext()) {
            Table table = tableIter.next();
            TableMetadata tableInfo = meta.getTableMetadata(table.getName(),
                    (table.getSchema() == null) ? defaultSchema : table.getSchema(),
                    (table.getCatalog() == null) ? defaultCatalog : table.getCatalog(), table.isQuoted()

            );
            if (tableInfo == null) {
                alterSqls.add(table.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
            } else {
                if (!table.getName().equalsIgnoreCase(newOne.getName())) {
                    continue;
                }
                for (PropertyDescription removeProperty : removePropertyList) {
                    if (removeProperty.getControl().isSupportMutil()
                            && removeProperty.getControl().isDynamic()) {
                        alterSqls.add("drop table " + dialect.openQuote() + newOne.getName().toUpperCase() + "_"
                                + removeProperty.getName().toUpperCase() + "_RELATION" + dialect.closeQuote());
                    } else {
                        if (((DialectExtention) dialect).needDropForeignKeyBeforeDropColumn()) {
                            ForeignKeyMetadata fkm = tableInfo.getForeignKeyMetadataByColumnNames(
                                    new String[] { removeProperty.getName().toUpperCase() });
                            if (fkm != null) {
                                alterSqls.add("alter table " + dialect.openQuote()
                                        + newOne.getName().toUpperCase() + dialect.closeQuote() + " "
                                        + dialect.getDropForeignKeyString() + " " + dialect.openQuote()
                                        + fkm.getName() + dialect.closeQuote());
                            }
                        }
                        alterSqls.add("alter table " + dialect.openQuote() + newOne.getName().toUpperCase()
                                + dialect.closeQuote() + " drop column " + dialect.openQuote()
                                + removeProperty.getName().toUpperCase() + dialect.closeQuote());
                    }
                }
                StringBuffer root = new StringBuffer("alter table ")
                        .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' ')
                        .append(dialect.getAddColumnString());
                Iterator<Column> iter = table.getColumnIterator();
                while (iter.hasNext()) {
                    Column column = iter.next();
                    PropertyDescription pd = null;
                    if ((pd = contains(column.getName(), addPropertyList)) != null) {
                        StringBuffer alter = new StringBuffer(root.toString()).append(' ')
                                .append(column.getQuotedName(dialect)).append(' ')
                                .append(column.getSqlType(dialect, mapping));

                        String defaultValue = column.getDefaultValue();
                        if (defaultValue != null) {
                            alter.append(" default ").append(defaultValue);

                            if (column.isNullable()) {
                                alter.append(dialect.getNullColumnString());
                            } else {
                                alter.append(" not null");
                            }

                        }

                        boolean useUniqueConstraint = column.isUnique() && dialect.supportsUnique()
                                && (!column.isNullable() || dialect.supportsNotNullUnique());
                        if (useUniqueConstraint) {
                            alter.append(" unique");
                        }

                        if (column.hasCheckConstraint() && dialect.supportsColumnCheck()) {
                            alter.append(" check(").append(column.getCheckConstraint()).append(")");
                        }

                        String columnComment = column.getComment();
                        if (columnComment != null) {
                            alter.append(dialect.getColumnComment(columnComment));
                        }

                        alterSqls.add(alter.toString());
                    } else if ((pd = contains(column.getName(), pdMap)) != null) {
                        PropertyDescription newPd = pd;
                        PropertyDescription oldPd = pdMap.get(pd);
                        if (!oldPd.getName().equalsIgnoreCase(newPd.getName())) {
                            StringBuffer renameColumn = new StringBuffer("alter table ")
                                    .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema))
                                    .append(' ').append(((DialectExtention) dialect).getRenameColumnString(
                                            oldPd.getName().toUpperCase(), newPd.getName().toUpperCase()));
                            if (((DialectExtention) dialect).isAddColumnDefinitionWhenRename()) {
                                renameColumn.append(" ");
                                renameColumn.append(column.getSqlType(dialect, mapping));
                            }
                            executeSql(conn, renameColumn.toString());
                        }

                        StringBuffer alterColumn = new StringBuffer("alter table ")
                                .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema))
                                .append(' ').append(((DialectExtention) dialect).getModifyColumnString(column))
                                .append(' ').append(column.getQuotedName(dialect));
                        alterColumn.append(" ");
                        alterColumn.append(column.getSqlType(dialect, mapping));
                        String defaultValue = column.getDefaultValue();
                        if (defaultValue != null) {
                            alterColumn.append(" default ").append(defaultValue);

                            if (column.isNullable()) {
                                alterColumn.append(dialect.getNullColumnString());
                            } else {
                                alterColumn.append(" not null");
                            }

                        }

                        boolean useUniqueConstraint = column.isUnique() && dialect.supportsUnique()
                                && (!column.isNullable() || dialect.supportsNotNullUnique());
                        if (useUniqueConstraint) {
                            alterColumn.append(" unique");
                        }

                        if (column.hasCheckConstraint() && dialect.supportsColumnCheck()) {
                            alterColumn.append(" check(").append(column.getCheckConstraint()).append(")");
                        }

                        String columnComment = column.getComment();
                        if (columnComment != null) {
                            alterColumn.append(dialect.getColumnComment(columnComment));
                        }
                        alterSqls.add(alterColumn.toString());
                    }
                }
            }
        }
        tableIter = cfg.getTableMappings();
        while (tableIter.hasNext()) {
            Table table = tableIter.next();
            Iterator<ForeignKey> subIter = table.getForeignKeyIterator();
            while (subIter.hasNext()) {
                ForeignKey fk = (ForeignKey) subIter.next();
                if (fk.isPhysicalConstraint()) {
                    TableMetadata tableInfo = meta.getTableMetadata(table.getName(),
                            (table.getSchema() == null) ? defaultSchema : table.getSchema(),
                            (table.getCatalog() == null) ? defaultCatalog : table.getCatalog(), table.isQuoted()

                    );
                    if (tableInfo == null) {
                        String[] cols = new String[fk.getColumnSpan()];
                        String[] refcols = new String[fk.getColumnSpan()];
                        int i = 0;
                        Iterator<Column> refiter = null;
                        if (fk.isReferenceToPrimaryKey()) {
                            refiter = fk.getReferencedTable().getPrimaryKey().getColumnIterator();
                        } else {
                            refiter = fk.getReferencedColumns().iterator();
                        }

                        Iterator<Column> columnIter = fk.getColumnIterator();
                        while (columnIter.hasNext()) {
                            cols[i] = ((Column) columnIter.next()).getQuotedName(dialect);
                            refcols[i] = ((Column) refiter.next()).getQuotedName(dialect);
                            i++;
                        }
                        String result = dialect
                                .getAddForeignKeyConstraintString(
                                        fk.getName(), cols, fk.getReferencedTable().getQualifiedName(dialect,
                                                defaultCatalog, defaultSchema),
                                        refcols, fk.isReferenceToPrimaryKey());
                        StringBuffer createFK = new StringBuffer("alter table ")
                                .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema))
                                .append(dialect.supportsCascadeDelete() ? result + " on delete cascade"
                                        : result);
                        alterSqls.add(createFK.toString());
                    }
                }
            }
        }
        this.executeSqls(conn, alterSqls);
    } catch (Exception e) {
        throw new PlutoException(e);
    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                log.error("", e);
            }
        }
    }
}

From source file:com.clican.pluto.orm.dynamic.impl.DataBaseOperationImpl.java

License:LGPL

@SuppressWarnings("unchecked")
public void createTable(Configuration cfg) {
    Connection conn = null;/*from w  ww. ja va2 s  . co m*/
    DatabaseMetadata meta = null;
    String defaultCatalog = cfg.getProperties().getProperty(Environment.DEFAULT_CATALOG);
    String defaultSchema = cfg.getProperties().getProperty(Environment.DEFAULT_SCHEMA);
    List<String> createSqls = new ArrayList<String>();
    try {
        conn = dataSource.getConnection();
        meta = new DatabaseMetadata(conn, dialect);
        Iterator<Table> tableIter = cfg.getTableMappings();
        Mapping mapping = cfg.buildMapping();
        while (tableIter.hasNext()) {
            Table table = (Table) tableIter.next();
            TableMetadata tableInfo = meta.getTableMetadata(table.getName(),
                    (table.getSchema() == null) ? defaultSchema : table.getSchema(),
                    (table.getCatalog() == null) ? defaultCatalog : table.getCatalog(), table.isQuoted()

            );
            if (tableInfo == null) {
                createSqls.add(table.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
            }
        }
        tableIter = cfg.getTableMappings();
        while (tableIter.hasNext()) {
            Table table = (Table) tableIter.next();
            Iterator<ForeignKey> subIter = table.getForeignKeyIterator();
            while (subIter.hasNext()) {
                ForeignKey fk = (ForeignKey) subIter.next();
                if (fk.isPhysicalConstraint()) {
                    TableMetadata tableInfo = meta.getTableMetadata(table.getName(),
                            (table.getSchema() == null) ? defaultSchema : table.getSchema(),
                            (table.getCatalog() == null) ? defaultCatalog : table.getCatalog(), table.isQuoted()

                    );
                    if (tableInfo == null) {
                        String[] cols = new String[fk.getColumnSpan()];
                        String[] refcols = new String[fk.getColumnSpan()];
                        int i = 0;
                        Iterator<Column> refiter = null;
                        if (fk.isReferenceToPrimaryKey()) {
                            refiter = fk.getReferencedTable().getPrimaryKey().getColumnIterator();
                        } else {
                            refiter = fk.getReferencedColumns().iterator();
                        }

                        Iterator<Column> columnIter = fk.getColumnIterator();
                        while (columnIter.hasNext()) {
                            cols[i] = ((Column) columnIter.next()).getQuotedName(dialect);
                            refcols[i] = ((Column) refiter.next()).getQuotedName(dialect);
                            i++;
                        }
                        String result = dialect
                                .getAddForeignKeyConstraintString(
                                        fk.getName(), cols, fk.getReferencedTable().getQualifiedName(dialect,
                                                defaultCatalog, defaultSchema),
                                        refcols, fk.isReferenceToPrimaryKey());
                        StringBuffer createFK = new StringBuffer("alter table ")
                                .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema))
                                .append(dialect.supportsCascadeDelete() ? result + " on delete cascade"
                                        : result);
                        createSqls.add(createFK.toString());
                    }
                }
            }
        }
        this.executeSqls(conn, createSqls);
    } catch (DDLException e) {
        throw e;
    } catch (Exception e) {
        throw new PlutoException(e);
    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                log.error("", e);
            }
        }
    }

}

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 {//from  w  ww  .  ja v  a  2  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 {//from   ww  w  . java 2  s  . 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 {/* w w  w. ja  v  a  2s . co  m*/
        //            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.netspective.tool.hibernate.document.diagram.HibernateDiagramGenerator.java

License:Open Source License

public void generate() {
    final GraphvizDiagramGenerator gdg = getGraphvizDiagramGenerator();
    final HibernateDiagramGeneratorFilter filter = getDiagramFilter();
    final Set includedTables = new HashSet();

    for (final Iterator classes = configuration.getClassMappings(); classes.hasNext();) {
        final PersistentClass pclass = (PersistentClass) classes.next();
        final Table table = (Table) pclass.getTable();
        if (filter.includeClassInDiagram(this, pclass)) {
            final HibernateDiagramTableNodeGenerator nodeGenerator = filter.getTableNodeGenerator(this, pclass);
            final GraphvizDiagramNode node = nodeGenerator.generateTableNode(this, filter, pclass);
            filter.formatTableNode(this, pclass, node);
            gdg.addNode(node);//from  ww  w  .  jav a  2  s .  co m
            includedTables.add(table);
        }
    }

    for (final Iterator classes = configuration.getClassMappings(); classes.hasNext();) {
        final PersistentClass pclass = (PersistentClass) classes.next();
        final Table table = (Table) pclass.getTable();
        if (includedTables.contains(table)) {
            FOREIGN_KEY: for (final Iterator fKeys = table.getForeignKeyIterator(); fKeys.hasNext();) {
                final ForeignKey foreignKey = (ForeignKey) fKeys.next();
                for (Iterator fKeyCols = foreignKey.getColumnIterator(); fKeyCols.hasNext();) {
                    final Column fKeyCol = (Column) fKeyCols.next();
                    if (!filter.includeColumnInDiagram(this, fKeyCol))
                        continue FOREIGN_KEY;
                }

                if (filter.includeForeignKeyEdgeInDiagram(this, foreignKey)
                        && includedTables.contains(foreignKey.getReferencedTable())) {
                    final HibernateDiagramTableNodeGenerator sourceTableNodeGenerator = filter
                            .getTableNodeGenerator(this, pclass);
                    final HibernateDiagramTableNodeGenerator refTableNodeGenerator = filter
                            .getTableNodeGenerator(this, getClassForTable(foreignKey.getReferencedTable()));

                    GraphvizDiagramEdge edge = new GraphvizDiagramEdge(gdg,
                            sourceTableNodeGenerator.getEdgeSourceElementAndPort(this, filter, foreignKey),
                            refTableNodeGenerator.getEdgeDestElementAndPort(this, filter, foreignKey));
                    filter.formatForeignKeyEdge(this, foreignKey, edge);
                    gdg.addEdge(edge);
                }
            }
        }
    }
}

From source file:com.netspective.tool.hibernate.document.diagram.HibernateDiagramTableStructureNodeGenerator.java

License:Open Source License

public GraphvizDiagramNode generateTableNode(final HibernateDiagramGenerator generator,
        final HibernateDiagramGeneratorFilter filter, final PersistentClass pclass) {
    final Table table = pclass.getTable();
    final StringBuffer primaryKeyRows = new StringBuffer();
    final StringBuffer childKeyRows = new StringBuffer();
    final StringBuffer columnRows = new StringBuffer();

    final PrimaryKey primaryKeyColumns = table.getPrimaryKey();
    final String indent = "        ";
    int hidden = 0;

    for (final Iterator columns = table.getColumnIterator(); columns.hasNext();) {
        final Column column = (Column) columns.next();

        if (filter.includeColumnInDiagram(generator, column)) {
            try {
                ForeignKey partOfForeignKey = null;
                for (Iterator fkIterator = table.getForeignKeyIterator(); fkIterator.hasNext();) {
                    final ForeignKey fKey = (ForeignKey) fkIterator.next();
                    if (fKey.containsColumn(column)) {
                        partOfForeignKey = fKey;
                        break;
                    }/*from   www  . jav a2 s .c  o  m*/
                }

                if (primaryKeyColumns.containsColumn(column))
                    primaryKeyRows.append(filter.getColumnDefinitionHtml(generator, column, primaryKeyColumns,
                            partOfForeignKey, showDataTypes, showConstraints, indent) + "\n");
                else if (partOfForeignKey != null && generator.isParentRelationship(partOfForeignKey))
                    childKeyRows.append(filter.getColumnDefinitionHtml(generator, column, null,
                            partOfForeignKey, showDataTypes, showConstraints, indent) + "\n");
                else
                    columnRows.append(filter.getColumnDefinitionHtml(generator, column, null, partOfForeignKey,
                            showDataTypes, showConstraints, indent) + "\n");
            } catch (SQLException e) {
                throw new HibernateDiagramGeneratorException(e);
            } catch (NamingException e) {
                throw new HibernateDiagramGeneratorException(e);
            }
        } else
            hidden++;
    }

    int colSpan = 1;
    if (showDataTypes)
        colSpan++;
    if (showConstraints)
        colSpan++;

    StringBuffer tableNodeLabel = new StringBuffer(
            "<<TABLE " + filter.getEntityTableHtmlAttributes(generator, pclass) + ">\n");
    tableNodeLabel.append("        <TR><TD COLSPAN=\"" + colSpan + "\" "
            + filter.getTableNameCellHtmlAttributes(generator, pclass) + ">" + table.getName()
            + "</TD></TR>\n");
    if (primaryKeyRows.length() > 0)
        tableNodeLabel.append(primaryKeyRows);
    if (childKeyRows.length() > 0)
        tableNodeLabel.append(childKeyRows);
    tableNodeLabel.append(columnRows);
    if (hidden > 0)
        tableNodeLabel.append(
                "        <TR><TD COLSPAN=\"" + colSpan + "\">(" + hidden + " columns not shown)</TD></TR>\n");
    tableNodeLabel.append("    </TABLE>>");

    GraphvizDiagramNode result = new GraphvizDiagramNode(generator.getGraphvizDiagramGenerator(),
            table.getName());
    result.setLabel(tableNodeLabel.toString());
    result.setShape("plaintext");
    result.setFontName("Helvetica");

    return result;
}

From source file:com.siemens.scr.avt.ad.query.common.NaturalJoinTreeLoadingStrategy.java

License:Open Source License

@Override
protected void load(NaturalJoinTree tree) {
    getConfig().buildMappings();/*w  w w.j a  v a 2s .  c  om*/
    Set<ForeignKey> fks = new HashSet<ForeignKey>();
    Iterator<Table> it = getConfig().getTableMappings();
    while (it.hasNext()) {
        Table t = it.next();
        Iterator<ForeignKey> fkIt = t.getForeignKeyIterator();
        while (fkIt.hasNext()) {
            fks.add(fkIt.next());
        }
    }
    processFKs(tree, fks);
}

From source file:com.vecna.dbDiff.hibernate.HibernateMappingsConverter.java

License:Apache License

/**
 * Convert a Hibernate table model to the DbDiff table model.
 * @param mappedTable hibernate table./*from w  ww.  j  av a2s  . c o  m*/
 * @return DbDiff table.
 */
private RelationalTable convertTable(org.hibernate.mapping.Table mappedTable) {
    RelationalTable table = new RelationalTable(m_catalogSchema, getTableName(mappedTable));

    List<Column> columns = new ArrayList<>();
    List<RelationalIndex> indices = new ArrayList<>();

    @SuppressWarnings("unchecked")
    Iterator<org.hibernate.mapping.Column> mappedColumns = mappedTable.getColumnIterator();
    int idx = 1;
    while (mappedColumns.hasNext()) {
        org.hibernate.mapping.Column mappedColumn = mappedColumns.next();
        Column column = convertColumn(mappedColumn, mappedTable, idx++);
        columns.add(column);
        if (mappedColumn.isUnique()) {
            indices.add(getUniqueIndex(table, column));
        }
    }

    table.setColumns(columns);

    Set<ForeignKey> fkeys = new HashSet<>();
    @SuppressWarnings("unchecked")
    Iterator<org.hibernate.mapping.ForeignKey> mappedKeys = mappedTable.getForeignKeyIterator();
    while (mappedKeys.hasNext()) {
        convertForeignKey(mappedKeys.next(), fkeys);
    }

    table.setFks(fkeys);

    @SuppressWarnings("unchecked")
    Iterator<Index> mappedIndices = mappedTable.getIndexIterator();

    while (mappedIndices.hasNext()) {
        indices.add(convertIndex(mappedIndices.next(), table));
    }

    @SuppressWarnings("unchecked")
    Iterator<UniqueKey> mappedUniqueKeys = mappedTable.getUniqueKeyIterator();
    while (mappedUniqueKeys.hasNext()) {
        indices.add(convertIndex(mappedUniqueKeys.next(), table));
    }

    if (mappedTable.getPrimaryKey() != null) {
        indices.add(convertIndex(mappedTable.getPrimaryKey(), table));
        List<String> pkColumnNames = new ArrayList<>();
        @SuppressWarnings("unchecked")
        Iterator<org.hibernate.mapping.Column> pkColumns = mappedTable.getPrimaryKey().getColumnIterator();
        while (pkColumns.hasNext()) {
            pkColumnNames.add(getColumnName(pkColumns.next()));
        }
        table.setPkColumns(pkColumnNames);
    }

    table.setIndices(indices);

    return table;
}

From source file:com.xpn.xwiki.store.migration.hibernate.R40000XWIKI6990DataMigration.java

License:Open Source License

/**
 * Check that a table contains at least a foreign key that refer to a primary key in its reference table.
 *
 * @param table the table to analyse/*from  www  .  j a va2  s . c o  m*/
 * @return true if the table contains at least a FK that refer to a PK
 */
private boolean checkFKtoPKinTable(Table table) {
    @SuppressWarnings("unchecked")
    Iterator<ForeignKey> fki = table.getForeignKeyIterator();
    while (fki.hasNext()) {
        ForeignKey fk = fki.next();
        if (fk.isReferenceToPrimaryKey()) {
            return true;
        }
    }
    return false;
}