modelmanager.java
来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 103 行
JAVA
103 行
package anni.model;
import java.util.*;
import anni.database.*;
public class ModelManager {
private Map<String, TableModel> tableModels = new HashMap<String, TableModel>();
private List<FkModel> fkModels = new ArrayList<FkModel>();
//
public Map<String, TableModel> getTableModels() {
return tableModels;
}
public List<FkModel> getFkModels() {
return fkModels;
}
//
public void transform(Database database) {
// tables
Map<String, Table> tables = database.getTables();
// 先设置所有的属性
for (Table table : tables.values()) {
String tableName = table.getName();
TableModel tableModel = new TableModel(tableName);
tableModels.put(tableName, tableModel);
int index = 0;
// 主键
for (Pk pk : table.getPks().values()) {
String name = pk.getColumn().toString();
CellModel cellModel = new CellModel(name,
CellModel.TYPE_PK, index);
tableModel.getLines().add(cellModel);
index++;
}
// 普通
for (Column column : table.getColumns().values()) {
if (column.isPk() || column.isFk()) {
continue;
}
String name = column.toString();
CellModel cellModel = new CellModel(name,
CellModel.TYPE_COLUMN, index);
tableModel.getLines().add(cellModel);
index++;
}
// 外键
for (Fk fk : table.getFks().values()) {
String name = fk.getFkColumn().toString();
CellModel cellModel = new CellModel(name,
CellModel.TYPE_FK, index);
tableModel.getLines().add(cellModel);
index++;
}
}
// 再计算x,y,w,h
int x = 10;
int y = 10;
for (TableModel tableModel : tableModels.values()) {
tableModel.setX(x);
tableModel.setY(y);
x += (tableModel.getW() + 10);
if (x > 800) {
x = 10;
y += 280;
}
}
// fks
Map<String, Fk> fks = database.getFks();
for (Fk fk : fks.values()) {
String fkTableName = fk.getFkColumn().getTable().getName();
String pkTableName = fk.getPkColumn().getTable().getName();
TableModel fkTable = tableModels.get(fkTableName);
TableModel pkTable = tableModels.get(pkTableName);
FkModel fkModel = new FkModel(fk.getName(), fkTable, pkTable);
fkModels.add(fkModel);
}
}
public static ModelManager createModelManager(Database database) {
ModelManager modelManager = new ModelManager();
modelManager.transform(database);
return modelManager;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?