You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tv...@apache.org on 2007/10/31 23:23:46 UTC

svn commit: r590852 - in /db/torque/village/trunk: ./ docs/ docs/ChangeLog.txt docs/INSTALL.txt docs/ImplementationStatus.txt docs/README.txt docs/Schema.txt

Author: tv
Date: Wed Oct 31 15:23:36 2007
New Revision: 590852

URL: http://svn.apache.org/viewvc?rev=590852&view=rev
Log:
Added more docs

Added:
    db/torque/village/trunk/docs/
    db/torque/village/trunk/docs/ChangeLog.txt
    db/torque/village/trunk/docs/INSTALL.txt
    db/torque/village/trunk/docs/ImplementationStatus.txt
    db/torque/village/trunk/docs/README.txt
    db/torque/village/trunk/docs/Schema.txt
Modified:
    db/torque/village/trunk/   (props changed)

Propchange: db/torque/village/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Oct 31 15:23:36 2007
@@ -1,5 +1,3 @@
 target
 .classpath
 .project
-docs
-etc

Added: db/torque/village/trunk/docs/ChangeLog.txt
URL: http://svn.apache.org/viewvc/db/torque/village/trunk/docs/ChangeLog.txt?rev=590852&view=auto
==============================================================================
--- db/torque/village/trunk/docs/ChangeLog.txt (added)
+++ db/torque/village/trunk/docs/ChangeLog.txt Wed Oct 31 15:23:36 2007
@@ -0,0 +1,147 @@
+Major Release - Version 2.0
+(Jon S. Stevens)
+- Added support for JDBC BLOB type
+- No longer support JDK 1.1 (only JDK 1.2 and higher)
+- Imports are fully qualified. thanks to: Stephen Haberman
+- Value.java: patch to add 'y' as a valid option to the private isTrue() 
+  method thanks to: Scott Eade <se...@backstagetech.com.au>
+
+Minor Fixes Release - 
+Version 1.5.3 (Jon S. Stevens, Daniel Rall)
+- include the README.txt in the distribution thanks to: Sam Ruby (jss)
+- Value.java was not checking for "t" = true/"f"=false, which Postgres
+  7.1 returns for boolean values thanks to: 
+  Scott Dietrich <sd...@emlab.com> (jss)
+- Fix problem with getPrecision() throwing an exception because
+  the integer is to large. 
+  http://share.whichever.com/pipermail/village-dev/2002-March/000044.html
+  (jss, dlr)
+
+Minor Fixes Release - Version 1.5.2
+(Jon S. Stevens)
+- moved the build system to the top level directory (jss)
+- get a string out of the database and then wrap in a BigDecimal. this fixes
+  the precision lost with getting a bigdecimal from the database.
+  credit: "Diethelm Guallar, Gonzalo" <Go...@sonda.com> (jss)
+
+Minor Fixes Release - Version 1.5.1
+(Jon S. Stevens, Daniel Rall, John McNally)
+- Updated to Ant 1.3 and require Ant to be "installed" now.
+- Make Value.asUtilDate() and Value.asDate() properly handle Timestamp
+  nanosecond granularity. Before it was just dropping that information.
+- Small speed improvement in Value.asTimestamp()
+- Updated to Ant 1.2, Crimson, JAXP
+- Fixed deprecated warning in Value.java
+- Fixed Javadoc example in TableDataSet.java
+- The DataSet's reference to its Connection object should be nulled when
+  the DataSet is closed.  This doesn't actually affect the object
+  pointed to, rather, it just clears the DataSet's pointer.  This more
+  comprehensively releases the DataSet's resources. (DR)
+
+Speed Release - Version 1.5
+(Jon S. Stevens, Daniel L. Rall)
+- Code format change (DLR)
+- Major potential speed improvement:
+
+Schema now caches its own Schema objects in a static hashtable so that 
+they don't need to be created for every single request. This should save 
+a lot of object overhead creation as well as a connection to the database.
+
+Bug Fix Release - Version 1.4
+(Jon S. Stevens, Leon Messerschmidt <le...@opticode.co.za>, Daniel L. Rall,
+Alex HAUMONT <al...@smile.fr>)
+- Fixed NPE in QueryDataSet with the Constructor that takes only a
+  ResultSet (Leon).
+- ResultSetMetaData may report table name as the empty string when a 
+  database-specific function has been called to generate a Column (DLR).
+- Fixed bug when ResultSet was closed at the wrong time (Alex).
+
+Bug Fix Release - Version 1.3
+(Jon S. Stevens, Nissim Karpenstein, Daniel L. Rall, Rafal Krzewski)
+- the weblogic driver just returns null for RSMD.getTableName()
+  rather than throwing an exception (NK)
+- the Schema object returned by QueryDataSet's schema() method does
+  not have its private instance field tableName set.  This is the result
+  of an instantiation using Schema's zero argument constructor, and then
+  calling Schema's package private populate() method (incidently, with a
+  bogus tableName argument).  Schema's populate() method does not set its
+  tableName attribute.  This patch includes a fix for that and some very
+  minor cleanup.  :) (DLR)
+- fixes for Sybase and the fact that its JDBC driver isn't fully implemented
+  (RK)
+- minor fix for building on NT (JSS)
+
+Bug Fix Release - Version 1.2
+(Jon S. Stevens)
+- fixed a bug reported by Thomas Weitzel <tw...@bouncy.com>
+  where multiple records were not being deleted properly.
+- fixed a bug reported by Jeff Prickett <je...@mindspring.com>
+  where a column that is an integer or other type that had a null value 
+  would return 0 instead of null.
+- updated to the latest version of the Ant build system
+
+Bug Fix Release - Version 1.1
+(Jon S. Stevens, John Mcnally)
+- fixed a couple bugs I can't remember now
+- john added some features for joins that he needed for turbine
+- new build system. see build/README
+- new Apache/BSD Style license
+
+Bug Fix Release - Version 1.0.7
+(Jon S. Stevens, Serge Knystautas)
+- fixed asString to work if values are stored as byte[]
+- remove requirement for SELECT only
+- use java.sql.Types instead of hard coded numbers
+
+Bug Fix Release - Version 1.0.6
+(Jon S. Stevens, Serge Knystautas, Edwin Glaser)
+- Fixed bug with Record.initializeRecords where the record 
+was being created as a ZOMBIE instead of UNKNOWN. This 
+had the result of screwing up deletes.
+- Fixed bug with DataSet.removeRecord() because it was 
+using Record.getNumber() and that method was never actually 
+implemented.
+- Fixed updating and deleting records when 0 records are 
+updated/deleted.
+- Fixed setValueNull error on saving. setPreparedStatement 
+was incorrectly handling null values
+- Fixed behavior on how java.util.Date related objects are 
+handled
+
+Bug Fix Release - Version 1.0.5
+(Jon S. Stevens)
+- Fixed bug in the way that Record.setValueNull worked as
+  well as how the various Record.*save* methods were treating
+  values that were null.
+
+Bug Fix Release - Version 1.0.4
+(Jon S. Stevens)
+- Fixed a problem with the way the .jar file was created.
+
+Bug Fix Release - Version 1.0.3
+(Jon S. Stevens, Stephane SENART)
+- Stephane found some bugs regarding the implementation
+  of DataSet.addRecord() that made it not work when used
+  with TableDataSet.save().
+- Fixed a couple potential NullPointerException bugs in 
+  DataSet.close()
+
+Bug Fix Release - Version 1.0.2
+(Jon S. Stevens, Serge Knystautas)
+- Fixed bug in DataSet.addRecord() logic (SK).
+- Fixed KeyDef so that it will compile with JDK 1.1 (SK).
+
+Bug Fix Release - Version 1.0.1
+(Jon S. Stevens, Stephane SENART, Raphael Spannocchi)
+
+- Added more tests to the TestMySQL test suite (JSS).
+- Fixed bug with DataSet.fetchRecords() and Value() where
+  my interpretation of ResultSet.wasNull() was incorrect.
+  Bug submitted by (SS).
+- Fixed bug with QueryDataSet.getRecord(). Bug submitted 
+  by (SS).
+- Added ability to pass arguments to main() method. 
+  Suggestion and code by (RS).
+
+Initial Implementation - Version 1.0
+(Jon S. Stevens jon@working-dogs.com)

