Hey guys,

i've been successfull with lift so far, now i want to do some more in
depth stuff. anyway, i am missing the postgresql cidr/ip datatypes.
Since they mostly work like strings i did the following:

import _root_.net.liftweb.mapper._
import _root_.net.liftweb.http.{S, FieldError}
import _root_.java.sql.{ResultSet, Types}
import _root_.java.util.regex._
import _root_.scala.xml.Text

object MappedCIDR {
        val ipv4 = Pattern.compile("^25[0-5]|2[0-4]\\d|[01]\\d{2}|\\d{1,2})(\
\.(25[0-5]|2[0-4]\\d|[01]\\d{2}|\\d{1,2})){3}(/(3[012]|[12]\\d|\\d)$")
        val ipv6 = Pattern.compile("^\\w*\\:\\w*\\:\\w*$")
        def valid(ip: String): Boolean = ipv4.matcher(ip).matches ||
ipv6.matcher(ip).matches
        def validIPAddr_?(ip: String) = valid(ip)
}


class MappedCIDR[T<:Mapper[T]](owner: T, maxLen: Int) extends
MappedString[T](owner, maxLen) {

        /**
         * Get the JDBC SQL Type for this field
         */
        def targetSQLType = Types.VARCHAR

        override def setFilter = notNull _ :: toLower _ :: trim _ ::
super.setFilter
        override def validate =  {
                (
                        if (MappedCIDR.ipv4.matcher(i_is_!).matches ||
MappedCIDR.ipv6.matcher(i_is_!).matches()) Nil
                        else List(FieldError(this, 
Text(S.??("invalid.ip.address"))))
                ) ::: super.validate
        }

}

The question is, how would one go about implementing a type which is
not in sql.Types? ;)
I found some jdbc driver extensions for that: 
http://oak.cats.ohiou.edu/~rf358197/jdbc/2/

Patching the current driver is painless, but i am still not sure how
to go on.

Can anyone gimme some advice at what code i should look which would
give me the best example for this?

Thanks!
--~--~---------~--~----~------------~-------~--~----~
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