|
From: <mic...@us...> - 2003-11-29 02:32:17
|
Update of /cvsroot/babeldoc/babeldoc/modules/jfreereports/src/com/babeldoc/utils
In directory sc8-pr-cvs1:/tmp/cvs-serv18248/modules/jfreereports/src/com/babeldoc/utils
Modified Files:
Tag: TEMP_MIKEA
XMLTableModel.java
Added Files:
Tag: TEMP_MIKEA
XMLTableModelTest.java
Log Message:
Added unit tests for XMLTableModel, and corrected outstanding issues
--- NEW FILE: XMLTableModelTest.java ---
/*
* Created on 28-Nov-2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.babeldoc.utils;
import junit.framework.TestCase;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
/**
* @author mikea
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class XMLTableModelTest extends TestCase {
private XMLTableModelTest() {
String strDoc = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<queryresults>" +
" <query query-name=\"query1\" query-number=\"0\">" +
" <row row-number=\"0\">" +
" <column column-name=\"quiz\" column-number=\"1\" column-class=\"java.lang.String\">Yes</column>" +
" <column column-name=\"company_name\" column-number=\"2\" column-class=\"java.lang.String\">Peter Abel, CPA</column>" +
" <column column-name=\"last_name\" column-number=\"3\" column-class=\"java.lang.String\">Abel</column>" +
" <column column-name=\"first_name\" column-number=\"4\" column-class=\"java.lang.String\">Peter</column>" +
" <column column-name=\"main_phone\" column-number=\"5\" column-class=\"java.lang.String\">(510)420-8188</column>" +
" <column column-name=\"fk_seminar_code\" column-number=\"6\" column-class=\"java.lang.String\">001</column>" +
" <column column-name=\"seminar_tmpl_name\" column-number=\"7\" column-class=\"java.lang.String\">Annual Tax Update Seminar</column>" +
" <column column-name=\"start_date\" column-number=\"8\" column-class=\"java.lang.String\">11/17/2003</column>" +
" <column column-name=\"hotel_place\" column-number=\"9\" column-class=\"java.lang.String\">Corte Madera, CA</column>" +
" <column column-name=\"amount_paid\" column-number=\"10\" column-class=\"java.math.BigDecimal\">200.000000</column>" +
" <column column-name=\"id_booking\" column-number=\"11\" column-class=\"java.lang.Integer\">65703</column>" +
" <column column-name=\"shipping_address\" column-number=\"12\" column-class=\"java.lang.String\"></column>" +
" <column column-name=\"city\" column-number=\"13\" column-class=\"java.lang.String\">Oakland</column>" +
" <column column-name=\"attended\" column-number=\"14\" column-class=\"java.lang.String\">No</column>" +
" </row>" +
" <row row-number=\"1\">" +
" <column column-name=\"quiz\" column-number=\"1\" column-class=\"java.lang.String\">Yes</column>" +
" <column column-name=\"company_name\" column-number=\"2\" column-class=\"java.lang.String\">David J. Bartley, CPA</column>" +
" <column column-name=\"last_name\" column-number=\"3\" column-class=\"java.lang.String\">Bartley</column>" +
" <column column-name=\"first_name\" column-number=\"4\" column-class=\"java.lang.String\">David</column>" +
" <column column-name=\"main_phone\" column-number=\"5\" column-class=\"java.lang.String\">(415)883-7703</column>" +
" <column column-name=\"fk_seminar_code\" column-number=\"6\" column-class=\"java.lang.String\">001</column>" +
" <column column-name=\"seminar_tmpl_name\" column-number=\"7\" column-class=\"java.lang.String\">Annual Tax Update Seminar</column>" +
" <column column-name=\"start_date\" column-number=\"8\" column-class=\"java.lang.String\">11/18/2002</column>" +
" <column column-name=\"hotel_place\" column-number=\"9\" column-class=\"java.lang.String\">Corte Madera, CA</column>" +
" <column column-name=\"amount_paid\" column-number=\"10\" column-class=\"java.math.BigDecimal\">165.000000</column>" +
" <column column-name=\"id_booking\" column-number=\"11\" column-class=\"java.lang.Integer\">50989</column>" +
" <column column-name=\"shipping_address\" column-number=\"12\" column-class=\"java.lang.String\"></column>" +
" <column column-name=\"city\" column-number=\"13\" column-class=\"java.lang.String\">Novato</column>" +
" <column column-name=\"attended\" column-number=\"14\" column-class=\"java.lang.String\">Yes</column>" +
" </row>" +
" </query>" +
"</queryresults>"
);
Document doc;
XMLTableModel tm;
try {
doc = DocumentHelper.parseText(strDoc);
tm = new XMLTableModel(doc);
// Column and row counts
System.out.println("Column count: " + tm.getColumnCount());
System.out.println("Row count: " + tm.getRowCount());
// Column names and ordinals
for (int i = 0; i < tm.getColumnCount(); i++) {
String name = tm.getColumnName(i);
System.out.println("Position: " + i + ", Name: " + name + ", Ordinal: " + tm.findColumn(name) + ", Class: " + tm.getColumnClass(i).getName());
}
// getValueAt
for (int row = 0; row < tm.getRowCount(); row++) {
for (int col = 0; col < tm.getColumnCount(); col++) {
String name = tm.getColumnName(col);
Object o = tm.getValueAt(row, col);
String value;
if (o == null) {
value = "null";
} else {
value = o.toString();
}
System.out.println("Row: " + row + ", Column: " + name + ", Value: " + value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
XMLTableModelTest test = new XMLTableModelTest();
}
}
Index: XMLTableModel.java
===================================================================
RCS file: /cvsroot/babeldoc/babeldoc/modules/jfreereports/src/com/babeldoc/utils/Attic/XMLTableModel.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -C2 -d -r1.1.2.3 -r1.1.2.4
*** XMLTableModel.java 28 Nov 2003 09:16:29 -0000 1.1.2.3
--- XMLTableModel.java 29 Nov 2003 02:32:14 -0000 1.1.2.4
***************
*** 16,19 ****
--- 16,20 ----
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
+ import javax.swing.table.DefaultTableModel;
import javax.xml.transform.TransformerException;
***************
*** 66,69 ****
--- 67,72 ----
public XMLTableModel(org.dom4j.Document data) throws org.dom4j.DocumentException {
xmlData = transformToDOM(data);
+ columnClasses = new Class[getColumnCount()];
+ columnNames = new String[getColumnCount()];
}
***************
*** 71,74 ****
--- 74,78 ----
xmlData = transformToDOM(doc);
columnClasses = new Class[getColumnCount()];
+ columnNames = new String[getColumnCount()];
}
***************
*** 85,89 ****
String xpath = "count(" +
QUERY_RESULTS + "/" +
! ROW + "[1]/" +
COLUMN +
")";
--- 89,94 ----
String xpath = "count(" +
QUERY_RESULTS + "/" +
! QUERY + "/" +
! ROW + "[@row-number=\"0\"]/" +
COLUMN +
")";
***************
*** 115,118 ****
--- 120,124 ----
String xpath = "count(" +
QUERY_RESULTS + "/" +
+ QUERY + "/" +
ROW +
")";
***************
*** 141,147 ****
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" +
! ROW + "[@" + ROW_NUMBER + "=" + rowIndex + "]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=" + columnIndex + "]";
Node n;
--- 147,153 ----
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" + QUERY + "/" +
! ROW + "[@" + ROW_NUMBER + "=\"" + rowIndex + "\"]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=\"" + (columnIndex + 1) + "\"]";
Node n;
***************
*** 161,170 ****
Object v;
try {
! Class c = Class.forName(className).getClass();
Constructor cons = c.getConstructor(new Class[] {String.class});
! v = cons.newInstance(new Object[] {n.getNodeValue()});
} catch (Exception e) {
! log.logWarn(e.getMessage());
! v = new String("[" + I18n.get("jfr.104", className) + "]");
}
--- 167,182 ----
Object v;
try {
! Class c = Class.forName(className);
Constructor cons = c.getConstructor(new Class[] {String.class});
! if (n.getFirstChild() == null) {
! v = null;
! } else {
! v = cons.newInstance(new Object[] {n.getFirstChild().getNodeValue()});
! }
} catch (Exception e) {
! e.printStackTrace();
! //log.logWarn(e.getMessage());
! v = "";
! //v = new String("[" + I18n.get("jfr.104", className) + "]");
}
***************
*** 191,198 ****
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" +
! ROW + "[1]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=" + columnIndex + "]";
!
Node n;
try {
--- 203,209 ----
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" + QUERY + "/" +
! ROW + "[@row-number=\"0\"]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=\"" + (columnIndex + 1) + "\"]";
Node n;
try {
***************
*** 208,214 ****
className = DEFAULT_CLASS_NAME;
}
!
try {
! c = Class.forName(className).getClass();
} catch (ClassNotFoundException e) {
log.logWarn(e.getMessage());
--- 219,225 ----
className = DEFAULT_CLASS_NAME;
}
!
try {
! c = Class.forName(className);
} catch (ClassNotFoundException e) {
log.logWarn(e.getMessage());
***************
*** 217,221 ****
columnClasses[columnIndex] = c;
}
! return c;
}
--- 228,232 ----
columnClasses[columnIndex] = c;
}
! return (c);
}
***************
*** 227,241 ****
*/
public String getColumnName(int column) {
! String name = columnNames[column];
if (name == null) {
-
if (xmlData == null) return (null);
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" +
! ROW + "[1]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=" + column + "]";
!
Node n;
try {
--- 238,251 ----
*/
public String getColumnName(int column) {
! String name;
! name = columnNames[column];
if (name == null) {
if (xmlData == null) return (null);
// This is the xpath for a cell in an XML data document from the SqlQuery
// pipeline stage
! String xpath = QUERY_RESULTS + "/" + QUERY + "/" +
! ROW + "[@row-number=\"0\"]/" +
! COLUMN + "[@" + COLUMN_NUMBER + "=\"" + (column + 1) + "\"]";
Node n;
try {
***************
*** 269,276 ****
// This is the xpath for the count of columns in the first row
! String xpath = QUERY_RESULTS + "/" +
! ROW + "[1]/" +
! COLUMN + "[@" + COLUMN_NAME + "=" + columnName + "]";
!
Node n;
try {
--- 279,285 ----
// This is the xpath for the count of columns in the first row
! String xpath = QUERY_RESULTS + "/" + QUERY + "/" +
! ROW + "[@row-number=\"0\"]/" +
! COLUMN + "[@" + COLUMN_NAME + "=\"" + columnName + "\"]";
Node n;
try {
***************
*** 282,286 ****
NamedNodeMap attrs = n.getAttributes();
! columnNumber = new Integer(attrs.getNamedItem(COLUMN_NAME).getNodeValue());
columnNumbers.put(columnName, columnNumber);
--- 291,295 ----
NamedNodeMap attrs = n.getAttributes();
! columnNumber = new Integer(attrs.getNamedItem(COLUMN_NUMBER).getNodeValue());
columnNumbers.put(columnName, columnNumber);
***************
*** 288,292 ****
}
! return (columnNumber.intValue());
}
--- 297,301 ----
}
! return (columnNumber.intValue() - 1);
}
|