db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thoralf Rickert" <thoralf.rick...@cadooz.de>
Subject AW: Copying Torque Object
Date Mon, 29 May 2006 06:50:15 GMT
Is it useful to make a "feature request" in JIRA?

> -----Urspr√ľngliche Nachricht-----
> Von: Thoralf Rickert [mailto:thoralf.rickert@cadooz.de] 
> Gesendet: Mittwoch, 24. Mai 2006 15:13
> An: Apache Torque Developers List
> Betreff: Copying Torque Object
> 
> 
> Hi!
> 
> I've a small problem with the copy() and copyInto() methods 
> in the generated Torque objects. I've tables with 
> dependencies from other tables (for example a table "login" 
> which has a foreign key to a table "address"). I want to use 
> the BaseAddress.copy() method to copy the address object and 
> save it. If I use this method, it also loads and copies 
> internally all logins which are linked to the source address 
> to the new address. So, it makes a deep copy. Is it possible, 
> to override this behaviour outside the Base* class without 
> creating a totally new
> copy() method? I don't think so...
> 
> I've noticed this some time a go and wrote my own copy() 
> method in the extended Address class like this:
> 
> public Address copy(boolean deepcopy) throws Exception {
>   if (deepcopy)
>     return super.copy();
>   else {
>     Address newAddress = new Address();
>     newAddress.setFirstname(firstname);
>     ....
>     return newAddress;
>   }
> }
> 
> But after a little while I've added a new column to the 
> address table and forgot to update the new copy() method too. 
> So I didn't copy all data, if I use copy(false) - which takes 
> some time to find and fix. I can't make a deep copy because 
> there could be many thousands of referer rows to an address. 
> I just want to copy the address data.
> 
> So, the best way would be, that this copy(boolean) method 
> should be added during BaseAddress generation in that class. 
> I think, it's not very complicated to add this "feature". 
> Here is my proposal:
> 
> 1. add in Object.vm a new boolean parameter to copy() like this
>     public $table.JavaName copy(boolean deepcopy) throws 
> TorqueException
>     {
>         return copyInto(new ${table.JavaName}(),deepcopy);
>     }
> 2. create two new downwards compatible methods copy() and copyInto()
>     public $table.JavaName copy() throws TorqueException
>     {
>         return copy(true);
>     }
>     protected $table.JavaName copyInto($table.JavaName 
> copyObj) throws TorqueException
>     {
>         return copyInto(copyObject, true);
>     }
> 3. add a new parameter deepcopy to the old copyInto() method 
> and check that variable before making the
>    deepcopy. I think, it's not necessary to submit that value 
> recursivly to the referers.
>     protected $table.JavaName copyInto($table.JavaName 
> copyObj, boolean) throws TorqueException
>     {
>         ....
>   #if ($complexObjectModel)
>         if (deepcopy) {
>     #foreach ($fk in $table.Referrers)
>     ...
>     #end
>         }
>   #end
>     }
> 
> Is that possible or did I forgot something important?
> 
> bye
> Thoralf
> 
> 
> 
> ---------------------------------------------------------------------
> 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


Mime
View raw message