cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nikolai Raitsev" <nikolai.rait...@gmail.com>
Subject Re: commitChanges and ValidationExceptions
Date Wed, 28 Jun 2006 14:53:13 GMT
thank you, Marcin:)

2006/6/28, Marcin Skladaniec <marcin@ish.com.au>:
>
>
> What I had in mind was (using your example) :
>
> SelectQuery selQueryTab1 = new SelectQuery("Tab1");
> DataObjectList dataObjectsInTab1 = new DataObjectList(dataContext
>                 .performQuery(selQueryInterface));
>
> int nSize = dataObjectsInTab1.size();
> for(int i=0; i<nSize; i++)
> {
>         dataObjectTab1 = (Tab1) dataObjectsInTab1.get(i)
>         dataObjectTab2 = (Tab2) dataContext.createAndRegisterNewObject
> ("Tab2");
>         //here copy data from dataObjectTab1 into dataObjectTab2
>
>
>         ValidationResult validationResult = new ValidationResult();
>         dataObjectTab2.validateForSave(validationResult);
>
>         if (validationResult.hasFailures()) {
>                 //log failures
>         }
> }
> dataContext.setValidatingObjectsOnCommit(false);
> dataContext.commitChanges();
>
> Remember that in your "Tab2" object you can override validateForSave
> (...) method to add more validation rules to your object. (dont
> forget to call super.validateForSave(...) otherwise you might get
> unexpected results)
>
> Marcin
>
>
>
> On 28/06/2006, at 7:15 PM, Nikolai Raitsev wrote:
>
> > Thanks for your answer, Marcin!
> >
> > 2006/6/28, Marcin Skladaniec <marcin@ish.com.au>:
> >>
> >> Welcome Nikolai !
> >>
> >> If I get you right, you want to commit data regardless of validation,
> >> but log all validation exceptions.
> >
> >
> > yes, that is correct :)
> >
> > You can call validateForSave() manually, get the failures, and than
> >> commit with setValidatingObjectsOnCommit flag off.
> >
> >
> > this proceed  i have  already implemented, in the moment like that:
> >
> > SelectQuery selQueryTab1 = new SelectQuery("Tab1");
> > DataObjectList dataObjectsInTab1 = new DataObjectList(dataContext
> >                .performQuery(selQueryInterface));
> >
> > int nSize = dataObjectsInTab1.size();
> > for(int i=0; i<nSize; i++)
> > {
> >     dataObjectTab1 = (Tab1) dataObjectsInTab1.get(i)
> >     dataObjectTab2 = (Tab2) dataContext.createAndRegisterNewObject
> > ("Tab2");
> >     //here copy data from dataObjectTab1 into dataObjectTab2
> >     try
> >     {
> >        dataObjectTab2.validateData();
> >     }
> >     catch(ValidationException vex)
> >     {
> >        //here log validation faults
> >     }
> >
> > }
> >
> > //and hier commitChanges
> > dataContext.commitChanges();
> >
> > //////////////////////////////////////////////
> > the validationData()-Method looks like that:
> >
> > public void validate() throws ValidationException
> > {
> >  //here data validation, and if that faults throw new
> > ValidationException...
> > }
> >
> > ////////////////////////////////////////////////////
> >
> >
> > thus, I use not the validationForSave()-Method, but i find it
> > unfortunate,
> > that cayenne have this automated mechanism, which i cannot use...:(
> >
> > Therefore was also my ask, whether it can be automated with the
> > validationForSave()-method...
> >
> >
> > Marcin
> >> PS: this might be helpful http://objectstyle.org/confluence/display/
> >> CAYDOC/DataObject+Validation
> >
> >
> > thank you for the tip ;), the doku i saw;)
> >
> > Nikolai
> >
> > On 28/06/2006, at 5:01 PM, Nikolai Raitsev wrote:
> >>
> >> > Hello
> >> > I am new here
> >> > and sorry for my English:)
> >> >
> >> > I have  searched  the mailing lists,  but not found possible answer
> >> > for my
> >> > question.
> >> > Here is my question, maybe everybody can help me:
> >> >
> >> > how can I execute commitChanges()-Method, with a lot of
> >> > ValidationExceptions?
> >> >
> >> > For the moment I implemented validateForSave-Method for my
> >> > CayenneDataObject.
> >> >
> >> > the following happens:
> >> >
> >> > I have 2 tables: 1. table with 1000 datasets and 2. table without
> >> > data.
> >> >
> >> > on DataObject from 2. table i have validateForSave-method
> >> >
> >> > if i copy data from 1.table into 2.table and make commit like this:
> >> > try
> >> > {
> >> > dataContext.commitChanges();
> >> > }
> >> > catch(ValidationException vex)
> >> > {
> >> > System.out.println(vex.getValidationResult().getFailures().size());
> >> > }
> >> > i have a correct number from validation faults... but the 2.table
> >> > is empty.
> >> >
> >> > if i call (before commitChanges())
> >> > dataContext.setValidatingObjectsOnCommit(false);
> >> >
> >> > then i have 1000 datasets in second table, but no information above
> >> > the
> >> > validation faults
> >> >
> >> > Wat can I do? I need the data in 2. table and the information about
> >> > validation faults I would like only log...
> >> >
> >> > i hope i have my question clear verbalized...
> >> > thanks for help,
> >> >
> >> > Nikolai Raitsev
> >>
> >> -------------------------->
> >> ish
> >> http://www.ish.com.au
> >> Level 1, 30 Wilson Street Newtown 2042 Australia
> >> phone +61 2 9550 5001   fax +61 2 9550 4001
> >>
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message