> -----Original Message-----
> From: Marc Lustig [mailto:[EMAIL PROTECTED]] 
> Sent: Sunday, December 15, 2002 9:10 AM
> To: Turbine Users List
> Subject: more patches to Extending User update (was AW: 
> Documentation update)
> 
> 
> Hi Quinton,
> it's good to understand finally that the Turbine* om-classes 
> are not needed at all. They don't need to be generated, as 
> Turbine uses the classes that come along with the 
> org.apache.turbine package. It's a miracle to me why the 
> turbine-schema.xml file has not been removed in the latest 
> Turbine-release, or at least put into a separate dir to make 
> clear it is not needed (or rather must not) to be generated 
> for a project.

The turbine-schema.xml file, I think, is still used for the ant task to
create you database for you.  I probably need to figure out how to keep
Torque from generating objects from it but still allow it to be used to
generate database schemas.  I am assuming that you manually added the
column to TURBINE_USER in the database as I did.

> 
> Anyway, in order for the om-classes to compile I needed to 
> add the following changes to your patch:
> 
> 1) TurbineUserAdapter.getUserId() must return int (not Integer)
> 
>     public int getUserId()
>     {
>         return ((NumberKey)getPrimaryKey()).intValue();
>       //NOT: return new 
> Integer(((NumberKey)getPrimaryKey()).intValue());
>     }
> 
> since the Base* classes expect int values, not Integer.

This is caused by the javaType of you extended user table definition.  I
set the defaultJavaType in my database tag to "object".  I think you are
using "primitive" which is the default.  I use the other setting simply
because it is impossible to have a field defined as an int with a null
value.  The same is true for other data types as well.  

I will point out this possible variation in my how-to.

