"David Wynter" <[EMAIL PROTECTED]> writes:

This is, afaik a shortcoming of Torque. You can't reference a table outside
your current schema.xml file. 

I ended up having about 60 table definitions in a single schema.xml file
because of this. Speaking of horrors...
        
        Regards
                Henning


>Another quick question on the example below.

>Assuming the schema below goes into your
>"package="de.intermeta.myapp.security.om"" package and you have your
>application om classes in say "package="de.intermeta.myapp.om"" then how do
>you reference your MYAPP_USER as a foreign key in ylour application schema
>xml file

>i.e. in a table specification in your application schema declaration you
>have

>    <foreign-key foreignTable="MYAPP_USER">
>      <reference local="creator_id" foreign="USER_ID"/>
>    </foreign-key>

>Will this work?

>Thanks

>David

>-----Original Message-----
>From: Henning P. Schmiedehausen [mailto:[EMAIL PROTECTED]
>Sent: 02 July 2003 14:16
>To: [EMAIL PROTECTED]
>Subject: Re: Extending user in T2.3


>Zamek <[EMAIL PROTECTED]> writes:

>>I would like to get a working TR.props file  or a part of TR.prop

>>for compensation, I will correct, and comment the documentation.

>Ok, the following is cut life out of the application running in the
>window behind this one...

>--- cut ---
>services.SecurityService.classname=org.apache.turbine.services.security.torq
>ue.TorqueSecurityService
>[...]
># -------------------------------------------------------------------
>#
>#  S E C U R I T Y  S E R V I C E
>#
># -------------------------------------------------------------------

># Default: org.apache.turbine.services.security.db.DBUserManager
>services.SecurityService.user.manager =
>org.apache.turbine.services.security.torque.TorqueUserManager

># This is the class that implements the ACL interface.
>services.SecurityService.acl.class =
>org.apache.turbine.util.security.TurbineAccessControlList

>#
># Configure Object Classes in the Security Service
>#

># Custom User
>services.SecurityService.user.class = de.intermeta.myapp.security.MyAppUser

>services.SecurityService.group.class =
>org.apache.turbine.services.security.torque.TorqueGroup
>services.SecurityService.permission.class =
>org.apache.turbine.services.security.torque.TorquePermission
>services.SecurityService.role.class =
>org.apache.turbine.services.security.torque.TorqueRole

>#
># Configure Peers for the Torque Security Service
>#
>services.SecurityService.torque.userPeer.class =
>de.intermeta.myapp.security.om.MyappUserPeer
>services.SecurityService.torque.groupPeer.class =
>de.intermeta.myapp.security.om.MyappGroupPeer
>services.SecurityService.torque.permissionPeer.class =
>de.intermeta.myapp.security.om.MyappPermissionPeer
>services.SecurityService.torque.rolePeer.class =
>de.intermeta.myapp.security.om.MyappRolePeer

>[...]

>--- cut ---

>--- cut --- myapp-schema.xml ---
><?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
><!DOCTYPE database SYSTEM
>"http://jakarta.apache.org/turbine/dtd/database_3_1.dtd";>

><database name="myapp"
>  defaultIdMethod="idbroker"
>  defaultJavaType="primitive"
>  defaultJavaNamingMethod="underscore"
>  package="de.intermeta.myapp.security.om">

>  <table name="MYAPP_USER" idMethod="idbroker">
>    <column name="USER_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="LOGIN_NAME" required="true" size="64" type="VARCHAR"
>javaName="UserName"/>
>    <column name="PASSWORD_VALUE" required="true" size="16" type="VARCHAR"
>javaName="Password"/>
>    <column name="FIRST_NAME" required="true" size="64" type="VARCHAR"/>
>    <column name="LAST_NAME" required="true" size="64" type="VARCHAR"/>
>    <column name="EMAIL" size="64" type="VARCHAR"/>
>    <column name="CONFIRM_VALUE" size="16" type="VARCHAR"
>javaName="Confirmed"/>
>    <column name="MODIFIED" type="TIMESTAMP" size="0"/>
>    <column name="CREATED" type="TIMESTAMP" size="0" javaName="CreateDate"/>
>    <column name="LAST_LOGIN" type="TIMESTAMP" size="0"/>
>    <column name="OBJECTDATA" type="VARBINARY"/>

><!-- Myapp Erweiterungen -->

>    <!-- Aktuell ausgewaehlte Sprachversion -->
>    <column name="MYAPP_LANGUAGE_ID" type="INTEGER" javaName="LanguageId"/>
>    <!-- Aktuell ausgewaehlte Gruppe -->
>    <column name="MYAPP_GRUPPEN_ID" type="INTEGER" javaName="GruppenId"/>

>    <unique>
>        <unique-column name="LOGIN_NAME"/>
>    </unique>

>  </table>

>  <table name="MYAPP_PERMISSION" idMethod="idbroker">
>    <column name="PERMISSION_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="PERMISSION_NAME" required="true" size="64" type="VARCHAR"
>javaName="Name"/>

>    <unique>
>      <unique-column name="PERMISSION_NAME"/>
>    </unique>

>  </table>

>  <table name="MYAPP_ROLE" idMethod="idbroker">
>    <column name="ROLE_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="ROLE_NAME" required="true" size="64" type="VARCHAR"
>javaName="Name"/>

>    <unique>
>        <unique-column name="ROLE_NAME"/>
>    </unique>

>  </table>

>  <table name="MYAPP_GROUP" idMethod="idbroker">
>    <column name="GROUP_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="GROUP_NAME" required="true" type="VARCHAR" size="64"
>javaName="Name"/>

>    <unique>
>        <unique-column name="GROUP_NAME"/>
>    </unique>

>  </table>

>  <table name="TURBINE_ROLE_PERMISSION">
>    <column name="ROLE_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="PERMISSION_ID" required="true" primaryKey="true"
>type="INTEGER"/>

>    <foreign-key foreignTable="MYAPP_ROLE">
>      <reference local="ROLE_ID" foreign="ROLE_ID"/>
>    </foreign-key>

>    <foreign-key foreignTable="MYAPP_PERMISSION">
>      <reference local="PERMISSION_ID" foreign="PERMISSION_ID"/>
>    </foreign-key>
>  </table>

>  <table name="TURBINE_USER_GROUP_ROLE">
>    <column name="USER_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="GROUP_ID" required="true" primaryKey="true"
>type="INTEGER"/>
>    <column name="ROLE_ID" required="true" primaryKey="true"
>type="INTEGER"/>

>    <foreign-key foreignTable="MYAPP_USER">
>      <reference local="USER_ID" foreign="USER_ID"/>
>    </foreign-key>

>    <foreign-key foreignTable="MYAPP_GROUP">
>      <reference local="GROUP_ID" foreign="GROUP_ID"/>
>    </foreign-key>

>    <foreign-key foreignTable="MYAPP_ROLE">
>      <reference local="ROLE_ID" foreign="ROLE_ID"/>
>    </foreign-key>
>  </table>

></database>
>--- cut --- myapp-schema.xml ---


>--- cut --- MyAppUser.java ---
>package de.intermeta.myapp.security;

>import org.apache.turbine.services.security.torque.TorqueUser;

>import de.intermeta.myapp.security.om.MyappUser;

>public class MyAppUser
>        extends TorqueUser
>{
>    /**
>     * Constructor.
>     */
>    public MyAppUser()
>    {
>        super();
>    }

>    /**
>     * This Constructor is used when the UserPeerManager
>     * has retrieved a list of Database Objects from the peer and
>     * must 'wrap' them into TorqueRole Objects. You should not use it
>directly!
>     *
>     * @param obj An Object from the peer
>     */
>    public MyAppUser(Persistent obj)
>    {
>        super(obj);
>    }


>    public int getLanguageId()
>    {
>        return ((MyappUser) getPersistentObj()).getLanguageId();
>    }

>    public void setLanguageId(int languageId)
>    {
>        ((MyappUser) getPersistentObj()).setLanguageId(languageId);
>    }

>    public int getGruppenId()
>    {
>        return ((MyappUser) getPersistentObj()).getGruppenId();
>    }

>    public void setGruppenId(int gruppenId)
>    {
>        ((MyappUser) getPersistentObj()).setGruppenId(gruppenId);
>    }
>}
>--- cut --- MyAppUser.java ---

>- Run the schema, you should get de.intermeta.myapp.security.om.<lots of
>classes>
>- add de.intermeta.maxpatch.myapp.security.MyAppUser.java
>- configure Turbine as described above
>- create the tables with maven torque:sql, put them into a database (I use
>PostgreSQL).

>Insert some data into the tables:

>--- cut ---
>INSERT INTO MYAPP_USER
>(USER_ID,LOGIN_NAME,PASSWORD_VALUE,FIRST_NAME,LAST_NAME)
>    VALUES (1,'turbine','turbine','Mr.','Turbine');

>INSERT INTO MYAPP_PERMISSION (PERMISSION_ID,PERMISSION_NAME)
>    VALUES (1,'Myapp');

>INSERT INTO MYAPP_ROLE (ROLE_ID,ROLE_NAME)
>    VALUES (1,'MyappAdmin');


>INSERT INTO MYAPP_GROUP (GROUP_ID,GROUP_NAME)
>    VALUES (1,'global');


>INSERT INTO MYAPP_GROUP (GROUP_ID,GROUP_NAME)
>    VALUES (2,'Myapp');


>INSERT INTO TURBINE_ROLE_PERMISSION (ROLE_ID,PERMISSION_ID)
>    VALUES (1,1);


>INSERT INTO TURBINE_USER_GROUP_ROLE (USER_ID,GROUP_ID,ROLE_ID)
>    VALUES (1,2,1);

>--- cut ---

>Now you should be able to log on with user "turbine" , pw "turbine".

>       Regards
>               Henning




>--
>Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
>[EMAIL PROTECTED]        +49 9131 50 654 0   http://www.intermeta.de/

>Java, perl, Solaris, Linux, xSP Consulting, Web Services
>freelance consultant -- Jakarta Turbine Development  -- hero for hire

>--- Quote of the week: "It is pointless to tell people anything when
>you know that they won't process the message." --- Jonathan Revusky

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


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

-- 
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
[EMAIL PROTECTED]        +49 9131 50 654 0   http://www.intermeta.de/

Java, perl, Solaris, Linux, xSP Consulting, Web Services 
freelance consultant -- Jakarta Turbine Development  -- hero for hire

--- Quote of the week: "It is pointless to tell people anything when
you know that they won't process the message." --- Jonathan Revusky

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

Reply via email to