/** * A normal column with an alternate name (alias). * All metadata is copied from the specified column descriptor. * * @param name * @param column */ public TapSelectItem(String name, ColumnDesc column) { this(name, column.getDatatype()); this.columnName = column.getColumnName(); this.tableName = column.getTableName(); this.description = column.description; this.id = column.id; this.indexed = column.indexed; this.principal = column.principal; this.std = column.std; this.ucd = column.ucd; this.unit = column.unit; this.utype = column.utype; }
public Object mapRow(ResultSet rs, int rowNum) throws SQLException { String tn = rs.getString("table_name"); String cn = rs.getString("column_name"); String dt = rs.getString("datatype"); String as = rs.getString("arraysize"); String xt = rs.getString("xtype"); log.debug("ColumnMapper: " + tn + "," + cn + "," + dt + "," + as + "," + xt); TapDataType datatype = new TapDataType(dt, as, xt); ColumnDesc col = new ColumnDesc(tn, cn, datatype); col.description = rs.getString("description"); col.utype = rs.getString("utype"); col.ucd = rs.getString("ucd"); col.unit = rs.getString("unit"); col.principal = intToBoolean(rs.getInt("principal")); col.indexed = intToBoolean(rs.getInt("indexed")); col.std = intToBoolean(rs.getInt("std")); col.id = rs.getString("id"); return col; }
/** * Create a VOTableField from a ColumnDesc. * * @param column * @return The associated VOTableField */ public static VOTableField convert(ColumnDesc column) { VOTableField vtf = new VOTableField( column.getColumnName(), column.getDatatype().getDatatype(), column.getDatatype().arraysize); vtf.xtype = column.getDatatype().xtype; return vtf; }
private String generateCreateIndex(ColumnDesc cd, boolean unique) { StringBuilder sb = new StringBuilder(); sb.append("CREATE"); if (unique) { sb.append(" UNIQUE"); } sb.append(" INDEX "); String indexName = "i_" + cd.getTableName().replace(".", "_") + "_" + cd.getColumnName(); sb.append(indexName); sb.append(" ON ").append(cd.getTableName()); String using = ddType.getIndexUsingQualifier(cd, unique); if (using != null) { sb.append(" USING ").append(using); } sb.append(" ("); sb.append(cd.getColumnName()); String iop = ddType.getIndexColumnOperator(cd); if (iop != null) { sb.append(" ").append(iop); } sb.append(")"); return sb.toString(); } }
if (columnDesc.getColumnName() == null || columnDesc.getColumnName().isEmpty()) continue; sb.append(columnDesc.getColumnName()); String fqn = sb.toString(); ColumnDesc newColumnDesc = new ColumnDesc(columnDesc.getTableName(), columnDesc.getColumnName(), columnDesc.getDatatype()); newTableDesc.getColumnDescs().add(newColumnDesc); if (tapSchemaParameters == null)
/** * 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
public ColumnDesc getColumn(String name) { for (ColumnDesc cd : columnDescs) { if (cd.getColumnName().equalsIgnoreCase(name)) return cd; } return null; }
/** * 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; } } } }
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; } }
log.debug("update: cur = " + cd.getColumnName()); curCols.add(cd.getColumnName()); log.debug("update: td = " + cd.getColumnName()); tdCols.add(cd.getColumnName()); ColumnDesc ncd = td.getColumn(cd.getColumnName()); if (!cd.getDatatype().equals(ncd.getDatatype())) { throw new UnsupportedOperationException("cannot change column type: " + cd.getColumnName() + " " + cd.getDatatype() + " -> " + ncd.getDatatype()); log.debug("put: " + cd.getColumnName()); pcs.setColumn(cd); jdbc.update(pcs);
@Override public String getIndexUsingQualifier(ColumnDesc columnDesc, boolean unique) { TypePair tp = findTypePair(columnDesc.getDatatype()); switch(tp.str) { case "spoint": case "scircle": case "spoly": case "polygon": if (unique) { throw new IllegalArgumentException("unique index not supported for column type: " + columnDesc.getDatatype()); } return "gist"; default: return null; } }
/** * find ColumnDesc for given TableDesc and columnName. * * @param td * @param columnName * @return */ private static ColumnDesc findColumnDesc(TableDesc tableDesc, String columnName) { String scol = stripQuotes(columnName); List<ColumnDesc> cdList = tableDesc.getColumnDescs(); for (ColumnDesc cd : cdList) { log.debug("findColumnDesc: " + cd.getColumnName() + " vs " + columnName + " " + scol); if (cd.getColumnName().equalsIgnoreCase(columnName) || cd.getColumnName().equalsIgnoreCase(scol)) { return cd; } // support unquoted usage when tap_schema says it is quoted? String tsCol = stripQuotes(cd.getColumnName()); if (tsCol.equalsIgnoreCase(columnName)) { return cd; } } return null; }
public void createIndex(ColumnDesc cd, boolean unique) { try { TapSchemaUtil.checkValidTableName(cd.getTableName()); } catch (ADQLIdentifierException ex) { throw new IllegalArgumentException("invalid table name: " + cd.getTableName(), ex); TapSchemaUtil.checkValidIdentifier(cd.getColumnName()); } catch (ADQLIdentifierException ex) { throw new IllegalArgumentException("invalid column name: " + cd.getColumnName(), ex); throw ex; throw new RuntimeException("failed to create index on " + cd.getTableName() + "(" + cd.getColumnName() + ")", ex); } finally { if (tm.isOpen()) {
safeSetString(sb, ps, col++, column.ucd); safeSetString(sb, ps, col++, column.unit); safeSetString(sb, ps, col++, column.getDatatype().getDatatype()); safeSetString(sb, ps, col++, column.getDatatype().arraysize); safeSetString(sb, ps, col++, column.getDatatype().xtype); safeSetBoolean(sb, ps, col++, column.principal); safeSetBoolean(sb, ps, col++, column.indexed); safeSetString(sb, ps, col++, column.id); safeSetInteger(sb, ps, col++, column.column_index); safeSetString(sb, ps, col++, column.getTableName()); safeSetString(sb, ps, col++, column.getColumnName()); log.debug("values: " + sb.toString());
addChild(eleColumn, "name", cd.getColumnName()); addChild(eleColumn, "description", cd.description); addChild(eleColumn, "unit", cd.unit); addChild(eleColumn, "utype", cd.utype); TapDataType tt = cd.getDatatype();
/** * * @param columnDesc * @return data type code for use in PreparedStatement set methods */ @Override public Integer getType(ColumnDesc columnDesc) { TapDataType tt = columnDesc.getDatatype(); TypePair dbt = findTypePair(tt); return dbt.num; }
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(); }
/** * Convert a VOTable field into tap_schema column descriptor. * * @param tableName * @param field * @return */ public static ColumnDesc convert(String tableName, VOTableField field) { TapDataType dt = new TapDataType(field.getDatatype(), field.getArraysize(), field.xtype); ColumnDesc ret = new ColumnDesc(tableName, field.getName(), dt); ret.description = field.description; ret.id = field.id; ret.ucd = field.ucd; ret.unit = field.unit; ret.utype = field.utype; ret.indexed = false; ret.principal = false; ret.std = false; return ret; }
TapDataType tt = columnDesc.getDatatype(); TypePair dbt = findTypePair(tt); if (dbt == null) {
private String generateCreate(TableDesc td) { StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE "); sb.append(td.getTableName()).append( "("); for (int i = 0; i < td.getColumnDescs().size(); i++) { ColumnDesc columnDesc = td.getColumnDescs().get(i); sb.append(columnDesc.getColumnName()); sb.append(" "); sb.append(ddType.getDataType(columnDesc)); sb.append(" null "); if (i + 1 < td.getColumnDescs().size()) sb.append(", "); } sb.append(")"); return sb.toString(); }