Re: commitChanges and ValidationExceptions

From: Nikolai Raitsev (nikolai.raitse..mail.com)
Date: Wed Jun 28 2006 - 05:15:06 EDT

  • Next message: Marcin Skladaniec: "Re: commitChanges and ValidationExceptions"

    Thanks for your answer, Marcin!

    2006/6/28, Marcin Skladaniec <marci..sh.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
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Wed Jun 28 2006 - 05:15:30 EDT