001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)CategoryDataSetCreator.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package org.openesb.tools.extchart.jfchart.data;
030:
031: import org.openesb.tools.extchart.exception.ChartException;
032: import java.sql.ResultSet;
033: import java.sql.ResultSetMetaData;
034: import java.sql.SQLException;
035: import java.sql.Types;
036: import java.util.logging.Logger;
037: import org.jfree.data.category.DefaultCategoryDataset;
038: import org.jfree.data.general.Dataset;
039:
040: /**
041: *
042: * @author rdwivedi
043: */
044: public class CategoryDataSetCreator extends DataSetCreator {
045:
046: private static Logger mLogger = Logger
047: .getLogger(CategoryDataSetCreator.class.getName());
048: private DefaultCategoryDataset dataset = null;
049:
050: /** Creates a new instance of CategoryDataSetCreator */
051: public CategoryDataSetCreator() {
052:
053: }
054:
055: public Dataset getDefaultDataSet() {
056: return dataset;
057: }
058:
059: public void processResultSet(ResultSet resultSet)
060: throws ChartException {
061:
062: dataset = new DefaultCategoryDataset();
063: try {
064: ResultSetMetaData metaData = resultSet.getMetaData();
065: int columnCount = metaData.getColumnCount();
066: if (columnCount < 2) {
067: throw new ChartException(
068: "There must be more then 1 columns.");
069: }
070: // Remove any previous old data
071: int i = dataset.getRowCount();
072: for (; i > 0; --i) {
073: dataset.removeRow(i);
074: }
075: while (resultSet.next()) {
076: // first column contains the row key...
077: Comparable categoryKey = resultSet.getString(1);
078: String ser = resultSet.getString(2);
079: if (columnCount > 3) {
080: for (int column = 3; column <= columnCount - 1; column++) {
081: // all other column makes up the secondary series sepereated by -
082: ser += "-" + resultSet.getString(column);
083: }
084: }
085: // now for value part it needs to be numeric....
086:
087: int columnType = metaData.getColumnType(columnCount);
088:
089: switch (columnType) {
090: case Types.TINYINT:
091: case Types.SMALLINT:
092: case Types.INTEGER:
093: case Types.BIGINT:
094: case Types.FLOAT:
095: case Types.DOUBLE:
096: case Types.DECIMAL:
097: case Types.NUMERIC:
098: case Types.REAL: {
099: Number value = (Number) resultSet
100: .getObject(columnCount);
101: dataset.setValue(value, categoryKey, ser);
102: break;
103: }
104: case Types.DATE:
105: case Types.TIME:
106: case Types.TIMESTAMP: {
107: mLogger
108: .info("Found Data type for value , which is not allowed"
109: + resultSet.getObject(columnCount));
110: break;
111: }
112: case Types.CHAR:
113: case Types.VARCHAR:
114: case Types.LONGVARCHAR: {
115: String string = (String) resultSet
116: .getObject(columnCount);
117: try {
118: Number value = Double.valueOf(string);
119: dataset.setValue(value, categoryKey, ser);
120: } catch (NumberFormatException e) {
121: mLogger
122: .info("Found a non number value at value column"
123: + string);
124: }
125: break;
126: }
127: default:
128: mLogger.info("Not a valid type for value column"
129: + metaData.getColumnName(columnCount));
130: break;
131: }
132: }
133:
134: } catch (SQLException e) {
135: throw new ChartException(e);
136: }
137:
138: }
139:
140: public String getQuery() throws ChartException {
141: return null;
142: }
143:
144: }
|