qobjectdb.java

来自「cwbbs 云网论坛源码」· Java 代码 · 共 1,053 行 · 第 1/3 页

JAVA
1,053
字号
        if (!listCachable)            return;        try {                        QCache.getInstance().invalidateGroup(cacheGroupCount + groupName);            QCache.getInstance().invalidateGroup(cacheGroup + groupName);                                } catch (Exception e) {            LogUtil.getLog(this.getClass()).error(e.getMessage());        }    }    public void refreshCreate() {        refreshCreate("");    }    public void refreshCreate(String groupName) {        if (!listCachable)            return;        refreshList(groupName);    }    public void refreshSave(PrimaryKey pk) {        if (!objCachable)            return;        refresh(pk);    }    public void refreshDel(PrimaryKey pk) {        refreshDel(pk, "");    }    public void refreshDel(PrimaryKey pk, String groupName) {        try {            if (objCachable)                refresh(pk);            if (listCachable) {                refreshList(groupName);            }        } catch (Exception e) {            LogUtil.getLog(this.getClass()).error("refreshDel:" + e.getMessage());        }    }    public boolean del() throws ResKeyException {        return del(new JdbcTemplate(new Connection(table.getConnName())));    }    public boolean del(JdbcTemplate jt) throws ResKeyException {        boolean re = false;        Object[] params = primaryKey.toObjectArray();        try {            re = jt.executeUpdate(table.getQueryDel(), params) == 1;        } catch (SQLException e) {            LogUtil.getLog(getClass()).error("del:" + e.getMessage());            throw new ResKeyException(SkinUtil.ERR_DB);        }                refreshDel(primaryKey);        return re;    }    public boolean save(JdbcTemplate jt, Object[] params) throws SQLException {        boolean re = false;        re = jt.executeUpdate(table.getQuerySave(), params) == 1;                refreshSave(primaryKey);        return re;    }    public boolean save() throws ResKeyException {        return save(new JdbcTemplate(new Connection(table.getConnName())));    }    public synchronized boolean save(ParamChecker paramChecker) throws ResKeyException,            ErrMsgException {        return save(new JdbcTemplate(new Connection(table.getConnName())), paramChecker);    }    public synchronized boolean save(JdbcTemplate jt, ParamChecker paramChecker) throws ResKeyException,            ErrMsgException {        String[] fieldsForSave = getFieldsFromQuerySave();        if (fieldsForSave == null)            throw new IllegalArgumentException("fieldsForSave is null.");        int len = fieldsForSave.length;        ResultRecord resultRecord = getResultRecord();        for (int i = 0; i < len; i++) {            resultRecord.set(fieldsForSave[i],                             paramChecker.getValue(fieldsForSave[i]));        }        return save(jt);    }        public boolean save(JdbcTemplate jt) throws ResKeyException {        String[] fieldsForSave = getFieldsFromQuerySave();        if (fieldsForSave == null)            return false;        int len = fieldsForSave.length;        Object[] paramsPk = primaryKey.toObjectArray();                Object[] params = new Object[fieldsForSave.length + paramsPk.length];        for (int i = 0; i < len; i++) {            params[i] = resultRecord.get(fieldsForSave[i]);        }        len = params.length;        int k = 0;        for (int i = fieldsForSave.length; i < len; i++) {            params[i] = paramsPk[k];            k++;        }        boolean re = false;        try {            re = save(jt, params);        } catch (SQLException e) {            LogUtil.getLog(getClass()).error("save:" + e.getMessage());            throw new ResKeyException(SkinUtil.ERR_DB);        }        return re;    }    public String[] getFieldsFromQueryCreate() {        String queryCreate = table.getQueryCreate();        int p = queryCreate.indexOf("(");        int q = queryCreate.indexOf(")");        if (p == -1)            return null;        if (q == -1)            return null;        String str = queryCreate.substring(p + 1, q);                str = str.replaceAll(" ", "");        String[] ary = StrUtil.split(str, ",");        return ary;    }        public String[] getFieldsFromQuerySave() {        String querySave = table.getQuerySave();        int p = querySave.indexOf("set");        if (p == -1)            return null;        p += 4;        int q = querySave.indexOf("where");                                String str = querySave.substring(p, q - 1);                str = str.replaceAll(" ", "");                str = str.replaceAll("=\\?", "");        String[] ary = StrUtil.split(str, ",");        return ary;    }    public ListResult listResult(String sql, Object[] params, int curPage,                                 int pageSize) throws            ResKeyException {        return listResult(Global.defaultDB, sql, params, curPage, pageSize);    }        public ListResult listResult(String connName, String sql, Object[] params, int curPage,                                 int pageSize) throws            ResKeyException {        int total = 0;        Vector result = new Vector();        ListResult lr = new ListResult();        lr.setTotal(total);        lr.setResult(result);        JdbcTemplate jt = new JdbcTemplate(new Connection(connName));        try {                        String countsql = SQLFilter.getCountSql(sql);            ResultIterator ri = jt.executeQuery(countsql, params);            if (ri.hasNext()) {                ResultRecord rr = (ResultRecord) ri.next();                total = rr.getInt(1);            }                        int totalpages = (int) Math.ceil((double) total / pageSize);            if (curPage > totalpages)                curPage = totalpages;            if (curPage <= 0)                curPage = 1;            jt = new JdbcTemplate(new Connection(connName));            if (total != 0) {                jt.getConnection().setMaxRows(curPage * pageSize);             }            ri = jt.executeQuery(sql, params, curPage, pageSize);            while (ri.hasNext()) {                ResultRecord rr = (ResultRecord) ri.next();                if (primaryKey.getType() == PrimaryKey.TYPE_INT) {                    result.addElement(getQObjectDb(new Integer(rr.getInt(1))));                } else if (primaryKey.getType() == PrimaryKey.TYPE_STRING)                    result.addElement(getQObjectDb(rr.getString(1)));                else if (primaryKey.getType() == PrimaryKey.TYPE_LONG)                    result.addElement(getQObjectDb(new Long(rr.getLong(1))));                else if (primaryKey.getType() == PrimaryKey.TYPE_COMPOUND) {                    HashMap keys = ((PrimaryKey)primaryKey.clone()).getKeys();                    Iterator ir = keys.keySet().iterator();                    while (ir.hasNext()) {                        String keyName = (String) ir.next();                        KeyUnit ku = (KeyUnit) keys.get(keyName);                        if (ku.getType() == primaryKey.TYPE_INT) {                            ku.setValue(new Integer(rr.getInt(ku.getOrders() + 1)));                        } else if (ku.getType() == primaryKey.TYPE_LONG) {                            ku.setValue(new Long(rr.getLong(ku.getOrders() + 1)));                        } else {                            ku.setValue(rr.getString(ku.getOrders() + 1));                        }                    }                    result.addElement(getQObjectDb(keys));                }            }        } catch (SQLException e) {            LogUtil.getLog(this.getClass()).error("listResult:" + e.getMessage());            throw new ResKeyException(SkinUtil.ERR_DB);        }        lr.setResult(result);        lr.setTotal(total);        return lr;    }    public ListResult listResult(String sql, int curPage, int pageSize) throws            ResKeyException {        return listResult(new JdbcTemplate(new Connection(table.getConnName())),                          sql, curPage, pageSize);    }    public ListResult listResult(JdbcTemplate jt, String sql, int curPage,                                 int pageSize) throws            ResKeyException {        int total = 0;        ResultSet rs = null;        Vector result = new Vector();        ListResult lr = new ListResult();        lr.setTotal(total);        lr.setResult(result);        Connection conn = jt.getConnection();         try {                        String countsql = SQLFilter.getCountSql(sql);            rs = conn.executeQuery(countsql);            if (rs != null && rs.next()) {                total = rs.getInt(1);            }            if (rs != null) {                rs.close();                rs = null;            }                        int totalpages = (int) Math.ceil((double) total / pageSize);            if (curPage > totalpages)                curPage = totalpages;            if (curPage <= 0)                curPage = 1;            if (total != 0)                conn.setMaxRows(curPage * pageSize);             rs = conn.executeQuery(sql);            if (rs == null) {                return lr;            } else {                rs.setFetchSize(pageSize);                int absoluteLocation = pageSize * (curPage - 1) + 1;                if (rs.absolute(absoluteLocation) == false) {                    return lr;                }                do {                    if (primaryKey.getType() == PrimaryKey.TYPE_INT) {                        result.addElement(getQObjectDb(new Integer(rs.getInt(1))));                    } else if (primaryKey.getType() == PrimaryKey.TYPE_STRING)                        result.addElement(getQObjectDb(rs.getString(1)));                    else if (primaryKey.getType() == PrimaryKey.TYPE_LONG)                        result.addElement(getQObjectDb(new Long(rs.getLong(1))));                    else if (primaryKey.getType() == PrimaryKey.TYPE_COMPOUND) {                        HashMap keys = ((PrimaryKey)primaryKey.clone()).getKeys();                        Iterator ir = keys.keySet().iterator();                        while (ir.hasNext()) {                            String keyName = (String) ir.next();                            KeyUnit ku = (KeyUnit) keys.get(keyName);                            if (ku.getType() == primaryKey.TYPE_INT) {                                ku.setValue(new Integer(rs.getInt(ku.getOrders() + 1)));                            } else if (ku.getType() == primaryKey.TYPE_LONG) {                                ku.setValue(new Long(rs.getLong(ku.getOrders() + 1)));                            } else {                                                                                                ku.setValue(rs.getString(ku.getOrders() + 1));                            }                        }                        result.addElement(getQObjectDb(keys));                    }                } while (rs.next());            }        } catch (SQLException e) {            LogUtil.getLog(this.getClass()).error("listResult:" + StrUtil.trace(e));            throw new ResKeyException(SkinUtil.ERR_DB);        } finally {            if (rs != null) {                try {                    rs.close();                } catch (Exception e) {}                rs = null;            }            if (conn != null) {                conn.close();                conn = null;            }        }        lr.setResult(result);        lr.setTotal(total);        return lr;    }    public Vector list() {        return list(new JdbcTemplate(new Connection(table.getConnName())),                    table.getQueryList());    }    public Vector list(String sql) {        return list(new JdbcTemplate(new Connection(table.getConnName())), sql);    }    public Vector list(String sql, Object[] params) {        return list(new JdbcTemplate(new Connection(table.getConnName())), sql, params);    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?