/*
* Created on 2004-7-21 by Jem.Lee
*
* TransFormData is a part of cn.bs.common.transdata
* ALL RIGHTS RESERVED.
* COPYRIGHT (C) 2004. Jem.Lee
*/
/* 包路径cn.bs.common.transdata*/
package cn.bs.common.transdata;
/*Import包内容*/
import java.util.HashMap;
import java.util.Iterator;
/**
* <PRE>
* History
* 2004-7-21 21:02:57 created by Jem.Lee
*
* 目的
* 作为视图和控制器之间进行数据传递的主要对象,
* 它包涵一般的元素对象和Table对象
* </PRE>
*/
public class TransFormData implements Cloneable{
/*
* 存放单个元素的Hash表
*/
private HashMap trselements = new HashMap();
/*
* 存放Table元素的的Hash表
*/
private HashMap trstables = new HashMap();
/**
* <PRE>
* 从FormData获得指定元素名称的值
* @param name 元素名称
* @return 元素对应的值
* @throws Exception
* </PRE>
*/
public String getFieldValue(String name) throws Exception {
return(this.getFieldFromName(name).getValue());
}
/**
* <PRE>
* 从FormData获得指定元素域名称
* @param name 元素名称
* @return 元素对应的域
* @throws Exception
* </PRE>
*/
public TransFormField getFieldFromName(String name) throws Exception {
if (name == null) {
throw (new NullPointerException("输入的域名为空或是null"));
}
TransFormField ret = (TransFormField) trselements.get(name);
if (ret == null) {
throw (new Exception("找不到对应'" + name + "'域名"));
}
return (ret);
}
/**
* <PRE>
* 给FormData指定一个元素并设置它的值,如果发现该元素已经存在,则覆盖该元素。
* @param name 元素的名称
* @param value 元素的值
* </PRE>
*/
public void putFieldValueO(String name, String value){
TransFormField newElement = new TransFormField(name, value);
newElement.setParent(this);
this.putElementsO(newElement);
}
/**
* <PRE>
* 设置FormData的Elevent域。
* @param newElement 指定的新域
* </PRE>
*/
public void putElementsO(TransFormField newElement){
newElement.setParent(this);
this.trselements.put(newElement.getName(), newElement);
}
/*------------------------------Table------------------*/
/**
* <PRE>
* 增加Table到FormData中,并返回该Table的实例,如果指定的表已经存在,
* 则抛出Exception例外
* @param name Table的名称
* @return FormTable 所返回的Table类型
* @throws Exception
* </PRE>
*/
public TransFormTable addTable(String name) throws Exception{
if(trstables.get(name) != null){
throw(new Exception());
}
return(addTableO(name));
}
/**
* <PRE>
* 增加Table到FormData中,并返回该Table的实例,如果该指定的表已经存在,
* 则强行覆盖新的表。
* @param name Table的名称
* @return FormTable 所返回的Table类型
* </PRE>
*/
public TransFormTable addTableO(String tableName){
TransFormTable newTable = new TransFormTable(tableName);
newTable.setParent(this);
trstables.put(tableName, newTable);
return(newTable);
}
/**
* <PRE>
* 对Table的内容进行排序
* </PRE>
*/
void sortTable(){
Iterator iTables = this.trstables.keySet().iterator();
while(iTables.hasNext()){
TransFormTable tbl = (TransFormTable) this.trstables.get(iTables.next());
tbl.sort();
}
}
/**
* <PRE>
* 获得指定表名称的实例
* @param name 表名称
* @return 指定表名称的实例
* @throws BsComponentException、NullPointerException、IllegalArgumentException
* </PRE>
*/
public TransFormTable getTable(String name) throws Exception {
if (name == null) {
throw (new NullPointerException("输入的表名是null"));
}
if (name.equals("")) {
throw (new IllegalArgumentException("输入的域名为空"));
}
TransFormTable ret = (TransFormTable) trstables.get(name);
if (ret == null) {
throw (new Exception());
}
return(ret);
}
}
|