001 /*****************************************************************************
002 * MODULE DESCRIPTION
003 ******************************************************************************
004 *
005 * NAME: HtmlBean.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 + related routines
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 import kotkabeans.Log;
027 import java.util.*;
028
029 /**
030 * Abstraction of HTML table
031 *
032 * @author Miika Nurminen
033 */
034 public class HtmlTable {
035 /** If true links for ordering table are appended to table headers */
036 private boolean orderLinks = true;
037
038 /** RS2 where data is retrieved */
039 private RS2 rs;
040 /**
041 * Used with order links
042 */
043 private String baseDocument;
044
045 /** Column data */
046 private ArrayList columnList = new ArrayList();
047
048 /** Creates a new instance of HtmlTable - dummy empty constructor */
049 public HtmlTable() {
050 }
051
052 /** Creates a new instance of HtmlTable
053 * @param rs RS2 to be iterated in table
054 * @param baseDoc base address for ordering
055 */
056 public HtmlTable(RS2 rs, String baseDoc) {
057 setRs(rs);
058 setBaseDocument(baseDoc);
059 }
060
061 /** Creates a new instance of HtmlTable
062 * @param c columns to be added
063 * @param rs RS2 to be iterated in table
064 * @param baseDoc base address for ordering
065 */
066 public HtmlTable(RS2 rs, String baseDoc, HtmlColumn[] c) {
067 setRs(rs);
068 setBaseDocument(baseDoc);
069 addColumn(c);
070 }
071
072 /** Getter for property orderLinks.
073 * @return Value of property orderLinks.
074 */
075 public boolean getOrderLinks() {
076 return orderLinks;
077 }
078
079 /** Setter for property orderLinks.
080 * @param o new value for orderLinks
081 */
082 public void setOrderLinks(boolean o) {
083 orderLinks=o;
084 }
085
086 /** Getter for property rs.
087 * @return Value of property rs.
088 */
089 public RS2 getRs() {
090 return this.rs;
091 }
092
093 /** Setter for property rs.
094 * @param rs New value of property rs.
095 */
096 public void setRs(RS2 rs) {
097 this.rs = rs;
098 }
099
100
101 /** Getter for property baseDocument.
102 * @return Value of property baseDocument.
103 */
104 public String getBaseDocument() {
105 return this.baseDocument;
106 }
107
108 /** Setter for property baseDocument.
109 * @param baseDocument New value of property baseDocument.
110 */
111 public void setBaseDocument(String baseDocument) {
112 this.baseDocument = baseDocument;
113 }
114
115
116 /**
117 * Clears column data for current table
118 */
119 public void clear() {
120 columnList.clear();
121 }
122
123 /**
124 * Adds new column to list
125 * @param c column to be added
126 */
127 public void addColumn(HtmlColumn c) {
128 columnList.add(c);
129 }
130
131 /**
132 * Adds an array of columns to list
133 * @param c columns to be added
134 */
135 public void addColumn(HtmlColumn[] c) {
136 if ((c==null) || (c.length==0)) return;
137 for (int i=0; i<c.length; i++)
138 addColumn(c[i]);
139 }
140
141 /**
142 * Generates HTML table
143 * @return table & content in HTML format
144 */
145 public String generateTable() {
146 if (columnList.size()==0) return "";
147 if (SimpleDb.isEmpty(getRs())) return "";
148
149 StringBuffer result = new StringBuffer(100);
150
151 result.append(HtmlBean.begin_table());
152
153 result.append("<tr>");
154 Iterator i = columnList.iterator();
155 while (i.hasNext()) {
156 HtmlColumn h = (HtmlColumn)(i.next());
157 result.append("<th>");
158 result.append(h.getHeader(getBaseDocument(),getOrderLinks()));
159 result.append("</th>\n");
160 }
161 result.append("</tr>");
162
163 while (getRs().next()) {
164 result.append("<tr>");
165 i = columnList.iterator();
166 while (i.hasNext()) {
167 HtmlColumn h = (HtmlColumn)(i.next());
168 result.append("<td>");
169 result.append(h.getCellData(getRs()));
170 result.append("</td>");
171 }
172 result.append("</tr>");
173 }
174
175 result.append("</table>");
176
177 return result.toString();
178 }
179
180 }
181 /***************************************************************************************************
182 * COPYRIGHT (C) KIURU -PROJECT GROUP
183 * Limited rights granted. Please refer to license.
184 **************************************************************************************************/