public void dealOneEntry(byte[] bs, Object obj) throws Exception { if ((bs == null) || (obj == null)) { return; } if (obj instanceof String) { String name = obj.toString(); if (name.startsWith("File:")) { dealFile(name, bs); } else if (name.startsWith("CustomTable:")) { name = name.substring("CustomTable:".length()); this.task.setCurrentInfo("正在导入自定义表:" + name); DataTable dt = (DataTable) FileUtil.unserialize(bs); try { if (!this.customTableMap.containsKey(name)) { QueryBuilder qb = new QueryBuilder( "select * from ZCCustomTableColumn where exists (select ID from ZCCustomTable where SiteID=? and Code=? and Type='Custom' and ZCCustomTableColumn.TableID=ID)", this.newSiteID, name); DataTable cdt = this.da.executeDataTable(qb); SchemaColumn[] scs = new SchemaColumn[cdt.getRowCount()]; for (int j = 0; j < scs.length; ++j) { DataRow cdr = cdt.getDataRow(j); int type = Integer.parseInt(cdr.getString("DataType")); SchemaColumn sc = new SchemaColumn( cdr.getString("Code"), type, j, cdr.getInt("Length"), 0, "Y".equals(cdr.getString("isMandatory")), "Y".equals(cdr.getString("isPrimaryKey"))); scs[j] = sc; } TableCreator tc = new TableCreator(this.da.getConnection().getDBConfig().DBType); tc.createTable(scs, name, true); tc.executeAndClear(this.da.getConnection()); this.customTableMap.put(name, ""); StringBuffer sb = new StringBuffer("insert into " + name + "("); for (int j = 0; j < cdt.getRowCount(); ++j) { if (j != 0) { sb.append(","); } sb.append(cdt.get(j, "Code")); } sb.append(") values ("); for (int j = 0; j < cdt.getRowCount(); ++j) { if (j != 0) { sb.append(","); } sb.append("?"); } sb.append(")"); this.insertQB = new QueryBuilder(sb.toString()); this.insertQB.setBatchMode(true); } dealCustomTable(dt, this.insertQB); } catch (Exception e) { LogUtil.warn("未成功导入表" + name); e.printStackTrace(); } } else { dealSiteIDTable(name, (DataTable) FileUtil.unserialize(bs)); } } else { dealRelaTable((SiteTableRela.TableRela) obj, (DataTable) FileUtil.unserialize(bs)); } }