Added: db/torque/village/trunk/docs/INSTALL.txt
URL: http://svn.apache.org/viewvc/db/torque/village/trunk/docs/INSTALL.txt?rev=590852&view=auto
==============================================================================
--- db/torque/village/trunk/docs/INSTALL.txt (added)
+++ db/torque/village/trunk/docs/INSTALL.txt Wed Oct 31 15:23:36 2007
@@ -0,0 +1,16 @@
+V I L L A G E
+=============
+
+For more information about what Village is, please see the README.txt 
+file.
+
+Installation of Village is simple, just add the village.jar file to your 
+classpath.
+
+In order to use the Village API within your code, all you need to do is 
+use the import statement. For example:
+
+import com.workingdogs.village.*;
+
+Please read the javadoc within the /docs/ directory for more information 
+about how to implement code with Village.

Added: db/torque/village/trunk/docs/ImplementationStatus.txt
URL: http://svn.apache.org/viewvc/db/torque/village/trunk/docs/ImplementationStatus.txt?rev=590852&view=auto
==============================================================================
--- db/torque/village/trunk/docs/ImplementationStatus.txt (added)
+++ db/torque/village/trunk/docs/ImplementationStatus.txt Wed Oct 31 15:23:36 2007
@@ -0,0 +1,293 @@
+A B O U T
+---------
+This file describes the current implementation status of the project.
+If you implement a method, please be sure to also update this file 
+with the latest information. At the present time, approximately 
+90% or more of this project has been completed. Contributions in the form 
+of diff output are welcome. Please note that all contributed code must 
+be in the form of 100% Pure Java and fully clean room implemented.
+
+JSFormatter <http://gene.md.huji.ac.il/~tald/jstyle/jsformatter.html>
+has been used to format the source code into a standard 
+format. Here is the arguments that were used:
+
+java jstyle.JSFormatter -b
+
+K E Y
+-----
+An x marks a method that has been implemented.
+An o marks a method that has not been implemented.
+On the right hand side are comments about the method.
+
+N O T E S
+---------
+Serialization of any type has not been implemented.
+
+The entire SelectStmt class has not been implemented, as a result, 
+any methods or constructors that depended on that class have also not 
+been implemented.
+
+The TableDataSet.saveWithoutStatusUpdate() functionality has not been 
+implemented yet.
+
+The TableDataSet.setOptimisticLockingCol() functionality has not been 
+implemented yet.
+
+C L A S S E S
+-------------
+
+Column()
+x  autoIncrement() 
+o  dbKonaMethod() // unknown use
+x  dbtype() 
+o  destroy() // private used for serialization
+o  initialize() // private used for serialization
+x  isBigDecimal() 
+x  isBinary() 
+x  isBoolean() 
+x  isByte() 
+x  isBytes() 
+x  isDate() 
+x  isDouble() 
+x  isFloat() 
+x  isInt() 
+x  isLong() 
+x  isLongVarBinary() 
+x  isShort() 
+x  isString() 
+x  isTime() 
+x  isTimestamp() 
+x  isVarBinary() 
+o  javaType() // unknown use
+x  length() 
+x  name() 
+x  nullAllowed() 
+x  precision() 
+o  preparedStatemntBindMethod() // unknown use
+x  readOnly() 
+o  resultSetMethod() // unknown use
+x  scale() 
+x  searchable() 
+x  type() 
+x  typeEnum() 
+
+DataSet()
+x  addRecord() 
+x  addRecord(DataSet) // additional method
+x  allRecordsRetrieved() 
+x  clearRecords() 
+x  close() 
+x  connection() 
+x  containsRecord(int) 
+o  destroy() // private used for serialization
+x  fetchRecords() 
+x  fetchRecords(int) 
+x  fetchRecords(int, int) 
+x  getRecord(int) 
+x  getResultSet() 
+x  getSelectString() 
+o  initialize() // private used for serialization
+x  lastFetchSize() 
+o  maxColumnWidths(boolean) // unknown use
+o  readObject() // private used for serialization
+x  releaseRecords() 
+x  removeRecord(Record) 
+x  reset() 
+x  resultSet() 
+x  schema() 
+x  size() 
+x  toString() // implemented by Serge Knystautas http://www.lokitech.com
+
+x Enums()
+x  AFTERDELETE 
+x  AFTERINSERT 
+x  AFTERUPDATE 
+x  BEFOREDELETE 
+x  BEFOREINSERT 
+x  BEFOREUPDATE 
+x  DELETE 
+x  INSERT 
+x  ORACLE 
+x  SQLSERVER 
+x  SYBASE 
+x  UNKNOWN 
+x  UPDATE 
+x  ZOMBIE 
+
+x KeyDef() 
+x  addAttrib(String) 
+x  containsAttrib(String) 
+x  getAttrib(int) 
+x  size() 
+
+x QueryDataSet() 
+o QueryDataSet(Connection, SelectStmt) // not yet implemented NO SelectStmt yet
+x QueryDataSet(Connection, String) 
+x QueryDataSet(ResultSet) 
+x  getSelectString() 
+x  resultSet() 
+
+x Record() 
+x Record(DataSet) 
+o  asFormattedString(String, int[]) // not yet implemented
+x  dataset() 
+x  getRefreshQueryString()
+x  getSaveString() 
+x  getValue(int) 
+x  getValue(String) 
+x  isAZombie() 
+x  markForInsert() 
+x  markForUpdate() 
+x  markRecordClean() // guessed on implementation
+x  markToBeDeleted() 
+x  markValueClean(int) 
+x  markValueClean(String) 
+x  markValueDirty(int) 
+x  markValueDirty(String) 
+x  needsToBeSaved() 
+x  recordIsClean() 
+x  refresh(Connection)
+x  save() 
+x  save(Connection) 
+o  saveWithoutStatusUpdate(Connection) // not yet implemented
+x  schema() 
+x  setValue(int, BigDecimal) 
+x  setValue(int, boolean) 
+x  setValue(int, byte[]) 
+x  setValue(int, Date) 
+x  setValue(int, Date) 
+x  setValue(int, double) 
+x  setValue(int, float) 
+x  setValue(int, int) 
+x  setValue(int, long) 
+x  setValue(int, String) 
+x  setValue(int, Time) 
+x  setValue(int, Timestamp) 
+x  setValue(int, Value) 
+x  setValue(String, BigDecimal) 
+x  setValue(String, boolean) 
+x  setValue(String, byte[]) 
+x  setValue(String, Date) 
+x  setValue(String, Date) 
+x  setValue(String, double) 
+x  setValue(String, float) 
+x  setValue(String, int) 
+x  setValue(String, long) 
+x  setValue(String, String) 
+x  setValue(String, Time) 
+x  setValue(String, Timestamp) 
+x  setValue(String, Value) 
+x  setValueNull(int) 
+x  setValueNull(String) 
+x  size() 
+x  toBeSavedWithDelete() 
+x  toBeSavedWithInsert() 
+x  toBeSavedWithUpdate() 
+x  toString() // implemented by Serge Knystautas http://www.lokitech.com
+x  unmarkToBeDeleted() 
+x  updateStatus() // not yet implemented
+x  valueIsClean(int) 
+
+Schema() 
+x  attributes() 
+x  column(int) 
+x  column(String) 
+o  destroy()  // private used for serialization
+x  index(String) 
+o  initialize() // private used for serialization
+x  numberOfColumns() 
+x  schema(Connection, String) 
+x  schema(Connection, String, String) 
+x  tableName() 
+x  toString() // implemented by Serge Knystautas http://www.lokitech.com
+
+// NOT YET IMPLEMENTED
+SelectStmt(int) 
+  addQbe(String, float) 
+  addQbe(String, int) 
+  addQbe(String, String) 
+  addUnquotedQbe(String, String) 
+  clearQbe() 
+  clearQbe(String) 
+  field(String) 
+  field(String, String) 
+  from(String) 
+  getQbeWhere() 
+  group(String) 
+  having(String) 
+  order(String) 
+  setQbe(String, float) 
+  setQbe(String, float[]) 
+  setQbe(String, int) 
+  setQbe(String, int[]) 
+  setQbe(String, String) 
+  setQbe(String, String[]) 
+  setUnquotedQbe(String, String) 
+  setUnquotedQbe(String, String[]) 
+  toString() 
+  unique() 
+  where(String) 
+
+x TableDataSet() 
+x TableDataSet(Connection, Schema, KeyDef) 
+x TableDataSet(Connection, String) 
+x TableDataSet(Connection, String, KeyDef) 
+x TableDataSet(Connection, String, String) 
+x TableDataSet(Connection, String, String, KeyDef) 
+x  attributes() // implemented in DataSet()
+o  debugInfo() // Unknown
+x  fetchRecords(int, int) 
+x  getSelectString() 
+x  keydef() 
+x  optimisticLockingCol() // not used
+x  order(String) 
+x  other(String) 
+x  refresh(Connection) 
+x  refreshOnSave() 
+x  removeDeletedRecords() 
+x  resultSet() 
+x  save() 
+x  save(boolean) // doesn't currently do anything with the boolean
+x  save(Connection, boolean) // doesn't currently do anything with the boolean
+o  saveWithoutStatusUpdate(Connection) // not yet implemented
+x  schema() 
+o  selectStmt() // not yet implemented
+x  setOptimisticLockingColumn(String) // not used
+o  setRefreshOnSave(boolean) // not yet implemented
+x  tableName() 
+x  tableQualifier(String) // implemented correctly?
+o  updateStatus() // not yet implemented
+x  where(String) 
+
+x Value(ResultSet, int, int) 
+x  asBigDecimal() 
+x  asBigDecimal(int) 
+x  asBoolean() 
+x  asByte() 
+x  asBytes() 
+x  asDate() 
+x  asDouble() 
+x  asFloat() 
+x  asInt() 
+x  asLong() 
+x  asShort() 
+x  asString() 
+x  asTime() 
+x  asTimestamp() 
+x  asUtilDate() 
+x  isBigDecimal() 
+x  isBytes() 
+x  isDate() 
+x  isDouble() 
+x  isFloat() 
+x  isInt() 
+x  isLong() 
+x  isNull() 
+x  isString() 
+x  isTime() 
+x  isTimestamp() 
+x  isUtilDate() 
+x  toString() 
+x  type() 
+    
+    
\ No newline at end of file

Added: db/torque/village/trunk/docs/README.txt
URL: http://svn.apache.org/viewvc/db/torque/village/trunk/docs/README.txt?rev=590852&view=auto
==============================================================================
--- db/torque/village/trunk/docs/README.txt (added)
+++ db/torque/village/trunk/docs/README.txt Wed Oct 31 15:23:36 2007
@@ -0,0 +1,75 @@
+V I L L A G E
+=============
+
+
+What is it?
+-----------
+Village is a 100% Pure Java API that sits on top of the JDBC API. The purpose 
+of this API is to make it easier to interact with a JDBC compliant relational database. 
+By using Village, it is possible to execute and manage 
+select/insert/update/delete SQL statements without having to actually write 
+a single line of SQL. Village can use any valid JDBC Connection object, so it 
+is possible to use Village with a JDBC Connection pool. 
+
+This software is being freely released under the Apache License, Version 2.0. Please see 
+common/LICENSE.txt in the distribution for more information.
+
+
+Why the name Village?
+---------------------
+A Village is an interface to the database. The huts are the tables and the 
+people are the rows.
+
+
+History
+-------
+Village is inspired by the dbKona API documents available on BEA/Weblogic's website
+<http://weblogic.beasys.com/>.
+
+The BEA WebXpress product is an excellent piece of software and it is highly 
+recommended that you purchase it.
+
+
+How to use it
+-------------
+Documentation included with Village is extremely thin at this point. Although, 
+there is comprehensive documentation of dbKona on the BEA/Weblogic website. 
+All of the methods in Village are lightly documented in the javadoc format. There 
+is also some example code in the javadoc for TableDataSet and QueryDataSet.
+
+Please also refer to the com.workingdogs.village.Test*.java class for some 
+other examples of code. 
+
+
+Frequently Asked Questions
+
+Why is the package name com.workingdogs.village 
+instead of com.working-dogs.village?
+-----------------------------------------------
+Because for some reason, Sun decided that package naming conventions should 
+conform to domain names for which the package originated. But, they did not 
+consider the fact that domain names can contain a "-" in it and made that 
+an illegal character in package names. Arrrggg...
+
+
+Could you tell me the difference between Village and SQLJ?
+Why should/would I choose your API over an ANSI standard?
+From what I have read at http://www.oracle.com/java/sqlj/index.html
+I dont see why you are creating your own standard.
+-----------------------------------------------
+
+SQLJ might be an ANSI standard, but who said that screwing up Java
+standards is right? SQLJ requires a pre-compiler to convert
+your .sqlj files into .java files. Hello? javac doesn't have a
+pre-compiler for a reason! How can you reliably do rapid java
+development if you have to first run your pre-source code through
+something that munges it into something else?
+
+Also, I'm not creating my own standard, Village is inspired by the
+dbKona API that WebLogic/BEA developed for use with their WebXpress
+product. WebLogic/BEA's product is the number one java application server in
+use today. I think that point alone justifies the creation of this API.
+
+Lastly, this API is easy to use and easy to learn. It will save you 
+hours worth of typing as well as help prevent you from making countless 
+mistakes. The PreparedStatement handling alone makes using this API worth it.

Added: db/torque/village/trunk/docs/Schema.txt
URL: http://svn.apache.org/viewvc/db/torque/village/trunk/docs/Schema.txt?rev=590852&view=auto
==============================================================================
--- db/torque/village/trunk/docs/Schema.txt (added)
+++ db/torque/village/trunk/docs/Schema.txt Wed Oct 31 15:23:36 2007
@@ -0,0 +1,31 @@
+# Below is the schema that TestMySQL.java depends on.
+
+drop table if exists test;
+
+CREATE TABLE test
+(
+  a TINYINT null,
+  b SMALLINT null,
+  c MEDIUMINT null,
+  d INT null,
+  e INTEGER null,
+  f BIGINT null,
+  g REAL null,
+  h DOUBLE null,
+  i FLOAT null,
+  j DECIMAL(8,1) null,
+  k NUMERIC(8,1) null,
+  l CHAR(255) null,
+  m VARCHAR(255) null,
+  n DATE null,
+  o TIME null,
+  p TIMESTAMP null,
+  q DATETIME null,
+  r TINYBLOB null,
+  s BLOB null,
+  t MEDIUMBLOB null,
+  u LONGBLOB null,
+  v TINYTEXT null,
+  w TEXT null,
+  x MEDIUMTEXT null
+);



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org