Search in sources :

Example 1 with Table

use of info.xiancloud.dao.global.Table in project xian by happyyangyuan.

the class BaseUpdateDB method getActions.

@Override
public Action[] getActions() {
    return new Action[] { new UpdateAction() {

        private Table table;

        public Table getTable(Map map) {
            if (table != null) {
                return table;
            }
            Object tableName = map.get("$tableName");
            if (tableName instanceof String) {
                table = TableHeader.getTable(map.get("$tableName").toString());
                if (table.getType().equals(Table.Type.view)) {
                    throw new RuntimeException(String.format("视图:%s,不允许操作 BaseUpdateDB", table.getName()));
                }
                return table;
            }
            return null;
        }

        @Override
        public String table() {
            Table table = getTable(map);
            return table == null ? "" : table.getName();
        }

        @Override
        public String[] unique() {
            Table table = getTable(map);
            return table == null ? new String[] {} : table.getUnique();
        }

        @Override
        protected String[] where() {
            List<String> whereList = new ArrayList<String>();
            Object tableName = map.get("$tableName");
            if (tableName instanceof String) {
                Map<String, Class<?>> columns = TableHeader.getTableColumnTypeMap(tableName.toString(), connection);
                for (Entry<String, Class<?>> entry : columns.entrySet()) {
                    String key = entry.getKey();
                    if (map.containsKey(StringUtil.underlineToCamel(key))) {
                        whereList.add(String.format("%s = {%s}", key, StringUtil.underlineToCamel(key)));
                    }
                }
            }
            // 这里不允许执行整表修改功能
            if (whereList.size() > 0) {
                return whereList.toArray(new String[] {});
            }
            return new String[] { "1 < 0" };
        }
    } };
}
Also used : Action(info.xiancloud.dao.jdbc.sql.Action) UpdateAction(info.xiancloud.dao.jdbc.sql.UpdateAction) Table(info.xiancloud.dao.global.Table) UpdateAction(info.xiancloud.dao.jdbc.sql.UpdateAction) ArrayList(java.util.ArrayList) Map(java.util.Map)

Example 2 with Table

use of info.xiancloud.dao.global.Table in project xian by happyyangyuan.

the class BaseDeleteDB method getActions.

@Override
public Action[] getActions() {
    return new Action[] { new DeleteAction() {

        @Override
        public String table() {
            Object tableName = map.get("$tableName");
            if (tableName instanceof String) {
                Table table = TableHeader.getTable(map.get("$tableName").toString());
                if (table.getType().equals(Table.Type.view)) {
                    throw new RuntimeException(String.format("视图:%s,不允许操作 BaseDeleteDB", table.getName()));
                }
                return table.getName();
            }
            return "";
        }

        @Override
        protected String[] where() {
            List<String> whereList = new ArrayList<String>();
            Object tableName = map.get("$tableName");
            if (tableName instanceof String) {
                Map<String, Class<?>> columns = TableHeader.getTableColumnTypeMap(tableName.toString(), connection);
                for (Entry<String, Class<?>> entry : columns.entrySet()) {
                    String key = entry.getKey();
                    Object value = map.get(StringUtil.underlineToCamel(key));
                    if (value != null) {
                        String[] array = QueryAction.fmtObjectToStrArray(value);
                        if (array != null) {
                            whereList.add(String.format("%s in {%s}", key, StringUtil.underlineToCamel(key)));
                        } else {
                            whereList.add(String.format("%s = {%s}", key, StringUtil.underlineToCamel(key)));
                        }
                    }
                }
            }
            // 这里不允许执行整表删除功能
            if (whereList.size() > 0) {
                return whereList.toArray(new String[] {});
            }
            return new String[] { "1 < 0" };
        }
    } };
}
Also used : Action(info.xiancloud.dao.jdbc.sql.Action) QueryAction(info.xiancloud.dao.jdbc.sql.QueryAction) DeleteAction(info.xiancloud.dao.jdbc.sql.DeleteAction) Table(info.xiancloud.dao.global.Table) ArrayList(java.util.ArrayList) DeleteAction(info.xiancloud.dao.jdbc.sql.DeleteAction)

Aggregations

Table (info.xiancloud.dao.global.Table)2 Action (info.xiancloud.dao.jdbc.sql.Action)2 ArrayList (java.util.ArrayList)2 DeleteAction (info.xiancloud.dao.jdbc.sql.DeleteAction)1 QueryAction (info.xiancloud.dao.jdbc.sql.QueryAction)1 UpdateAction (info.xiancloud.dao.jdbc.sql.UpdateAction)1 Map (java.util.Map)1