package com.github.geequery.codegen;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jef.database.DbUtils;
import jef.database.meta.Column;
import jef.database.meta.ForeignKey;
import jef.database.meta.PrimaryKey;
public class Metadata{
private PrimaryKey primaryKey;
private List<Column> columns;
private List<ForeignKey> foreignKey;
private Map<String, String> custParams;
public Map<String, String> getCustParams() {
return custParams;
}
public void setCustParams(Map<String, String> custParams) {
this.custParams = custParams;
}
public List<ForeignKey> getForeignKey() {
return foreignKey;
}
public void setForeignKey(List<ForeignKey> foreignKey) {
this.foreignKey = foreignKey;
}
public PrimaryKey getPrimaryKey() {
return primaryKey;
}
public void setPrimaryKey(PrimaryKey primaryKey) {
this.primaryKey = primaryKey;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
public Column findColumn(String columnName) {
for(Column c: columns){
if(columnName.equalsIgnoreCase(c.getColumnName())){
return c;
}
}
return null;
}
public static class ColumnEx extends Column{
private String fieldName;
private Boolean generated; //强制描述是否为自动生成键值
private Class<?> javaType;
private String initValue;
private String annotation;
public String getAnnotation() {
return annotation;
}
public void setAnnotation(String annotation) {
this.annotation = annotation;
}
public String getInitValue() {
return initValue;
}
public void setInitValue(String initValue) {
this.initValue = initValue;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public Class<?> getJavaType() {
return javaType;
}
public void setJavaType(Class<?> javaType) {
this.javaType = javaType;
}
public Boolean getGenerated() {
return generated;
}
public void setGenerated(Boolean generated) {
this.generated = generated;
}
}
public static class ForeignKeyEx extends ForeignKey{
private String fieldName;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
}
/**
* 将主键拆分为由字段名/列名构成的对
* @param data
* @return
*/
public Map<String,String> getPkFieldAndColumnNames(){
Map<String,String> pkColumns=new HashMap<String,String>();
if(getPrimaryKey()!=null){
for(String columnName: getPrimaryKey().getColumns()){
Column column=findColumn(columnName);
String fieldName;
if(column instanceof ColumnEx){
fieldName=((ColumnEx) column).getFieldName();
}else{
fieldName=DbUtils.underlineToUpper(columnName.toLowerCase(),false);
}
pkColumns.put(fieldName,columnName);
}
}
return pkColumns;
}
}