Hi Derek and interested parties

I know there is a showSQL option that can be enabled with
JTA/Hibernate but I find the output verbose and uninformative about
parameter replacement.

So, I have my own ScalaQuery that allows simple debugging - the main
differences are -

    var queryParams: List[Pair[String,Any]] = Nil
   /*  the following method needs to be called by the various
SetParameter methods */
    def addParam(one: String,two: Any) = {
        query.setParameter(one, two)
        queryParams = (one, two) :: queryParams
    }
    /*
     output the query with parameters substitued, for debugging ...
     */
    def getQueryWithParams() = {
        var q = queryStr
        try {
            queryParams.foreach{v =>
                var rep = v._2 match {
                    case d: Date => "'"+SUtil.formatDate(d, "dd/MM/yyyy")+"'"
                    case s: String => "'"+s+"'"
                    case x => if (x==null) "" else x.toString
                }
                rep = rep.replaceAll("\\$", "ddDollardd") // stupid bug
                q = q.replaceAll(":"+v._1, rep)
            }
            q.replaceAll("ddDollardd", "\\$")
        } catch {
            case e: Exception => q+" PARAMS "+queryParams+ " EXCEPTION "+e
        }
    }

With this I can log the query via
 Log.info(emailQuery.getQueryWithParams())

Better still, (assuming execOnce exists in a utility object) when I
only need to see the query once in the log
    /*
     execulte execFn, just once for the jvm.
     */
    val execOnceSet = scala.collection.mutable.Set("")
    def execOnce(key: String, execFn: => Unit) = {
        if (!execOnceSet.contains(key)) {
            execOnceSet += key
            execFn
        }
    }

  execOnce("findByEmail",  Log.info(emailQuery.getQueryWithParams()) )


You can add the functionality if you find it useful

cheers
Oliver

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