> 
> 2) TurbineUserAdapter needs to implements method setPrimaryKey:
> 
>     public void setPrimaryKey(String key) {
>       try {
>         super.setPrimaryKey(key);
>       }
>       catch (Exception ex) {
>       }
> 
> since
> org.apache.torque.om.BaseObject:
> public void setPrimaryKey(java.lang.String primaryKey)
>                    throws java.lang.Exception
>                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> This relates to the fact that Torque is still evolving 
> whereas the Turbine Security System 
> (org.apache.turbine.om.security.*) seems at stand still.

Thanks.  I will look into this one.  

> 
> I will check tomorrow if this solution will work as it is 
> supposed to do.
> 

Please let me know how it works for you.  

> Greetings
> Marc
> 
> 
> > -----Ursprungliche Nachricht-----
> > Von: Quinton McCombs [mailto:[EMAIL PROTECTED]]
> > Gesendet: Sonntag, 15. Dezember 2002 02:37
> > An: 'Turbine Users List'
> > Betreff: RE: Documentation update
> >
> >
> > Ahh...   You need to rename turbine-schema.xml to
> > turbine-schema.xml.nogenerate (or anything besides *-schema.xml).  
> > Next, delete all of the om.Turbine*, om.BaseTurbine*, 
> om.map.Turbine* 
> > classes that were generated.  These classes are not used.  
> They only 
> > make things more confusing.
> >
> > Now, your schema file....  You should not list TURBINE_USER 
> as a table 
> > in your schema file.  Instead, use AUDIOTEX_USER with an alias of 
> > TurbineUser.  This will cause AudiotexUser, 
> AudiotexUserPeer, and the 
> > associated Base* classes to be generated.  The Base* classes will 
> > extend the adapters TurbineUserAdpater and TurbineUserPeerAdpaters, 
> > respectively.  Foreign key references in your schema file 
> should use 
> > the table name AUDIOTEX_USER.
> >
> > I have made the appropriate changes to your schema file below.
> >
> >
> >     <table name="AUDIOTEX_USER" alias="TurbineUser" 
> > baseClass="de.geoconnect.audiotex.om.TurbineUserAdapter"
> > basePeer="de.geoconnect.audiotex.om.TurbineUserPeerAdapter">
> >             <column name="USER_ID" primaryKey="true" 
> required="true" 
> > type="INTEGER"/>
> >     </table>
> >     <table name="KUNDE">
> >             <column name="KUNDE_ID" primaryKey="true"
> > required="true" type="INTEGER"/>
> >             <foreign-key foreignTable="AUDIOTEX_USER">
> >                     <reference local="KUNDE_ID" foreign="USER_ID"/>
> >             </foreign-key>
> >     </table>
> >
> > This should get the om.* classes generating correctly for you.  On 
> > thing that I noticed is that the primary key of your KUNDE table is 
> > also the foreign key to AUDIOTEX_USER.  Was this your 
> intent?  Perhaps 
> > you really just wanted to add a USER_ID column in the KUNDE 
> table.  If 
> > so, change the definition of the KUNDE table as follows.
> >
> >     <table name="KUNDE">
> >             <column name="KUNDE_ID" primaryKey="true"
> > required="true" type="INTEGER"/>
> >             <column name="USER_ID" required="true" type="INTEGER"/>
> >             <foreign-key foreignTable="AUDIOTEX_USER">
> >                     <reference local="USER_ID" foreign="USER_ID"/>
> >             </foreign-key>
> >     </table>
> >
> > After making those changes, run the project-om task again.  The only
> > Turbine* or BaseTurbine* classes that you should have in your om 
> > package are TurbineUserAdapter and TurbineUserPeerAdapter.  
> You should 
> > not have any Turbine* classes in the om.map package.
> >
> >
> > Just FYI, here is the exact syntax from my schema file.  
> The name of 
> > my extend turbine user class is called NeoUser.  I added 
> clientId as a 
> > column in TURBINE_USER.
> >
> >     <table name="NEO_USER" alias="TurbineUser"
> >            baseClass="com.nequalsone.om.TurbineUserAdapter"
> >            basePeer="com.nequalsone.om.TurbineUserPeerAdapter">
> >         <column name="USER_ID" required="true" primaryKey="true" 
> > type="INTEGER"/>
> >     </table>
> >     <table name="ADDRESS">
> >         <column name="OBJECT_ID" primaryKey="true" required="true" 
> > type="INTEGER"/>
> >         <column name="LINE_1" size="40" type="VARCHAR"/>
> >         <column name="LINE_2" size="30" type="VARCHAR"/>
> >         <column name="CITY" size="30" type="VARCHAR"/>
> >         <column name="STATE" size="2" type="VARCHAR"/>
> >         <column name="ZIP_CODE" size="5" type="VARCHAR"/>
> >         <column name="ZIP_PLUS_4" size="4" type="VARCHAR"/>
> >         <column name="CLIENT_ID" required="true" type="INTEGER"/>
> >         <foreign-key foreignTable="CLIENT">
> >             <reference foreign="OBJECT_ID" local="CLIENT_ID"/>
> >         </foreign-key>
> >     </table>
> >
> > Please let me know if this helps.
> >
> >
> > -----Original Message-----
> > From: Marc Lustig [mailto:[EMAIL PROTECTED]]
> > Sent: Saturday, December 14, 2002 4:02 PM
> > To: Turbine Users List
> > Subject: AW: Documentation update
> >
> >
> > Thanks, Quinton, that helped.
> > However there is another problem: torque generates two 
> classes in all 
> > of these files:
> >
> > BaseTurbineUser.java
> > BaseTurbineUserPeer.java
> > BaseTurbineUserManager.java
> >
> > For example, BaseTurbineUser.java contains both of these classes
> >
> > public abstract class BaseTurbineUser extends 
> > de.geoconnect.audiotex.om.TurbineUserAdapter
> >     implements org.apache.turbine.om.Retrievable
> > and
> > public abstract class BaseTurbineUser extends BaseObject
> >     implements org.apache.turbine.om.Retrievable
> >
> > Apparently what happens is that Torque generates object TurbineUser 
> > two times, first time from turbine-schema.xml, and second time from 
> > project-schema.xml.
> >
> >
> > How did you got around this?
> >
> > My schema looks like this:
> >
> >     <table name="TURBINE_USER" alias="AudiotexUser" 
> > baseClass="de.geoconnect.audiotex.om.TurbineUserAdapter"
> > basePeer="de.geoconnect.audiotex.om.TurbineUserPeerAdapter">
> >             <column name="USER_ID" primaryKey="true" 
> required="true" 
> > type="INTEGER"/>
> >     </table>
> >     <table name="KUNDE">
> >             <column name="KUNDE_ID" primaryKey="true"
> > required="true" type="INTEGER"/>
> >             <foreign-key foreignTable="TURBINE_USER">
> >                     <reference local="KUNDE_ID" foreign="USER_ID"/>
> >             </foreign-key>
> >     </table>
> >
> >
> > Marc
> >
> >
> >
> > > -----Ursprungliche Nachricht-----
> > > Von: Quinton McCombs [mailto:[EMAIL PROTECTED]]
> > > Gesendet: Samstag, 14. Dezember 2002 22:25
> > > An: 'Turbine Users List'
> > > Betreff: RE: Documentation update
> > >
> > >
> > > My applogies.  It should have been getTitle().  This is the 
> > > attribute that, in the example, we are adding to Turbine User.  
> > > Sorry, I guess that was another reference that I over looked when 
> > > converted the code that I am using into the example.
> > >
> > > -----Original Message-----
> > > From: Marc Lustig [mailto:[EMAIL PROTECTED]]
> > > Sent: Saturday, December 14, 2002 2:16 PM
> > > To: Turbine Users List
> > > Subject: AW: Documentation update
> > >
> > >
> > > Quinton, I tried out your Extend-User howto. I'm running into 
> > > various problems, but first of all: you have this method in your 
> > > TurbineMapBuilderAdapter
> > >
> > > public void doBuild() throws java.lang.Exception
> > >     {
> > >         super.doBuild();
> > >
> > >         // Make dummy object - required for adding a 
> column to the map
> > >         Integer integer = new Integer(0);
> > >
> > >         // Add extra User columns.
> > >         TableMap tMap = 
> > > Torque.getDatabaseMap().getTable(getTableUser());
> > >         tMap.addColumn(getClientId(),integer);
> > >                        ^^^^^^^^^^^^
> > >     }
> > >
> > > Problem is there is no method getCliendId() neither in 
> > > TurbineMapBuilderAdapter nor in 
> > > org.apache.turbine.util.db.map.TurbineMapBuilder.
> > >
> > > Could you please let me know how you implemented this method ? 
> > > Thanks!
> > >
> > > Once, this is fixed all the other compilations errors might fade 
> > > away.
> > >
> > > Marc
> > >
> > >
> > > --
> > > To unsubscribe, e-mail: 
> > > <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail: 
> > > <mailto:[EMAIL PROTECTED]>
> > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: 
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> > --
> > To unsubscribe, e-mail: 
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: 
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
> 
> 
> --
> To 
> unsubscribe, e-mail:   
> <mailto:turbine-user-> [EMAIL PROTECTED]>
> For 
> additional commands, 
> e-mail: <mailto:[EMAIL PROTECTED]>
> 
> 


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to