Well, off the top of my head this may require some changes to the MetaMapper code to get working. Looking at the example PG code that you linked to, they use setObject on the PreparedStatement to insert CIDR objects. The problem is that the current MetaMapper code *always* uses the overload of setObject that takes the type parameter, and as you've discovered, there is no type for CIDR. We could maybe add a flag or special Type that tells MetaMapper to use the setObject without the type...
Derek On Tue, Aug 25, 2009 at 9:18 PM, Franz Bettag <fr...@bett.ag> wrote: > > 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/<http://oak.cats.ohiou.edu/%7Erf358197/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 -~----------~----~----~----~------~----~------~--~---