Yeah i've been watching it for a while; not that there is anything wrong with 
mapper / jpa, but ScalaQuery appears to be a more functional design and the 
whole "its not an ORM" thing that is favoured by quite a number of people makes 
it very interesting indeed. 

Cheers, Tim

On 11 Jan 2010, at 18:38, Joni Freeman wrote:

> Tim,
> 
> ScalaQuery is a great DSL to interface relational database and to
> construct type safe SQL queries. I find that kind of approach often
> preferable compared to full blown ORMs (like Hibernate etc.) since it
> gives full control over SQL queries and does not impose any
> constraints on object model.
> 
> At the moment it is a bit difficult to use ScalaQuery with Lift since
> latest versions of ScalaQuery requires Scala 2.8. But once Lift is
> fully on 2.8 there should be no problems at all in using it in Lift
> app. ScalaQuery is still work in progress and there hasn't been any
> official release as far as I know, the documentation is also severely
> lacking.
> 
> Cheers Joni
> 
> On 11 tammi, 13:32, Timothy Perrett <timo...@getintheloop.eu> wrote:
>> Hey Joni,
>> 
>> What did you think of ScalaQuery btw? Have you used it inside a lift app?
>> 
>> Cheers, Tim
>> 
>> On 11 Jan 2010, at 11:07, Joni Freeman wrote:
>> 
>>> Ok, thanks for clarification. Unfortunately my knowledge about mapper
>>> is very limited (I've previously used ScalaQuery for db persistence).
>>> Maybe someone else can answer the question better, the question being:
>>> What is the easiest way to store instances of Observations into
>>> database using mapper.
>> 
>>> case class Observation(notice: List[Notice], header: List[Header],
>>> data: List[Data])
>> 
>>> Notice, Header and Data are simple case classes having just primitive
>>> fields.
>> 
>>> Cheers Joni
>> 
>>> On 11 tammi, 10:36, Randinn <rand...@gmail.com> wrote:
>>>> Sorry for the confusion Observation is a table actually, I meant to
>>>> write mapper. So what we're doing is calling up thejsonfile, making
>>>> it a string, putting it through the parcer and inserting it into the
>>>> table.
>> 
>>>> On Jan 11, 5:49 pm, Joni Freeman <freeman.j...@gmail.com> wrote:
>> 
>>>>> Hi,
>> 
>>>>> I'm sorry but I'm not totally sure what you are trying to accomplish.
>>>>> What would be the key in that map and what would be its values?
>> 
>>>>> Cheers Joni
>> 
>>>>> On 11 tammi, 03:14, Randinn <rand...@gmail.com> wrote:
>> 
>>>>>> I should explain what we are planning, the idea is to get thejson
>>>>>> file into a string, parse it and save the caught information into a
>>>>>> Observation map.
>> 
>>>>>> On Jan 11, 11:23 am, Randinn <rand...@gmail.com> wrote:
>> 
>>>>>>> Forgive my ignorance but I was wondering why (json\
>>>>>>> "observations").extract[Observation], is it to save as a flat file?
>> 
>>>>>>> On Jan 4, 7:13 am, Randinn <rand...@gmail.com> wrote:
>> 
>>>>>>>> I tried some of the changes you made but not all of them, and (json\
>>>>>>>> "observations").extract[Observation], I had no idea about that one.
>>>>>>>> Thank you very much for your help, it is appreciated.
>> 
>>>>>>>> On Jan 4, 1:00 am, Joni Freeman <freeman.j...@gmail.com> wrote:
>> 
>>>>>>>>> Google Groups does not shine in formatting code snippets. Here's nicer
>>>>>>>>> version:
>> 
>>>>>>>>> http://paste.pocoo.org/show/161578/
>> 
>>>>>>>>> Cheers Joni
>> 
>>>>>>>>> On 3 tammi, 12:20, Joni Freeman <freeman.j...@gmail.com> wrote:
>> 
>>>>>>>>>> Hi,
>> 
>>>>>>>>>> That's almost correct. I did following changes after looking intoJSON
>>>>>>>>>> content.
>> 
>>>>>>>>>> 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore:
>>>>>>>>>> case class Observation(notice: List[Notice], header: List[Header],
>>>>>>>>>> data: List[Data])
>> 
>>>>>>>>>> 2. There's optional data inJSON(some datapoints are nulls and Scala
>>>>>>>>>> Int or Double can't take null values). This can be fixed by 
>>>>>>>>>> extracting
>>>>>>>>>> into Option.
>> 
>>>>>>>>>> 3. The extracted Observation is inJSONfield 'observations'.
>>>>>>>>>> Therefore:
>>>>>>>>>> (json\ "observations").extract[Observation]
>> 
>>>>>>>>>> Your error stack trace suggests that you have an old version of lift-
>>>>>>>>>> json. Please upgrade to M8, there was a critical bug in case class
>>>>>>>>>> extraction in older versions.
>> 
>>>>>>>>>> Full example which works for me:
>> 
>>>>>>>>>>   implicit val formats = net.liftweb.json.DefaultFormats
>>>>>>>>>>   case class Notice(copyright: String, copyright_url: String,
>>>>>>>>>> disclaimer_url: String)
>>>>>>>>>>   case class Header(refresh_message: String, ID: String, main_ID:
>>>>>>>>>> String, name: String, state_time_zone: String, time_zone: String,
>>>>>>>>>> product_name: String, state: String)
>>>>>>>>>>   case class Data(sort_order: Int, wmo: Int, history_product: String,
>>>>>>>>>> local_date_time: String,
>>>>>>>>>>                   local_date_time_full: String, air_temp: Option
>>>>>>>>>> [Double], dewpt: Option[Double], apparent_t: Option[Double],
>>>>>>>>>>                   rel_hum: Option[Int], delta_t: Option[Double],
>>>>>>>>>> wind_dir: String, wind_spd_kt: Option[Double], gust_kt: Option
>>>>>>>>>> [Double],
>>>>>>>>>>                   wind_spd_kmh: Option[Double], press: 
>>>>>>>>>> Option[Double],
>>>>>>>>>> rain_trace: String)
>> 
>>>>>>>>>>   case class Observation(notice: List[Notice], header: List[Header],
>>>>>>>>>> data: List[Data])
>> 
>>>>>>>>>>   (json\ "observations").extract[Observation]
>> 
>>>>>>>>>> Cheers Joni
>> 
>>>>>>>>>> On 3 tammi, 09:17, Randinn <rand...@gmail.com> wrote:
>> 
>>>>>>>>>>> I'm having a bit of trouble with LiftJsonparcing, I know I'm not
>>>>>>>>>>> doing it correctly but looking at the examples I cannot figure out
>>>>>>>>>>> what, anyway, here is the code in question..... If someone could 
>>>>>>>>>>> point
>>>>>>>>>>> me in the right direction that would be great, thanks in advance.
>> 
>>>>>>>>>>> class HelloWorld {
>>>>>>>>>>>   def howdy = <span>Welcome to hello-lift at {new
>>>>>>>>>>> _root_.java.util.Date}</span>
>>>>>>>>>>> val http = new Http
>>>>>>>>>>> val bos = new ByteArrayOutputStream
>>>>>>>>>>> val myRequest = new Request("http://www.bom.gov.au/fwo/IDV60901/
>>>>>>>>>>> IDV60901.94868.json")
>>>>>>>>>>> val rawdata = http(myRequest >>> bos)
>>>>>>>>>>> val bs = bos.toString
>>>>>>>>>>> val db = :/("www.bom.gov.au")
>> 
>>>>>>>>>>> valjson= parse(bs)
>> 
>>>>>>>>>>> implicit val formats = net.liftweb.json.DefaultFormats
>>>>>>>>>>>   case class Notice(copyright: String, copyright_url: String,
>>>>>>>>>>> disclaimer_url: String)
>>>>>>>>>>>   case class Header(refresh_message: String, ID: String, main_ID:
>>>>>>>>>>> String, name: String, state_time_zone: String,
>>>>>>>>>>>                     time_zone: String, product_name: String, state:
>>>>>>>>>>> String)
>>>>>>>>>>>   case class Data(sort_order: Int, wmo: Int, history_product: 
>>>>>>>>>>> String,
>>>>>>>>>>> local_date_time: String,
>>>>>>>>>>>                   local_date_time_full: Int, air_temp: Double, 
>>>>>>>>>>> dewpt:
>>>>>>>>>>> Double, apparent_t: Double,
>>>>>>>>>>>                   rel_hum: Double, delta_t: Double, wind_dir: 
>>>>>>>>>>> Double,
>>>>>>>>>>> wind_spd_kt: Double, gust_kt: Double,
>>>>>>>>>>>                   wind_spd_kmh: Double, press: Double, rain_trace:
>>>>>>>>>>> Double)
>>>>>>>>>>>   case class Observation(notice: Notice, header: Header, data: List
>>>>>>>>>>> [Data])
>>>>>>>>>>> json.extract[Observation]
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Lift" group.
>>> To post to this group, send email to lift...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> liftweb+unsubscr...@googlegroups.com.
>>> For more options, visit this group 
>>> athttp://groups.google.com/group/liftweb?hl=en.
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@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.
> 
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@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