Source code for /src/java/com/coolshare/springapp/web/TileController.java
// =====================================================================//
// Author: Mark Qian <markqian@hotmail.com> //
// WWW: http://www.coolshare.com/ //
// Copyright (c) 2006, Mark Qian //
// //
// You must contact Mark Qian to get a permission of use //
// in case you want to make any use of the codes except viewing it //
// on Mark's site. //
//======================================================================//
package com.coolshare.springapp.web;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.text.FieldView;
import com.coolshare.springapp.Constant;
/**
* A "Tile" concept is introduced here. A Tile represents a physical piece of
* screen and appear as a micro MVC:
*
* Model - the bean linked by field modeClassName field in TileController
*
* View - the jsp linked by field viewName field in TileInfo
*
* Controller - TileController.
*
* @author mqian
*
*/
public class TileController {
private String name;
private Object model;
private String displayName;
private Map valueMap = new HashMap();
private TileInfo tileInfo;
public TileController(String name, String displayName, Object model) {
this.name = name;
this.model = model;
this.displayName = displayName;
setTileInfo((TileInfo) Constant.BEAN_MAP.get(name));
setValueMap();
}
private void setValueMap() {
List fields = tileInfo.getDisplayFields();
if (fields != null) {
for (int i = 0; i < fields.size(); i++) {
FieldInfo fieldInfo = (FieldInfo) fields.get(i);
valueMap
.put(fieldInfo.getName(), getField(fieldInfo.getName()));
}
}
fields = tileInfo.getHiddenFields();
if (fields != null) {
for (int i = 0; i < fields.size(); i++) {
FieldInfo fieldInfo = (FieldInfo) fields.get(i);
valueMap
.put(fieldInfo.getName(), getField(fieldInfo.getName()));
}
}
}
public String getField(String fieldName) {
Method method;
try {
method = model.getClass().getMethod(
"get" + fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1), new Class[] {});
return "" + method.invoke(model, new Object[] {});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
public Object getModel() {
return model;
}
public void setModel(Object model) {
this.model = model;
}
public TileInfo getTileInfo() {
return tileInfo;
}
public void setTileInfo(TileInfo tileInfo) {
this.tileInfo = tileInfo;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public Map getValueMap() {
return valueMap;
}
public void setValueMap(Map valueMap) {
this.valueMap = valueMap;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}