001    /*****************************************************************************
002    *                             MODULE DESCRIPTION
003    ******************************************************************************
004    *
005    *      NAME:     HtmlLinkColumn.java
006    *      LANGUAGE: Java 2
007    *      DATE:     11.02.2002
008    *      AUTHOR:   Miika Nurminen, University of Jyväskylä (JYU)
009    *      PURPOSE:  Abstraction of HTML table column with linked text
010    *
011    ******************************************************************************
012    *                  COPYRIGHT (C) Kiuru group
013    *             Limited rights granted. Please refer to license
014    *****************************************************************************/
015    
016    /*****************************************************************************
017     *                                 UPDATES
018    ******************************************************************************
019    *
020    * 11.2.2003 / mn
021    *   - Initial version
022    *
023    ******************************************************************************/
024    package kiurubeans;
025    import kotkabeans.RS2;
026    
027    /**
028     * Abstraction of HTML table column with linked text.
029     */
030    public class HtmlLinkColumn extends HtmlColumn {
031      
032      /** Holds value of property linkBase. */
033      private String linkBase;
034      
035      /** Holds value of property linkField. */
036      private String linkField;
037      
038      /** Predicate used in determining if a link is outputted */
039      private Predicate linkPredicate = null;
040      /** If link is empty, emptytext is used as a link text */
041      private String emptytext = "";
042      
043      /** Creates a new instance of HtmlLinkColumn
044       *
045       * @param linkbase base document used in links
046       * @param linkfield db field used to retrieve link value
047       * @param title title to be shown in th
048       * @param field field name of related db row
049       */
050      public HtmlLinkColumn(String field,String title,String linkbase,String linkfield) {
051        super(field,title);
052        setLinkBase(linkbase);
053        setLinkField(linkfield);
054      }
055    
056      /** Creates a new instance of HtmlLinkColumn
057       *
058       * @param linkbase base document used in links
059       * @param linkfield db field used to retrieve link value
060       * @param title title to be shown in th
061       * @param field field name of related db row
062       * @param emptytext linktext to written if field value is empty
063       */
064      public HtmlLinkColumn(String field,String title,String linkbase,String linkfield,String emptytext) {
065        super(field,title);
066        setLinkBase(linkbase);
067        setLinkField(linkfield);
068        if (emptytext!=null)
069          this.emptytext = emptytext;
070      }
071      
072      /** Creates a new instance of HtmlLinkColumn
073       *
074       * @param linkbase base document used in links
075       * @param linkfield db field used to retrieve link value
076       * @param title title to be shown in th
077       * @param field field name of related db row
078       */
079      public HtmlLinkColumn(Field field,String title,String linkbase,String linkfield) {
080        super(field,title);
081        setLinkBase(linkbase);
082        setLinkField(linkfield);
083      }
084      
085      /** Creates a new instance of HtmlLinkColumn
086       *
087       * @param linkbase base document used in links
088       * @param linkfield db field used to retrieve link value
089       * @param linkPredicate predicate to determine if a link is valid
090       * @param title title to be shown in th
091       * @param field field name of related db row
092       */
093      public HtmlLinkColumn(Field field,String title,String linkbase,String linkfield,Predicate linkPredicate) {
094        super(field,title);
095        setLinkBase(linkbase);
096        setLinkField(linkfield);
097        this.linkPredicate = linkPredicate;
098      }
099      
100      
101      /** Getter for property baseLink.
102       * @return Value of property baseLink.
103       */
104      public String getLinkBase() {
105        return this.linkBase;
106      }
107      
108      /** Setter for property baseLink.
109       * @param baseLink New value of property baseLink.
110       */
111      public void setLinkBase(String baseLink) {
112        this.linkBase = baseLink;
113      }
114      
115      /** Getter for property linkField.
116       * @return Value of property linkField.
117       *
118       */
119      public String getLinkField() {
120        return this.linkField;
121      }
122      
123      /** Setter for property linkField.
124       * @param linkField New value of property linkField.
125       */
126      public void setLinkField(String linkField) {
127        this.linkField = linkField;
128      }
129      
130      /** Returns current table cell data as string
131       * @return data to be put in <td></td>
132       * @param rs RS2 where data is retrieved
133       */
134      public String getCellData(RS2 rs) {
135        String s = getFieldValue(rs);
136        if (this.linkPredicate!=null) {
137          if (!this.linkPredicate.test(s)) return s;
138        }
139        return HtmlBean.getLink(s, 
140                                getLinkBase()+getFieldValue(rs, getLinkField()),
141                                this.emptytext);
142      }
143    }
144    /***************************************************************************************************
145     *               COPYRIGHT (C) KIURU -PROJECT GROUP
146     *               Limited rights granted. Please refer to license.
147     **************************************************************************************************/