private TableDesc createTableDesc(TableDesc orig) { if (columnNames.size() == 0) { throw new IllegalArgumentException("No data columns."); } TableDesc tableDesc = new TableDesc(orig.getSchemaName(), orig.getTableName()); ColumnDesc colDesc = null; for (String col : columnNames) { colDesc = orig.getColumn(col); if (colDesc == null) { throw new IllegalArgumentException("Unrecognized column name: " + col); } tableDesc.getColumnDescs().add(colDesc); } return tableDesc; }
private TableDesc getInputTable(String schemaName, String tableName) { TableDesc input = (TableDesc) syncInput.getContent(INPUT_TAG); if (input == null) { throw new IllegalArgumentException("no input: expected a document describing the table to create"); } input.setSchemaName(schemaName); input.setTableName(tableName); int c = 0; for (ColumnDesc cd : input.getColumnDescs()) { cd.setTableName(tableName); cd.column_index = c++; } return input; } }
/** * Adds foreign keys (KeyDesc) to the from table. * * @param schemaDescs */ private void addForeignKeys(List<SchemaDesc> schemaDescs, List<KeyDesc> keyDescs) { for (KeyDesc key : keyDescs) { for (SchemaDesc sd : schemaDescs) { for (TableDesc td : sd.getTableDescs()) { if ( key.getFromTable().equals(td.getTableName())) { td.getKeyDescs().add(key); break; } } } } }
/** * Creates Lists of Columns with a common Table name, then adds the Lists to the Tables. * * @param tableDescs List of Tables. * @param columnDescs List of Columns. */ private void addColumnsToTables(List<TableDesc> tableDescs, List<ColumnDesc> columnDescs) { for (ColumnDesc col : columnDescs) { for (TableDesc tableDesc : tableDescs) { if (col.getTableName().equals(tableDesc.getTableName())) { tableDesc.getColumnDescs().add(col); break; } } } }
public TableDesc getTable(String name) { for (TableDesc td : tableDescs) { if (td.getTableName().equalsIgnoreCase(name)) return td; } return null; }
/** * @param td * @return */ private Element toXmlElement(TableDesc td, Namespace ns) { Element eleTable = new Element("table", ns); eleTable.setAttribute("type", "output"); Element ele; addChild(eleTable, "name", td.getTableName()); addChild(eleTable, "description", td.description); if (td.getColumnDescs() != null) for (ColumnDesc cd : td.getColumnDescs()) { Element e = toXmlElement(cd); if (e != null) eleTable.addContent(e); } if (td.getKeyDescs() != null) for (KeyDesc kd : td.getKeyDescs()) { Element e = toXmlElement(kd); if (e != null) eleTable.addContent(e); } return eleTable; }
safeSetString(sb, ps, col++, table.utype); safeSetInteger(sb, ps, col++, table.tableIndex); safeSetString(sb, ps, col++, table.getSchemaName()); safeSetString(sb, ps, col++, table.getTableName());
static TableDesc toTable(String schemaName, Element te, Namespace xsi) TableDesc td = new TableDesc(schemaName, tn); td.description = te.getChildTextTrim("description"); List<Element> cols = te.getChildren("column"); ColumnDesc cd = new ColumnDesc(tn, cn, tt); cd.description = ce.getChildTextTrim("description"); td.getColumnDescs().add(cd); kd.getKeyColumnDescs().add(kcd); td.getKeyDescs().add(kd);
/** * Deep copy. * * @param tableDesc * @return deep copy of the columns of a table */ public static List<ColumnDesc> getParamDescList(TableDesc tableDesc) { List<ColumnDesc> list = new ArrayList<>(); list.addAll(tableDesc.getColumnDescs()); return list; }
TableDesc ret = new TableDesc(schemaName, tableName); if (votable == null) { throw new IllegalArgumentException("invalid input: no VOTable with column metadata"); ColumnDesc columnDesc = TapSchemaUtil.convert(tableName, f); log.debug("column: " + f + " -> " + columnDesc); ret.getColumnDescs().add(columnDesc); } catch (ADQLIdentifierException ex) { throw new IllegalArgumentException("invalid ADQL identifier (column name): " + f.getName(), ex);
log.debug("upload table: " + databaseTableName + " aka " + tableDesc); final String tableName = tableDesc.getTableName(); tableDesc.setTableName(databaseTableName); tableDesc.setTableName(tableName);
@Override public boolean isTapSchemaQuery() { doNavigate(); int ts = 0; int nts = 0; for (TableDesc td : tstValidator.getTables()) { if ("tap_schema".equalsIgnoreCase(td.getSchemaName())) { ts++; } else { nts++; } } if (ts > 0 && nts == 0) { return true; } if (ts == 0 && nts > 0) { return false; } throw new UnsupportedOperationException("access tap_schema and non-tap_schema tables in single query"); }
ret.getColumnDescs().addAll(columnDescs); ret.getKeyDescs().addAll(keyDescs);
public Object mapRow(ResultSet rs, int rowNum) throws SQLException { String sn = rs.getString("schema_name"); String tn = rs.getString("table_name"); TableDesc tableDesc = new TableDesc(sn, tn); tableDesc.tableType = TableDesc.TableType.toValue(rs.getString("table_type")); tableDesc.description = rs.getString("description"); tableDesc.utype = rs.getString("utype"); return tableDesc; } }
private Map<String, Format> createColumnFormats() { columnFormats = new HashMap<String, Format>(columnNames.size()); for (String col : columnNames) { ColumnDesc colDesc = tableDesc.getColumn(col); VOTableField voTableField = TapSchemaUtil.convert(colDesc); Format format = formatFactory.getFormat(voTableField); columnFormats.put(col, format); } return columnFormats; }
private String generateInsertSQL(TableDesc td) { StringBuilder sb = new StringBuilder("insert into "); sb.append(td.getTableName()); sb.append(" ("); for (ColumnDesc cd : td.getColumnDescs()) { sb.append(cd.getColumnName()); sb.append(", "); } sb.setLength(sb.length() - 2); sb.append(") values ("); for (ColumnDesc cd : td.getColumnDescs()) { sb.append("?, "); } sb.setLength(sb.length() - 2); sb.append(")"); return sb.toString(); }
@Override public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { StringBuilder sb = new StringBuilder(); sb.append("DELETE FROM ").append(tablesTableName); sb.append(" WHERE table_name=?"); String sql = sb.toString(); log.debug(sql); PreparedStatement ps = conn.prepareStatement(sql); sb = new StringBuilder(); int col = 1; safeSetString(sb, ps, col++, table.getTableName()); log.debug("values: " + sb.toString()); return ps; } }
/** * Remove redundant metadata like TAP-1.0 xtypes for primitive columns. * * @param td */ protected void sanitizeTable(TableDesc td) { for (ColumnDesc cd : td.getColumnDescs()) { String xtype = cd.getDatatype().xtype; if (TapConstants.TAP10_TIMESTAMP.equals(xtype)) cd.getDatatype().xtype = "timestamp"; // DALI-1.1 if (oldXtypes.contains(xtype)) cd.getDatatype().xtype = null; } } // TAP-1.0 xtypes that can just be dropped from ColumnDesc
@Override public boolean isTapSchemaQuery() { doNavigate(); int ts = 0; int nts = 0; for (TableDesc td : tstValidator.getTables()) { if ("tap_schema".equalsIgnoreCase(td.getSchemaName())) { ts++; } else { nts++; } } if (ts > 0 && nts == 0) { return true; } if (ts == 0 && nts > 0) { return false; } throw new UnsupportedOperationException("access tap_schema and non-tap_schema tables in single query"); }
ColumnDesc cd = td.getColumn(columnName); if (cd == null) { throw new IllegalArgumentException("column not found: " + columnName + " in table " + tableName);