DefaultForm.java
00001
00002
00003
00004
00005
00006
00007 package edu.virtualschool.jwaa.xml;
00008
00009 import java.sql.Timestamp;
00010 import java.util.ArrayList;
00011 import java.util.HashMap;
00012 import java.util.Iterator;
00013 import java.util.List;
00014 import java.util.Map;
00015
00016 import org.apache.log4j.Logger;
00017
00018 import edu.virtualschool.jwaa.AccountAbstraction;
00019 import edu.virtualschool.jwaa.Fault;
00020 import edu.virtualschool.jwaa.StringUtil;
00021 import edu.virtualschool.jwaa.bean.FieldBean;
00022 import edu.virtualschool.jwaa.dbms.DBQuery;
00023 import edu.virtualschool.jwaa.dbms.DBUtil;
00024 import edu.virtualschool.jwaa.field.CommaSeparatedField;
00025
00026 public class DefaultForm
00027 extends GenericForm
00028 {
00029 final Controller ctlr;
00030 final AccountAbstraction account;
00031 final HashMap parameterMap = new HashMap();
00032
00033 final static Logger logger = Logger.getLogger(DefaultForm.class.getName());
00034
00035 public DefaultForm(Controller page) throws Fault
00036 {
00037 this.ctlr = page;
00038 this.account = page.getAccount();
00039 Map map = page.httpRequest.getParameterMap();
00040 if (map.isEmpty())
00041 loadFromDatabase();
00042 else for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext(); )
00043 {
00044 Object o = iterator.next();
00045 Map.Entry e = (Map.Entry)o;
00046 Object key = e.getKey();
00047 Object value = e.getValue();
00048 String[] values = (String[])value;
00049 List list = new ArrayList();
00050 for (int i = 0; i < values.length; i++)
00051 list.add(values[i]);
00052 parameterMap.put(key, list);
00053 }
00054 }
00055 void loadFromDatabase() throws Fault
00056 {
00057 String sql = "select * from Form\n"
00058 + "where account=" + DBUtil.quote(account.getIdentity()) + "\n"
00059 + "and page=" + DBUtil.quote(ctlr.page.id);
00060 DBQuery query = ctlr.dbms.query(sql);
00061 while(query.hasNext())
00062 {
00063 String key = query.getString("field");
00064 if (key.equals("op"))
00065 continue;
00066 String value = query.getString("value");
00067 CommaSeparatedField f = new CommaSeparatedField(value, "");
00068 parameterMap.put(key, f.getArrayValue());
00069 }
00070 }
00071 public String toString()
00072 {
00073 return parameterMap.toString();
00074 }
00075 private static final List emptyList = new ArrayList();
00076 public List getValueList(String key)
00077 {
00078 Object o = parameterMap.get(key);
00079 if (o == null)
00080 return emptyList;
00081 List list = (List)o;
00082 return list;
00083 }
00084 public Object getValue(String key)
00085 {
00086 List a = getValueList(key);
00087 if (a.size() == 0)
00088 return "";
00089 else
00090 return a.get(0);
00091 }
00092 public Map getParameterMap()
00093 {
00094 return parameterMap;
00095 }
00096 public void save() throws Fault
00097 {
00098 logger.debug("saving "+this);
00099 for (Iterator iterator = parameterMap.entrySet().iterator(); iterator.hasNext(); )
00100 {
00101 Object o = iterator.next();
00102 Map.Entry e = (Map.Entry)o;
00103 Object k = e.getKey();
00104 if (k.equals("op"))
00105 continue;
00106 Object v = e.getValue();
00107 String fieldName = (String)k;
00108 List fieldValues = (List)v;
00109 String fieldValue = StringUtil.join(',', fieldValues);
00110 FieldBean bean = new FieldBean(
00111 account.getIdentity(),
00112 ctlr.page.id,
00113 fieldName,
00114 fieldValue,
00115 new Timestamp(System.currentTimeMillis())
00116 );
00117 bean.save(ctlr.dbms);
00118 }
00119 }
00120 }