001    // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 
002    // The Molly framework is freely distributable under the terms of an
003    // MIT-style license. For details, see the molly pages web site at:
004    // http://www.mollypages.org/. Use, modify, have fun !
005    
006    package fc.web.forms;
007    
008    import javax.servlet.*;
009    import javax.servlet.http.*;
010    import java.io.*;
011    import java.util.*;
012    
013    import fc.jdbc.*;
014    import fc.io.*;
015    import fc.util.*;
016    
017    /** 
018    Keeps track of a set of related/grouped fields in a form.
019    <p>
020    A fieldref is is useful when a set of fields are created
021    programmatically from a database table and need to be
022    retrieved from the form (but we don't know the names of
023    those fields since they were created dynamically -- however,
024    those fields can be added both to the form and to a
025    fieldref and obtained via then the name of the fieldref
026    (whose name we <b>do</b> know.)
027    <p>
028    <b>Note</b>: Any fields contained in this object must also
029    be added directly to the form.
030    
031    @author hursh jain
032    **/
033    public final class FieldRef
034    {
035    String  name;
036    Object  obj;
037    
038    /** 
039    Creates a new field with the specified name. All fieldref's
040    in a particular form must have a unique name.
041    **/
042    public FieldRef(String name)
043      {
044      this.name = name;
045      }
046    
047    /** 
048    Creates a new field with the specified name and the
049    specified object (which may be any data structure like a
050    list, map or whatever containing references to fields in
051    the form).
052    **/
053    public FieldRef(String name, Object obj)
054      {
055      this.name = name;
056      this.obj = obj;
057      }
058    
059    
060    /**
061    Adds an object to this fieldref. The object will typically
062    be some datastructure that contains references to fields
063    in the form.
064    */
065    public void add(Object obj)
066      {
067      this.obj = obj;
068      }
069    
070    /**
071    Returns the data object contained in this fieldref as a List.
072    */
073    public List getList() {
074      return (List) obj;
075      }
076      
077    
078    /**
079    Returns the data object contained in this fieldref as a Map.
080    */
081    public Map getMap() {
082      return (Map) obj;
083      }
084    
085    /**
086    Returns the data object contained in this fieldref.
087    */
088    public Object getObject()
089      {
090      return obj;
091      }
092    
093    String getName() {
094      return name;
095      }
096      
097    public String toString() {
098      StringBuffer buf = new StringBuffer();
099      buf.append("FieldRef: ").append(name);
100      buf.append("; Contains: \n"); 
101      buf.append(obj);
102      return buf.toString();
103      }
104      
105    }          //~class Text