--- FM2SQL/src/DBBean.java 2005/04/19 10:49:05 1.2 +++ FM2SQL/src/DBBean.java 2005/09/06 10:53:16 1.3 @@ -460,241 +460,7 @@ public class DBBean */ public Vector[] getQueryData(String query, int maxHits) throws SQLException, ParseException,Exception { - long timeStart = System.currentTimeMillis(); - ResultSet resultSet = null; - if (connection == null) - { - Vector[] noData = new Vector[2]; - //System.out.println("Exception occured"); - noData[1] = new Vector(); - Vector vec2 = new Vector(); - noData[0] = new Vector(); - vec2.add("no Connection available"); - noData[0].add(vec2); - noData[1].add("Exception occured! No results available"); - //noData[1].add("no Results were produced"); - - return noData; - } - resultSet = makeQuery(query, maxHits); - metaData = resultSet.getMetaData(); - int columnCount = metaData.getColumnCount(); - - Vector tableData = new Vector(); - while (resultSet.next()) - { - //System.out.println("datatype "+(Types.LONGVARCHAR ==metaData.getColumnType(3))); - Vector tableRow = new Vector(), m_columnClasses = new Vector(); - for (int i = 1; i <= columnCount; i++) - { - // repeating fields and fields from related databases may contain - // multliple data values; the data values are stored using - // a Vector which is then added to the tableRow - // if (metaData instanceof ResultSetMetaDataExt) - if ((metaData instanceof ResultSetMetaDataExt) && (((ResultSetMetaDataExt) metaData).isRelated(i) || ((ResultSetMetaDataExt) metaData).isRepeating(i))) - { - //System.out.println("Related fields"); - // retrieve the repeating or related field contents as a - // com.fmi.jdbc.Array via the ResultSet.getObject method - com.fmi.jdbc.Array array = (com.fmi.jdbc.Array) resultSet.getObject(i); - // create a Vector for storing all of the data values - ArrayList columnData = new ArrayList(); - - try - { - - // call the Array.getStringArray method since the data will - // only be displayed - Object[] fieldData = (Object[]) array.getArray(); - - if (fieldData != null) - { - // add each value to the Vector - for (int j = 0; j < fieldData.length; j++) - { - if (fieldData[j] != null) - columnData.add(fieldData[j]); - } - - } - } catch (Exception e) - { - //System.out.println(e); - } - if (columnData.isEmpty()) - tableRow.add(null); - else - tableRow.addElement(columnData); - //System.out.println(columnData); - //System.out.println("Related fields"+columnData.size()+" "+tableRow.size()); - - m_columnClasses.addElement(java.util.Vector.class); - } else if (metaData.getColumnType(i) == Types.LONGVARBINARY) - { - // use the ResultSet.getObject method for retrieving images - // from FileMaker Pro container fields; the ResultSet.getObject - // method returns a java.awt.Image object for FileMaker Pro - // container fields - try - { - - tableRow.addElement(resultSet.getObject(i)); - } catch (Exception e) - { - // TODO Auto-generated catch block - //e.printStackTrace(); - tableRow.addElement(null); - } - //tableRow.addElement("Picture ignored"); - m_columnClasses.addElement(java.awt.Image.class); - } else if (metaData.getColumnType(i) == Types.TIME) - { - // use the ResultSet.getObject method for retieving images - // from FileMaker Pro container fields; the ResultSet.getObject - // method returns a java.awt.Image object for FileMaker Pro - // container fields - try - { - tableRow.addElement(resultSet.getTime(i).toString()); - m_columnClasses.addElement(java.sql.Time.class); - } catch (Exception e) - { - - String value = resultSet.getString(i); - if (value != null) - { - //System.out.println("SQLTime new "+Time.valueOf("17:00:00").toString()); - int index = 0; - for (int j = 0; j < value.length(); ++j) - { - if (!Character.isLetter(value.charAt(j))) - index = j + 1; - else - break; - } - - tableRow.addElement(value.substring(0, index)); - //m_columnClasses.addElement(java.sql.Time.class); - } else - tableRow.add(null); - m_columnClasses.addElement(String.class); - } // to catch - - } else if (metaData.getColumnType(i) == Types.DATE) - { - // use the ResultSet.getObject method for retieving images - // from FileMaker Pro container fields; the ResultSet.getObject - // method returns a java.awt.Image object for FileMaker Pro - // container fields - - try - { - tableRow.addElement(resultSet.getDate(i)); - - } catch (Exception e) - { - // work around for parse bug in FM JDBC Driver - // for dates of format dd-mm-yyyy - String date = resultSet.getString(i); - date = date.replace('-', '.'); - java.text.DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMAN); - java.util.Date d = dateFormat.parse(date); - // Calendar cal=Calendar.getInstance(Locale.GERMAN); - // cal.setTime(d); - // date=(cal.get(Calendar.YEAR))+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.DATE); - tableRow.addElement(new java.sql.Date(d.getTime())); - System.out.println("Date " + date); - } - } else if (metaData.getColumnTypeName(i) == "NUMBER") - { - // use the ResultSet.getObject method for retieving images - // from FileMaker Pro container fields; the ResultSet.getObject - // method returns a java.awt.Image object for FileMaker Pro - // container fields - try - { - Double value =new Double(resultSet.getDouble(i)); - - - // tableRow.addElement(new Double(resultSet.getDouble(i))); - String tVal =value.toString(); - tVal = tVal.substring(tVal.indexOf('.')+1); - boolean checkMe = tVal.length()==1&&tVal.equals("0"); - // System.out.println("check was"+checkMe+" "+tVal); - if(checkMe) - tableRow.addElement(new Integer(value.intValue())); - else - tableRow.addElement(value); - - } catch (Exception e) - { - - StringBuffer number = new StringBuffer(); - String value = resultSet.getString(i); - System.out.println(value); - for (int c = 0; c < value.length(); ++c) - { - if (Character.isDigit(value.charAt(c))) - { - number.append(value.charAt(c)); - } - } - if (number.length() > 0) - { - tableRow.addElement(null); - m_columnClasses.addElement(Double.class); - } else - tableRow.addElement(null); - } - } else - { - // all other field values are retrieved as strings and - // added to the tableRow Vector - // if(resultSet.getObject(i)!=null) System.out.println(resultSet.getObject(i)); - try - { - String utf8 = null; - if (metaData instanceof ResultSetMetaDataExt) - { - byte[] b = resultSet.getBytes(i); - - if (metaData instanceof ResultSetMetaDataExt) - utf8 = (b == null) ? null : new String(b); - else - utf8 = (b == null) ? null : new String(b, "UTF-8"); - } - else - utf8=resultSet.getString(i); - - // utf8 = (utf8 == null) ? null : new String(utf8.getBytes("UTF-8"), "UTF-8"); - tableRow.addElement(utf8); - - } catch (Exception e) - { - System.out.println("Hey I Got an error" + e); - e.printStackTrace(); - } - m_columnClasses.addElement(java.lang.String.class); - } - } - - // add the tableRow Vector to the tableData Vector - tableData.addElement(tableRow); - } - - // retrieve the column names from the result set; the column names - // are used for the table header - columnNames = new Vector(); - - for (int i = 1; i <= columnCount; i++) - columnNames.addElement(metaData.getColumnName(i)); - Vector data[] = new Vector[2]; - data[0] = tableData; - data[1] = columnNames; - System.out.println("Rows " + tableData.size() + " " + ((Vector) tableData.get(0)).size()); - long timeEnd = System.currentTimeMillis(); - System.out.println("Time needed for query and data retrieval " + (timeEnd - timeStart) + " ms"); - return data; + return getQueryData(query,null,maxHits); } public Vector getColumnNames()