forked from LupusNobilis/java-org.hwo
sql.Schema hinzugefügt
parent
1b29de87ef
commit
32059369c6
|
@ -0,0 +1,147 @@
|
|||
package org.hwo.sql;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.hwo.StringHelper;
|
||||
|
||||
public class Schema {
|
||||
|
||||
Connection database;
|
||||
List<Table> tables;
|
||||
|
||||
public Schema(Connection database){
|
||||
this.database = database;
|
||||
this.tables = new ArrayList<Schema.Table>();
|
||||
|
||||
scanTables();
|
||||
}
|
||||
|
||||
private void scanTables(){
|
||||
ResultSet rsTables;
|
||||
try {
|
||||
rsTables = database.getMetaData().getTables(null, null, null, new String[]{"TABLE"});
|
||||
while (rsTables.next()){
|
||||
tables.add(new Table(rsTables.getString("TABLE_NAME")));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void print(){
|
||||
|
||||
for (Table t: tables){
|
||||
System.err.println(t.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class Table {
|
||||
private String name;
|
||||
private ArrayList<Column> columns;
|
||||
|
||||
public Table(String name) throws SQLException{
|
||||
this.name = name;
|
||||
this.columns = new ArrayList<Schema.Table.Column>();
|
||||
scan();
|
||||
}
|
||||
public Table(){
|
||||
this.name = "";
|
||||
this.columns = new ArrayList<Schema.Table.Column>();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
Column[] getColumns(){
|
||||
return columns.toArray(new Column[0]);
|
||||
}
|
||||
|
||||
Column getColumn(String name){
|
||||
for (Column c: columns){
|
||||
if (c.getName().equals(name))
|
||||
return c;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void addColumn(Column c){
|
||||
columns.add(c);
|
||||
}
|
||||
void removeColumn(Column c){
|
||||
columns.remove(c);
|
||||
}
|
||||
void removeColumn(String name){
|
||||
columns.remove(getColumn(name));
|
||||
}
|
||||
|
||||
private void scan() throws SQLException {
|
||||
ResultSet rsColumns = database.getMetaData().getColumns(null, null, name, null);
|
||||
|
||||
while (rsColumns.next()){
|
||||
addColumn(new Column(rsColumns.getString("COLUMN_NAME"), rsColumns.getString("TYPE_NAME"), rsColumns.getInt("COLUMN_SIZE")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("TABLE %s (%s)",name,StringHelper.join(columns, ","));
|
||||
}
|
||||
|
||||
public class Column {
|
||||
private String name;
|
||||
private String sqltype;
|
||||
private Integer size;
|
||||
|
||||
public Column(String name,String sqltype,Integer size) {
|
||||
this.name = name;
|
||||
this.sqltype = sqltype;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getSqltype() {
|
||||
return sqltype;
|
||||
}
|
||||
public void setSqltype(String sqltype) {
|
||||
this.sqltype = sqltype;
|
||||
}
|
||||
|
||||
public Integer getSize() {
|
||||
return size;
|
||||
}
|
||||
public void setSize(Integer size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (!size.equals(0)){
|
||||
return String.format("%s %s(%d)", name, sqltype, size);
|
||||
} else {
|
||||
return String.format("%s %s", name, sqltype);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue