db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Fischer <tfisc...@apache.org>
Subject RE: SetByName, SetByPeerName, SetByPostion support / Generic String to Column Object utility class.
Date Thu, 15 Jun 2006 15:36:34 GMT
Thanks a lot for your explanation, now I see what you have in mind.

My current feeling is that this is outside the scope of Torque. I do not 
see any additional benefit to include the ColumnValueConverter into Torque 
as compared to using it standalone. It is not the job of a Object 
relational mapper to provide String representations of objects; there are 
other libraries which do this, e.g. jakarta common's betwixt.


On Mon, 5 Jun 2006, Greg Monroe wrote:

>> -----Original Message-----
>> From: Thomas Fischer [mailto:tfischer@apache.org]
>> Greg, I like the first improvement and think it will improve Torque.
> Kewl.. It's about ready to go except for packaging and testing against
> the SVN repository head code.
>> I have read the second improvement thrice now but still do
>> not understand what it does and what it is for. Can you
>> please enlighten us earth-bound spirits by giving some example ?
> Don't you mean straighten out my confusing.. in a hurry to finish this
> ... end of note verbage?  LOL
> First, I think I need to revise the potential class / method
> signatures: ( FWIW: I'm still trying to find good name...)
> public class ColumnValueConverter {
>  public static parseColumnObject( ColumnMap cMap, String Value);
>  public static toString( ColumnMap cMap, Object value );
> }
> Here's an example using my specific need for this.  (You guessed it)...
> doing XML imports using the Torque generated DTD.  So, for example, I
> might have have records represented in XML like the ones below that
> need to be parsed and converted to a list of OM classes that my
> application can process.
> <dataset name="default">
>  <UserTable UserId="bob" Password="thePenguin" ClientId="101"
>     Expires="1 Jan 2007 00:00:00 EST" Rate="99.99"
>     Disabled="false"/>
>  <RolesTable UserId="bob" RoleId="student" CourseId="666"/>
> </dataset>
> Parsing the XML will get string representations of the Torque DB name,
> e.g. default; Table Name(s), e.g. UserTable; Column names, e.g. UserId;
> and values, e.g. bob.  Converting these String values into an OM class
> needs some XML Parser code (sans a lot of error checking) like:
> public void startElement(....
>    if ( rawname.equals("dataset") {
>        String dbName = attributes.getValue("name");
>        dbMap = Torque.getDatabase(dbName);
>        dbMap.initialize();
>    } else {
>       String table = rawName;
>       TableMap tMap = dbMap.getTable(table);
>       BaseObject record = tMap.getOMClass().newInstance();
>       for ( int i=0; I < attributes.getLength(); i++)
>         String columnName = attributes.getQName(i);
>         String value = attributes.getValue(i);
> // getColumnByJavaName searchs thru Columns[] to find match...
>        ColumnMap cMap = getColumnByJavaName(columnName)
> //*****************
> // *** Need to convert String to Column Appropriate object.
> //*****************
>        Object oValue =
>            ColumnValueConverter.parseColumnObject(cMap, value);
>        record.setByName(columnName, oValue);
>      }
>      recordList.add(record);
>   }
> }
> Having a ColumnValueConverter class will centralize all the
> logic needed to convert between String data representations and
> column specific object types (e.g. Date, Boolean, Float, and the
> like).
> I have used an XML import example, but I can see it being used in
> many different application needs.. e.g. Import/Export using Comma
> Separated Values format or processing a web form request that needs
> to return more than String values.
> Another possible use for it is to improve the way that default values
> get set from the default XML schema attribute.  E.g., have you ever
> tried to define a default value for a Date field?  You have to use
> long integer milliseconds format to get it to work.  Not nice.
> On the output side, having a central object that generates consistant
> string representation of data is also useful.  E.g., always generating
> true / false for booleans, or Numeric field strings with the right
> precision and scale, and the like.
> In addition, I can see the need for dealing export and import of
> binary data (e.g., picture Blob of user).  This might be a good place
> to have "safe string" encode/decode methods, e.g. Hex and/or base64
> encoding support.
> Well hopefully this is clearer and better stated.
> Greg
> Duke CE Privacy Statement
> Please be advised that this e-mail and any files transmitted with it are confidential
communication or may otherwise be privileged or confidential and are intended solely for the
individual or entity to whom they are addressed.  If you are not the intended recipient you
may not rely on the contents of this email or any attachments, and we ask that you  please
not read, copy or retransmit this communication, but reply to the sender and destroy the email,
its contents, and all copies thereof immediately.  Any unauthorized dissemination, distribution
or copying of this communication is strictly prohibited.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: torque-dev-help@db.apache.org

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

View raw message