On Sat, May 30, 2009 at 2:05 AM, marius d. <marius.dan...@gmail.com> wrote:

>
>
>
> On May 29, 4:32 pm, Oliver Lambert <olambo...@gmail.com> wrote:
> > Hi Marius,
> > To try and answer your question, I had to go and look at the Record code
> in
> > more detail. I hadn't recently written the Binder Validator, so it wasn't
> > designed to be
> > complementary to anything else (however, some of the naming and
> methodology
> > is very
> > similar in both sets of code).
> >
> > What I found.
> > 1) MetaRecord.validate     === Binder.validate
> > 2) Field.validators             === BoundObj.validations
> > 3) Field.validationFunction === Validator.validate
> > 4) List[FieldError]              === List[ValidationError]
> >
> > Can I get rid of Binder Validation and just use Record/Field validation?
> > It certainly looks like I should try. However, I might have to add/change
> > some of the original Lift code.
> > For instance, I might want to add an errorType (with a default, so no
> code
> > is broken) to FieldError.
> > I might also want to move/change Field.validationFunction so its a little
> > more
> > like my Validator,with an errorType and toString (When I print my
> > validators, the errorType give a little
> > information on what they do, rather than just telling me I have a
> function -
> > I also filter using
> > the errorType)
>
> I think we should unify the models. What I particularly like about the
> existent validators is that it rlies on function type hence the
> flexibility to use anonymous functions or existent ones. SO IMHO it
> would be really neat to keep the existent validators per Field and if
> you would edd the errorType support would just great.
>

I think Ive managed to unify the models. There is a new Validator object,
net.liftweb.record.Validator that has an implicit conversion that accepts a
function (anonymous or otherwise) and wraps it in a Validator class with an
errorType. Thus validators can be written as functions or classes, and as
they are wrapped in a class it should be easy enough to add support for
javascript validation.
I can't really test it on the existing Record code, as I can't even manage
to instanciate a simple record. I have however, refactored the immutable
binding code.


> Oh FWIW I'm not a fan of function names starting with capital letters
> such as: def Range(lower: Int, upper: Int, errStr: String)  .. but
> that's just me.
>

Me neither. Don't know why I did this.


>
> >
> > Other things of interest that I found.
> >
> > Could a Binder be a MetaRecord? There are definitely some similarities.
> > Binder holds a set of
> > immutable objects which can be an advantage, but MetaRecord can talk to
> > databases which is
> > kind of useful at times.
>
> I think we should keep the Meta Record and Record. Please keep in mind
> that MetaRecord and Record have NOTHING to do with database, they are
> completely separated per design so that Records can be also used
> outside of a RDBMS scope. For DB we have DBMetaRecord and DBRecord
> which are not fully implemented yet.
>
> >
> > Could a BoundObj be a Field. Same distinction as above. A BoundObj[T] may
> > hold a reference to a string value
> > that is completely invalid. I'm not sure I see this in Field.
>
>
> IMHO I would just add the features that your code has and current code
> does not (such as error type) and put them in the MetaRecord/Record
> (or wherever they belong) and have a single coherent model. Please
> also take a deeper look on the existent code, in MetaRecord, Record,
> Fields implementations Not DB Fields) and see what goodies can be
> added from your new code.
>
> And integrating client side validations (as Dave suggested) in the
> same model would be really cool.
>
> >
> > cheers
> > Oliver
> >
> > On Fri, May 29, 2009 at 6:22 PM, marius d. <marius.dan...@gmail.com>
> wrote:
> >
> > > I see ... still the question remains. What are we going to do with two
> > > validators? I'd like to understand the principles of your addition
> > > (... I know I should have dig into the code but I don't have much time
> > > now).
> >
> > > I'd like to understand as I said previously if we have redundant
> > > validators or complementary functionality so that people to not get
> > > confused.
> >
> > > I'm not trying at all to be negative or anything, just trying to
> > > understand the value added.
> >
> > > Br's,
> > > Marius
> >
> > > On May 29, 11:01 am, Oliver Lambert <olambo...@gmail.com> wrote:
> > > > I'm aware of S.error and my ValidationError uses it when I'm ready to
> > > show
> > > > errors. I've briefly looked at the ValidationFunction and the thing I
> > > might
> > > > stumble on is the errorType which I rely on.
> >
> > > > I may be able to refactor the code to use List[FieldError] as I don't
> > > think
> > > > I rely on errorType at this point.
> >
> > > > I'll have a go at modifying the Binder code.
> >
> > > > cheers
> > > > Oliver
> >
> > > > On Fri, May 29, 2009 at 5:05 PM, Marius <marius.dan...@gmail.com>
> wrote:
> >
> > > > > Oliver,
> >
> > > > > I very briefly looked on your code and I saw that you have your own
> > > > > validator there. How would that play with the existent validattors
> > > > > that Record has where each field has a list of :
> >
> > > > > type ValidationFunction = MyType => Box[Node]
> >
> > > > > Note that current MetaRecord's validator after evaluating the
> > > > > validators for each field it yields a List[FieldError] which can be
> > > > > easily naturally used with S.error function to show the error
> messages
> > > > > etc.
> >
> > > > > Is there a redundancy or complementary functionality?
> >
> > > > > Br's,
> > > > > Marius
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to