Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

DefaultForm.java

00001 /*
00002  * Created on Mar 16, 2004
00003  *
00004  * To change the template for this generated file go to
00005  * Window - Preferences - Java - Code Generation - Code and Comments
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 }