All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.oiue.table.structure.TableExt Maven / Gradle / Ivy

There is a newer version: 1.2.0
Show newest version
package org.oiue.table.structure;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.oiue.table.structure.TableModel;
import org.oiue.tools.list.ListUtil;

/**
 * @author Every{王勤}
 *
 */
@SuppressWarnings({"serial","unchecked","rawtypes"})
public class TableExt extends Table implements Serializable {
//	Integer resclassID=0;  //分类id
//	Integer resTableID=0;  //表id
	String parentAutoCode=""; //当前表的父节点autocode

	public TableModel convertTM(TableModel tm){
		tm.put("filedName",this.getName());
//		tm.put("resClassID",this.getResclassID());
		tm.put("autoCode",this.getParentAutoCode());
		tm.put("name",this.getComment());
		tm.put("description",this.getComment());
		return tm;
	}
	public String getParentAutoCode() {
		return parentAutoCode;
	}

	public void setParentAutoCode(String parentAutoCode) {
		this.parentAutoCode = parentAutoCode;
	}

//	public Integer getResclassID() {
//		return resclassID;
//	}
//
//	public void setResclassID(Integer resclassID) {
//		this.resclassID = resclassID;
//	}
//
//	public Integer getResTableID() {
//		return resTableID;
//	}
//
//	public void setResTableID(Integer resTableID) {
//		this.resTableID = resTableID;
//	}

	public TableExt() {
		this("", "");
	}

	public TableExt(String name) {
		this(name, "");
	}

	public TableExt(String name, String id) {
		this(name, id, "");
	}

	public TableExt(String name, String id, String idGenerator) {
		super(name, id, idGenerator);
	}

	/**
	 * 调试
	 * @return String
	 */
	public String toString() {
		return "TABLE\tname=" + this.getTableName() 
			+ ";field number=" + this.getFields().size() 
			+ ";pk field number=" + this.getPrimaryField().size()
			+ ";id=" + this.getId() 
			+ ";generator=" + this.getIdGenerator() ;
	}
	
	/**
	 * 为表添加字段
	 * @param key String
	 * @param field field
	 */
	public void addField(String key, Field field) {
		super.getFields().put(key, field);
	}
	/**
	 * 根据字段名称移除字段
	 * @param fieldName String
	 */
	public void removeField(String fieldName) {
		super.getFields().remove(fieldName);
	}
	/**
	 * 根据字段名查找字段
	 * @param fieldName 字段名
	 * @return Filed 字段 
	 */
	public Field findField(String fieldName) {
		return (Field) super.getFields().get(fieldName);
	}
	/**
	 * 根据字段的名字查找字段
	 * 此方式忽略字符串大小写
	 * @param fieldName 忽略字段
	 * @return 字段
	 */
	public Field findFieldIgnoreCase(String fieldName) {
		if (fieldName==null) {
			return null;
		}
		Iterator it=super.getFields().values().iterator();
		while(it.hasNext()){
			Field field=(Field)it.next();
			if(fieldName.equalsIgnoreCase(field.getName()))return field;
		}
		return null;
	}
	/**
	 * 获取指定的列字段
	 * @param popertyName 指定字段
	 * @return 字段
	 */
	public Field getField(String popertyName) {
		Field filed=findField(popertyName);
		if(filed==null)filed=findForeignFiled(popertyName);
		return filed;
	}
	/**
	 * 获取所有的字段 这些字段中不仅有表的字段
	 * 还包含关系字段
	 * @return 所有字段
	 */
	public Map getAllFields(){
		Map ret=new HashMap(super.getFields());
		ret.putAll(super.getPrimaryField());
		return ret;
	}
//	/**
//	 * 添加外键
//	 * @param name
//	 */
//	public void addForeignFiled(String name){
//		try {
//			super.getForeignField().put(name, new ForeignField(this.getField(name),"",""));
//			super.getFields().remove(name);
//		} catch (Throwable e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
	/**
	 * 添加外键
	 * @param name 名字
	 * @param Field 字段
	 */
	public void addForeignFiled(String name, ForeignField Field) {
		super.getForeignField().put(name, Field);
	}
	
	/**
	 * 查找外键
	 * @param popertyName 名字
	 * @return 外键
	 */
	public ForeignField findForeignFiled(String popertyName) {
		return (ForeignField) super.getForeignField().get(popertyName);
	}
	
	/**
	 * 添加主键
	 * @param name 名字
	 */
	public void addPrimaryField(String name){
		if(super.getPrimaryField().get(name)==null&&this.getFields().get(name)!=null){
			super.getPrimaryField().put(name, this.getFields().get(name));
			super.getFields().remove(name);
		}
	}
	/**
	 * 添加主键
	 * @param name 名字
	 * @param field 字段
	 */
	public void addPrimaryField(String name,Field field) {
		super.getPrimaryField().put(name, field);
	}
	
	/**
	 * 获取主键字符串 多主键用“,”分割
	 * @return String 字段
	 */
	public String getPrimaryStr() {
		if (getPrimaryField().size()>1) {
			return ListUtil.ArrayJoin(getPrimaryField().keySet().toArray(), ",");
		}
		return getId();
	}

	public Field getKeyField() {
		return (Field) super.getFields().get(super.getId());
	}

	public void setLazy(String lazy) {
		if (lazy!=null&&lazy.equalsIgnoreCase("true")) {
			super.setLazy(true);
		} else
			super.setLazy(false);
	}
	/**
	 * 合并表格
	 * @param table 表对象
	 */
	public void concat(Table table){
		super.getFields().putAll(table.getFields());
		super.getForeignField().putAll(table.getForeignField());
		if("".equals(super.getName()))super.setName(table.getName());
		if("".equals(super.getId()))super.setId(table.getId());
		if("".equals(super.getIdGenerator()))super.setIdGenerator(table.getIdGenerator());
	}

	/**
	 * 根据操作码取得对应操作字段
	 * @param key key
	 * @return 操作结果
	 */
	public Map getFields(int key) {
		Map fieldMap = new java.util.LinkedHashMap();
		for (Iterator iterator = super.getFields().keySet().iterator(); iterator.hasNext();) {
			String fieldName = (String) iterator.next();
			Field field=(Field)super.getFields().get(fieldName);
			if (field.getCmdKey()==key){
				fieldMap.put(fieldName, field);
			}else if (key<0&&field.getCmdKey()>0) {
				fieldMap.put(fieldName, field);
			}
		}
		return fieldMap;
	}
//	/**
//	 * 初始化字段数据类型
//	 * @param dbkey
//	 * @param typeMap
//	 */
//	public void initTable(int dbkey,HashMap typeMap) {
//		switch (dbkey) {
//			case 1://根据自定义类型初始化字段sql类型
//				for (Iterator iterator = fields.keySet().iterator(); iterator.hasNext();) {
//					String key = (String) iterator.next();
//					Field field=(Field)fields.get(key);
//					field.setDbType((String)typeMap.get(field.getFieldType()));
//				}
//				break;
//				
//			case 2://根据自定义类型初始化java对象类型
//				for (Iterator iterator = fields.keySet().iterator(); iterator.hasNext();) {
//					String key = (String) iterator.next();
//					Field Field=(Field)fields.get(key);
//					Field.setType((String)typeMap.get(Field.getFieldType()));
//				}
//			default:
//				break;
//		}
//	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy