Hi Ralf, since I'm a newbie of the Castor world, could you provide me some guideline for writing a test case?
Thank you Alessandro 2005/7/18, Ralf Joachim <[EMAIL PROTECTED]>: > Hi Alessandro, > > I think such a update-or-create-if-not-available method would be a good > addition to current functions. > > I suggest to create a new issue in jira. Write a test case so that > others can reproduce the problem and attach that to the new issue. We > also wouldn't mind if you'll start implementing this function and > contribute that to castor ;-) . > > Having said that Gregory's idea to retrieve objects from the database at > unmarshalling by using something like a FieldHandler also sounds very > interesting. As I don't know the XML side well, I don't know if XML > offers something like that or how much work it would be to implement. > > Regards > Ralf > > > Alessandro Imperio schrieb: > > The ID and all the primary key info are stored in the XML file (I have > > to manage through XML the exchange of objects that must share the same > > ID, so this information could be retrieved directly from the XML). > > I thought a possible solution with autostore set to false: > > > > 1. Unmarshall the XML --> create the object tree > > 2. Starting from the top of the tree, try loading the first object > > using the db.load() method > > 3. If the load succeeds, the object already exists so update all its > > properties with the object previously obtained through unmarshall. > > 4. If the load fails, create the object using the db.create() method. > > 5. Repeat these steps for each sub-object recursively. > > > > I'm asking why Castor doesn't implement such a mechanism forcing the > > user to write the procedure for the update. > > > > 2005/7/18, Gregory Block <[EMAIL PROTECTED]>: > > > >>On 18 Jul 2005, at 09:25, Alessandro Imperio wrote: > >> > >> > >>>I tried to unmarshall the XML file, create the object tree I need, set > >>>autostore to true and call the db.create() method, but this works only > >>>if the objects didn't already exist in the DB, because Castor tries to > >>>create all the objects with an INSERT sql statement. > >>> > >> > >>... yup. > >> > >> > >> > >>>The question is: which is the shortest path to do this? It seems like > >>>I have to traverse all the object tree manually, creating all the > >>>related objects and doing all the checks, but the tree could be very > >>>complex... Does Castor provide an automatic mechanism for creating an > >>>object in the DB if it doesn't exist or update it if it already exist? > >>> > >> > >>Just thinking out loud: > >> > >>There's one half of me that says this could be automated; but being > >>automatic would depend, specifically, on the primary keys on the > >>table. If the inbound XML knew the information based on the table's > >>primary key data, you'd have a way of saying "this object is the same > >>as this row in the table"; then there'd be some theoretical way of > >>matching the object against the database representation on the update > >>call. You'd still have the problem of requesting a modification to a > >>row of the database through an object you didn't load via castor, of > >>course. Moreover, this is only going to work for a strict subset of > >>real-world data (the world where id rows don't exist in the XML, and > >>do exist in the data). > >> > >>Another option would be to change the way Castor instantiates > >>objects; you could, at that point, hand it something that was 'aware' > >>of how to instantiate an object from Castor's db backend, and return > >>a fresh one when it didn't exist in the DB; finder queries could be > >>used to locate the correct data. > >> > >>However, that's then going to run into issues when it comes to the > >>remainder of the object tree in 1:n/m:n relationships, as the > >>'instantiator' needs to verify that object isn't already present on > >>the previous object. > >> > >> > >>Gut feeling: working on the way object instantiation works should > >>provide a solution. Not sure it will today, however. > >> > >> > >> > >> > >>------------------------------------------------- > >>If you wish to unsubscribe from this list, please > >>send an empty message to the following address: > >> > >>[EMAIL PROTECTED] > >>------------------------------------------------- > >> > >> > > > > > > ------------------------------------------------- > > If you wish to unsubscribe from this list, please > > send an empty message to the following address: > > > > [EMAIL PROTECTED] > > ------------------------------------------------- > > -- > > Syscon Ingenieurbüro für > Meß- und Datentechnik GmbH > Ralf Joachim > Raiffeisenstraße 11 > D-72127 Kusterdingen > Germany > > Tel. +49 7071 3690 52 > Mobil: +49 173 9630135 > Fax +49 7071 3690 98 > > Email: [EMAIL PROTECTED] > Web: www.syscon-world.de > > ------------------------------------------------- > If you wish to unsubscribe from this list, please > send an empty message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

