Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS »
Discussion: OpenMRS Talk »
Real-Time: IRC Chat

IRC Logs

Child pages
  • 2008-07-24 - OpenMRS
Skip to end of metadata
Go to start of metadata
00:03:07 *** nribeka has quit IRC
00:03:08 <jmiranda> huntp,
00:03:28 <huntp> hey - sorry for the lack of response ......
00:03:37 <jmiranda> in our web application, we have a servlet filter that gets called at the beginning and end of a request
00:03:41 <huntp> i'm discussing here with a coleague too
00:03:48 <huntp> ok ...
00:03:54 <jmiranda> that filter will handle adding the user context back into the Context
00:04:31 <huntp> i've seen references to "org.openmrs.web" ... but, that's not part of the standard API right?
00:05:02 <jmiranda> exactly
00:05:17 <jmiranda> so you need to maintain the user information in the session
00:06:13 <jmiranda> and set the UserContext of the Context before each request
00:06:29 <jmiranda> if that's not possible, then i think you might need to have a single Context object per user
00:06:49 <jmiranda> (maintain that in the session)
00:07:06 <jmiranda> which is what openmrs did in the beginning
00:07:26 <r0bby> jmiranda: how long have you been w/ openmrs?
00:07:39 <jmiranda> late 2005
00:07:39 * r0bby has been lurking here for like a year or 2
00:08:07 <jmiranda> what's the interface between CF and java?
00:08:29 <jmiranda> is that something new?
00:08:53 <huntp> CF runs directly on the JRE
00:09:07 <r0bby> s/on the JRE/in the JVM/
00:09:10 <huntp> so, I can do something like this to reference the OpenMRS API ...
00:09:13 <huntp> application.openmrs.obj.context = createobject("java", "org.openmrs.api.context.Context");
00:09:37 <r0bby>
00:09:39 <r0bby> ick
00:10:17 <jmiranda> huntp, that might not do what you want it to though
00:11:39 <jmiranda> in our web application, the Context is instantiated by Spring (web framework)
00:11:54 <huntp> my subsequent calls are as follows:
00:12:01 <huntp> application.openmrs.obj.context.startup();
00:12:07 <huntp> application.openmrs.obj.context.authenticate('admin','test');
00:12:17 <r0bby> jmiranda: Spring isn't exactly a web framework :P
00:12:31 <huntp> and then - i can do something like this:
00:12:32 <huntp> application.openmrs.obj.context.getPatientService();
00:12:33 <jmiranda> ahhh, nevermind ... ben's got that bootstrap stuff in there so he can restart the app when modules are loaded
00:12:33 <r0bby> it's an IoC/DI framework w/ about a zillion other projects under the spring name :P
00:12:46 <jmiranda> right right
00:13:04 <r0bby> :P
00:13:30 <r0bby> god groovyConsole is an invaluable tool for rapidly testing code
00:13:36 <jmiranda> r0bby, thanks for the correction :)
00:13:40 <jmiranda> huntp, got it
00:13:57 <r0bby> it was a small error but an error nonetheless
00:14:04 <r0bby> we *DO* use spring mvc
00:14:28 <jmiranda> that's what i was referring to, but you are right it's more about the dependency injection than mvc
00:14:35 <r0bby> which is probably one of the hurdles we face w/ integrating grails :S
00:14:45 <jmiranda> since the mvc side is kind of crappy compared to other frameworks
00:14:58 <jmiranda> huntp, so you make a call to the patient service ..
00:15:05 <r0bby> spring mvc doesn't do the DI, spring's ioc/di container does
00:15:26 <jmiranda> nevermind
00:15:30 <r0bby> what little i understand about that thing that looks like black magic :)
00:15:38 <r0bby> I think Rod Johnson is a witch
00:15:48 <r0bby> oh kickass
00:16:00 <r0bby> if i declare one variable -- i don't need a return statement :D
00:16:11 <r0bby> ie 'ta' or whatever :D
00:16:15 * r0bby humps groovy
00:16:25 <r0bby> jmiranda: look into groovy and join the cult
00:16:35 <jmiranda> can you stick a java object in a cold fusion managed http session?
00:16:35 <r0bby> drink the kool-aid it won't kill you
00:16:48 <huntp> jmiranda: yes you can
00:17:18 <jmiranda> so you can create an OpenMRS UserContext object on a user's first request
00:18:04 <huntp> yes, exactly what i want to do - but not sure how ...
00:18:09 <jmiranda> add that to the session
00:18:31 <jmiranda> then call Context.setUserContext(userContext)
00:19:43 <jmiranda> when the thread is done processing that request, you need to clear the UserContext
00:19:58 <jmiranda> and add it back to the session
00:20:22 <jmiranda> when the second request comes in, you get the UserContext from the session and follow the same process
00:20:25 <jmiranda> here's the tricky part
00:20:35 <jmiranda> does cold fusion have anything like a servlet filter
00:20:49 <jmiranda> something that can be invoked by the container before/after a request
00:21:18 <jmiranda> ... before/after a request is processed
00:21:39 <r0bby> br />/me dances
00:21:40 <r0bby> er
00:22:05 <huntp> yes - we have 2 files with reserved filenames available for that sort of thing .... "onrequeststart.cfm" and "onrequestend.cfm"
00:22:19 <jmiranda> ok
00:23:09 <jmiranda> here's the logic again (you can check the OpenmrsFilter for more details)
00:23:36 <jmiranda> 1. Request comes in from browser
00:23:46 <jmiranda> 2. OpenmrsFilter handles request
00:23:52 <jmiranda> 3. Checks for UserContext in session
00:24:13 <jmiranda> 4. UserContext does not exist for this user
00:24:31 <jmiranda> 5. Create new UserContext and add it to session
00:24:49 <jmiranda> 6. Context.setUserContext()
00:25:38 <jmiranda> 7. OpenmrsFilter delegates request to main servlet
00:26:05 <jmiranda> 8. Servlet handles request (in our case it delegates to a Controller which will call the appropriate service)
00:26:25 <jmiranda> 9. OpenmrsFilter catches the request/response on the way out
00:27:05 <jmiranda> 10. OpenmrsFilter calls Context.clearUserContext() so we don't leave the user on the thread that just processed this request
00:27:31 <jmiranda> huntp, does that make sense?
00:28:51 <huntp> yes, it does .... so ... the setUserContext() method has an argument of type "UserContext" .... do i need to do a getUserContext() first, and then pass the result of that to setUserContext() ??
00:30:35 <jmiranda> you need to create a new UserContext yourself
00:31:00 <jmiranda> (on the first request from a user)
00:32:52 <jmiranda> a call to Context.authenticate() will populate the UserContext object
00:33:28 <jmiranda> so you'll need to handle whether the user is logged into your app
00:33:42 <jmiranda> if not, then you forward them to login screen
00:34:03 <jmiranda> (and because you've set up the before/after filter)
00:34:24 <jmiranda> the Context.UserContext variable should be populated with the object in that user's session
00:34:55 <jmiranda> the user then posts their username/password which you handle with a login controller
00:35:10 <jmiranda> call Context.authenticate(username, password)
00:35:57 <jmiranda> and that UserContext object in Context now contains the current user
00:38:08 <jmiranda> at the end of each request (in onrequestend.cfm) you might need to repopulate the session with the object returned by Context.getUserContext()
00:39:07 <jmiranda> (do that before you call Context.clearUserContext())
00:39:35 <huntp> ok, this is all really helping me ... just flicking between windows atm - trying to get this going ...
00:39:56 * r0bby actually provides access to the userservice :)
00:40:04 <r0bby> in the groovyforms module :)
00:42:59 <jmiranda> huntp, cool
00:43:45 <jmiranda> and when r0bby is done with groovyforms you should look into cf-groovy integration
00:44:08 <jmiranda> or hopefully we'll have a web services framework available not long after that
00:44:17 <r0bby> jmiranda: njero(sp?) wants to clone it
00:44:27 <r0bby> I've offered my assistance
00:44:32 <r0bby> I still need to blog
00:45:00 <jmiranda> r0bby, clone it as in port it to ruby?
00:45:08 <r0bby> I spent the evening scrubbing a bathroom (no joke; brother got a new house and the whole family (his inlaws and all)
00:45:12 <r0bby> yup
00:45:28 <jmiranda> r0bby, that sounds ... fun-ish
00:45:42 <r0bby> jmiranda: oh yeh
00:45:49 <r0bby> so fun
00:46:10 <jmiranda> huntp, keep working on that and i'll check in tomorrow
00:46:19 <r0bby> his toilet doesn't flush you have to stick your hand in the tank and pull the stopper up manually
00:46:23 <jmiranda> r0bby, keep on ... keeping on
00:46:30 <r0bby> yeh
00:46:34 <r0bby> this weekend is gonna be... fun
00:46:50 <r0bby> between wqorking nights coding and helping him move in
00:47:12 <jmiranda> r0bby, have some real fun
00:47:34 <r0bby> damn it i missed the call *AGAIN*
00:47:36 <r0bby> oh wait no id idnt
00:47:43 <jmiranda> what call?
00:47:47 <r0bby> dev call :p
00:47:53 * r0bby wants to listen in
00:47:57 <r0bby> I missed Tor's presentation
00:48:06 <r0bby> I find his project extremely interesting
00:48:37 <jmiranda> oh you mean from last week
00:48:53 <r0bby> yes
00:49:06 <r0bby> this week if i can drag myself out of bed i'll jump in
00:49:41 <jmiranda> r0bby, jump on tomorrow ... if you need to be hosted just skype me and i'll add you to my "conference call" into the indiana conference call number
00:50:25 <r0bby> same code
00:50:32 <r0bby> as last time?
00:50:37 <r0bby> I'm not gonna talk just listen in
00:50:45 <jmiranda> yes, same number same code
00:51:03 <r0bby> okies
00:51:23 <jmiranda> and yeah, it's usually a listening affair
00:51:25 * r0bby growls
00:51:48 <jmiranda> but don't worry about asking questions
00:51:49 <r0bby> I'm all for groovy's dynamic typing and all -- but sometimes it's annoying
00:52:05 <r0bby> can I act like a misfit?
00:52:10 <r0bby> Like i do on IRC!?!?!
00:52:26 <jmiranda> like danzig?
00:53:06 <r0bby> ?
00:53:07 * jmiranda prays that someone knows what he's talking about
00:53:12 <r0bby> I don't :<
00:53:19 <r0bby> I've only been active since soc :P
00:53:28 <r0bby> and paul/burke pushed for mew to apply for soc
00:53:31 <r0bby> im glad i did
00:53:36 <jmiranda> the misfits were a punk band from the 80's
00:53:57 <jmiranda> who are, unfortunately, probably still around ... sans their lead singer, danzig
00:54:05 <r0bby> I've learned to have a deep deep appreciation for the Grails team
00:54:11 <jmiranda> :_
00:54:13 <jmiranda> :)
00:54:17 <jmiranda> alright, well i'm off
00:54:23 <jmiranda> have a great night/day everyone
00:54:26 <r0bby> yeh yeh
00:54:31 <jmiranda> hugs
00:54:32 <r0bby> I have a bit of work i wanna get done
00:54:44 <r0bby> get my cleaned up servlet code in working shape
01:12:01 *** upul has quit IRC
01:19:01 *** upul has joined #openmrs
01:50:51 *** yanokwa has joined #openmrs
01:50:52 *** ChanServ sets mode: +v yanokwa
01:51:02 <yanokwa> of course r0bby would be here.
01:51:06 <yanokwa> dont you have a life!?
02:05:25 <r0bby> yanokwa: I idle
02:05:32 <r0bby> and no :P
02:05:36 <r0bby> mmm
02:05:56 <r0bby> elvis operator++
02:05:56 <r0bby> ${value ?: "foo"} :D
02:07:37 *** njero has joined #openmrs
02:07:43 *** ChanServ sets mode: +v njero
02:13:18 *** yanokwa has quit IRC
02:17:34 *** [mharrison] has quit IRC
02:17:34 *** huntp has quit IRC
02:17:34 *** Phantal- has quit IRC
02:17:49 *** Phantal- has joined #openmrs
02:18:11 *** [mharrison] has joined #openmrs
02:18:11 *** huntp has joined #openmrs
02:18:33 *** [mharrison] has quit IRC
02:18:52 *** [mharrison] has joined #openmrs
02:27:00 *** yanokwa has joined #openmrs
02:27:00 *** ChanServ sets mode: +v yanokwa
02:27:06 *** yanokwa has quit IRC
03:17:07 *** sioraiocht has quit IRC
03:31:20 *** jmiranda_ has joined #openmrs
03:31:21 *** jmiranda has quit IRC
06:17:22 *** _jmiranda_ has joined #openmrs
06:22:13 *** upul has quit IRC
06:35:18 *** jmiranda_ has quit IRC
06:50:37 *** bwolfe has joined #openmrs
06:50:37 *** ChanServ sets mode: +o bwolfe
06:55:35 *** huntp has quit IRC
06:57:36 *** huntp has joined #openmrs
07:01:23 *** bmckown has joined #openmrs
07:01:23 *** ChanServ sets mode: +o bmckown
08:06:46 * njero does lots with prescriptions and drugs... goes crazy
08:43:18 *** jbrown has joined #openmrs
09:00:08 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Tickets: Ticket #937 (task created): Upgrade RestrictByRole Module to 1.3 <>
09:12:15 *** bwolfe_ has joined #openmrs
09:12:15 *** ChanServ sets mode: +o bwolfe_
09:12:26 *** bmckown has quit IRC
09:12:27 *** bmckown_ has joined #openmrs
09:12:38 * r0bby just woke up
09:13:30 <bmckown_> good morning r0bby
09:13:54 *** bmckown_ is now known as bmckown
09:14:05 *** ChanServ sets mode: +o bmckown
09:14:14 <r0bby> wait wait another rob
09:14:15 *** bwolfe has quit IRC
09:14:21 <r0bby> im confused
09:17:36 <r0bby> i wake up to hear intern reports
09:17:48 <r0bby> and nobody shows
09:23:31 *** njero has left #openmrs
09:24:00 *** sgrannis has joined #openmrs
09:25:47 *** atomicturtle has quit IRC
09:30:14 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Forum: Re: Problem with RemoteFormEntry Module Implementation <> || OpenMRS Forum: Re: Problem with RemoteFormEntry Module Implementation <> || OpenMRS Forum: Re: Problem with RemoteFormEntry Module Implementation <> || OpenMRS Forum: Re: Problem with RemoteFormEntry Module Implementation <>
09:33:02 *** nribeka has joined #openmrs
09:48:08 *** _jmiranda_ is now known as jmiranda
09:48:17 *** ChanServ sets mode: +o jmiranda
09:49:42 *** upul has joined #openmrs
09:51:18 *** sgrannis_ has joined #openmrs
09:51:39 *** sgrannis_ has quit IRC
10:00:29 *** sgrannis has quit IRC
10:02:20 *** atomicturtle has joined #openmrs
10:08:45 *** TorLye_ has joined #openmrs
10:09:07 <r0bby> i woke up this week \o/
10:09:56 *** pombreda has quit IRC
10:17:37 *** upul has quit IRC
10:27:03 *** TorLye has quit IRC
10:32:23 <r0bby> feh
10:57:20 <nribeka> woke up really late :(
11:01:15 <jmiranda> nribeka, it doesn't help when you go to bed at 2am :)
11:02:07 <nribeka> jmiranda, true :(
11:04:32 *** upul has joined #openmrs
11:16:19 *** pombreda has joined #openmrs
11:16:19 *** ChanServ sets mode: +v pombreda
11:17:34 *** upul has quit IRC
11:18:42 *** sprasanna has joined #openmrs
11:20:24 <r0bby> jmiranda: wuss
11:20:28 <r0bby> I went to bed @ 430
11:20:34 <r0bby> and came onto the call groggy
11:20:49 *** bmckown has quit IRC
11:21:00 *** bwolfe_ has quit IRC
11:21:00 <r0bby> meh
11:21:07 <r0bby> you wuss! :)
11:21:15 <jmiranda> r0bby, wow
11:21:41 <r0bby> that's the way the cookie crumbles
11:21:51 <r0bby> and the way I kill chickens too
11:21:59 *** bmckown has joined #openmrs
11:21:59 *** ChanServ sets mode: +o bmckown
11:22:04 <r0bby> hey bmckown
11:22:08 <r0bby> welcome to crazy-ville
11:22:11 <r0bby> I'm the mayor
11:22:13 <r0bby> :>
11:22:19 * r0bby runs around
11:23:27 *** bwolfe_ has joined #openmrs
11:23:27 *** ChanServ sets mode: +o bwolfe_
11:23:46 <r0bby> bwolfe_: o/
11:24:25 <jmiranda> huntp, any luck?
11:25:06 * r0bby throws his shoe at huntp
11:25:07 <r0bby> wake up
11:25:18 <r0bby> and gimme my shoe back please?
11:26:20 <r0bby> am I the only student w/ a mentor who's AWOL 90% of the time?
11:26:36 <r0bby> (w/ openmrs)
11:27:29 *** pombreda has quit IRC
11:32:50 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Tickets: Ticket #938 (defect created): Cannot add new person in person relationship search widget. <>
12:08:59 <r0bby> bwolfe_: ping
12:09:07 <r0bby> this is a JSP question more than a groovy
12:09:20 <r0bby> did you see my email I wrote?
12:14:38 *** jbrown has left #openmrs
12:17:58 <r0bby>
12:17:59 <OpenMRSBot> <> (at
12:18:02 * r0bby can't contain himself
12:28:29 *** sprasanna has quit IRC
12:29:18 *** sprasanna has joined #openmrs
12:29:41 *** sprasanna has left #openmrs
12:47:38 <bwolfe_> r0bby: why are you setting $concept to $name ? that probably is doing a $concept.toString(). why not just do <openmrs_tag:conceptAnswerField formFIeldName=\"$name\" concept=$concept /> ?
12:48:34 <r0bby> bwolfe_: because then toString() gets called.
12:48:43 <r0bby> this a String
12:48:54 <r0bby> $concept is parsed out.
12:49:03 <r0bby> I got it
12:49:11 <r0bby> this accomplishes what I want :)
12:49:39 <r0bby> this actually the only place aside from the dateField
12:49:53 <r0bby> that relies on an instance other than an int or String
12:50:05 <r0bby> Integer rather (need to be specific)
12:50:35 <r0bby> bwolfe_: and no $name is passed in as the variable's name
12:50:49 <r0bby> i store a lot of metadata
12:51:15 <r0bby> well ~3 or 4 pieces
12:52:12 <bwolfe_> r0bby: odd. ConceptAnswerFieldTag takes in a concept _object_ in the concept argument...not a string. is that working for you ?
12:52:31 <r0bby> no
12:52:38 <r0bby> i'm trying to figure out how to best do it
12:53:00 <r0bby> this is a problem i've been facing for weeks and it's a showstopper
12:53:09 <r0bby> I need to return the template
12:53:34 <r0bby> and Concept is an object :P
12:53:40 <r0bby> you wanna see where I pass it all in
12:53:42 <r0bby> hold
12:54:46 <r0bby>
12:55:27 * r0bby checks
12:56:13 <bwolfe_> r0bby: why are you passing around why not just pass around c ?
12:56:38 <r0bby> because hrm
12:56:50 <r0bby> this is what burke gets for being awol i have no f'en clue what im doing
12:57:03 <bwolfe_> burke is not the only one you can ask
12:57:11 <r0bby> im passing the VARIABLES name
12:57:14 <r0bby> pay closer attention
12:57:16 <r0bby>
12:57:20 <r0bby> m being the field.
12:57:22 <bwolfe_> there are a lot of people in here...there are a lot of people on the dev list. you just need to parse out your question from the groovyforms stuff and ask just that :-)
12:57:53 <r0bby> I'm passing the variable's name
12:58:10 <bwolfe_> ah, I see
12:58:26 <bwolfe_> so you are passing the concept to the conceptAnswerSelector
12:58:29 <r0bby> I have a container class i created for this very reasion
12:58:30 *** bwolfe_ is now known as bwolfe
12:58:32 <r0bby> yup
12:58:39 <r0bby> that's the problem i'm hitting
12:58:55 <r0bby> how do I best do this in a way that it retains the reference after i display ti
12:59:01 <bwolfe> so <jsp:setPropertyname=\"$name\"property=\"$concept\"/> is not needed in
12:59:02 <r0bby> and pass it back
12:59:02 <OpenMRSBot> <> (at
12:59:10 <bwolfe> just do <openmrs_tag:conceptAnswerField formFIeldName=\"$name\" concept=$name/>
12:59:17 <bwolfe> and change $name to $concept
12:59:24 *** pombreda has joined #openmrs
12:59:30 *** ChanServ sets mode: +v pombreda
12:59:31 <bwolfe> and fix the formFIeldName to have the right case
13:00:06 <r0bby> and as far as the abstract class; it's needed to be able to do groovy magic :)
13:00:31 <r0bby> thanks for helpin ben :)
13:01:17 <r0bby> what i was thinking of doing was querying the model to get the value?
13:01:34 <r0bby> but we still face the same problem
13:01:37 <r0bby> how do we do that
13:01:48 <r0bby> hence <jsp:useBean>
13:02:52 <r0bby> do you have a better solution?
13:03:13 <r0bby> we're actually VERY close to finishing
13:03:32 * r0bby grrr
13:04:44 <bwolfe> where do you need the value ?
13:05:17 <r0bby> conceptAnswerField
13:05:18 <bwolfe> oh
13:05:19 <bwolfe> I see
13:05:39 <bwolfe> you're not in jsp there, you're in groovy returning a string that will be jsp
13:05:47 <bwolfe> there is another tag that will help you
13:05:52 <bwolfe> <openmrs:concept or something
13:05:58 <r0bby> oh?
13:06:32 <r0bby> so just get the concept id?
13:06:34 <bwolfe> use <openmrs:conceptconceptId="${concept.conceptId}"var="myConcept"/> instead of the jsp:useBean thing
13:06:59 <r0bby> okay we still face the problem...
13:07:05 <bwolfe> then at line 16 use ${myConcept} to pass to openmrs_tag:cocneptAnswerField
13:07:41 <r0bby> problem still exists
13:07:51 <r0bby> but since i use one instance of the generation class
13:08:17 <r0bby> i *COULD* store it as a field
13:08:57 <r0bby> OH
13:09:02 <r0bby> that gets the concept id!!!!
13:09:06 <r0bby> right?>
13:09:30 <r0bby> the concept by concept id?
13:14:40 <r0bby> !bwolfe++
13:15:39 <bwolfe> r0bby: yes, that gets the concept by conceptId in jsp...and stores it (in jsp) in the myConcept variable
13:15:50 <bwolfe> r0bby: :-(
13:16:03 <bwolfe> why does !bwolfe get karma and I don't? ;-)
13:16:09 <bwolfe> !karma
13:16:09 <OpenMRSBot> bwolfe: Highest karma: "bwolfe" (18), "burke" (12), and "groovy" (9). Lowest karma: "r0bby" (-6), "scriptlets" (-1), and "--- ping statistics -" (-1). You (bwolfe) are ranked 1 out of 61.
13:16:21 <bwolfe> !karma !bwolfe
13:16:22 <OpenMRSBot> bwolfe: !bwolfe has neutral karma.
13:16:33 <r0bby> bwolfe++
13:16:33 <r0bby> bwolfe++
13:16:34 <r0bby> bwolfe++
13:16:34 <r0bby> bwolfe++
13:16:35 <r0bby> bwolfe++
13:16:35 <bwolfe> !karma bwolfe
13:16:35 <r0bby> bwolfe++
13:16:35 <OpenMRSBot> bwolfe: Karma for "bwolfe" has been increased 35 times and decreased 12 times for a total karma of 23.
13:16:36 <r0bby> bwolfe++
13:16:37 <r0bby> bwolfe++
13:16:38 <r0bby> bwolfe++
13:16:41 <r0bby> bwolfe++
13:16:43 <r0bby> bwolfe++
13:16:46 <bwolfe> calm yourself...I'm karma diabetic :-p
13:16:46 <r0bby> bwolfe++
13:16:48 <r0bby> done.
13:16:55 <bwolfe> heh, thanks
13:19:18 <r0bby> bwolfe: I'll let groovy parse it out and store it as an int
13:19:20 <r0bby> :X
13:19:38 <bwolfe> parse what where?
13:21:52 <r0bby>
13:22:31 <r0bby> groovy++
13:22:32 <r0bby> groovy++
13:22:32 <r0bby> groovy++
13:22:32 <r0bby> groovy++
13:22:33 <r0bby> groovy++
13:22:35 <r0bby> groovy++
13:22:38 <r0bby> groovy++
13:22:40 <r0bby> groovy++
13:22:43 <r0bby> groovy++
13:22:45 <r0bby> groovy++
13:22:48 <r0bby> groovy++
13:22:50 <r0bby> groovy++
13:22:53 <r0bby> groovy++
13:22:55 <r0bby> groovy++
13:23:05 <r0bby> groovy++
13:23:12 <r0bby> groovy++
13:23:19 <r0bby> groovy++
13:23:20 <r0bby> !karma groovy
13:23:20 <r0bby> !karma
13:23:20 <OpenMRSBot> r0bby: Karma for "groovy" has been increased 29 times and decreased 3 times for a total karma of 26.
13:23:21 <OpenMRSBot> r0bby: Highest karma: "bwolfe" (30), "groovy" (26), and "burke" (12). Lowest karma: "r0bby" (-6), "scriptlets" (-1), and "--- ping statistics -" (-1). You (r0bby) are ranked 61 out of 61.
13:23:22 <r0bby> bwolfe: I parse it as a GString (which is what the $name is called.
13:23:39 <r0bby> hold on one moment
13:23:45 <r0bby> groovy++
13:23:47 <r0bby> groovy++
13:23:48 <r0bby> groovy++
13:23:49 <r0bby> groovy++
13:23:50 <r0bby> groovy++
13:23:53 <r0bby> !karma groovy
13:23:53 <OpenMRSBot> r0bby: Karma for "groovy" has been increased 34 times and decreased 3 times for a total karma of 31.
13:23:58 <r0bby> !karma
13:23:58 <OpenMRSBot> r0bby: Highest karma: "groovy" (31), "bwolfe" (30), and "burke" (12). Lowest karma: "r0bby" (-6), "scriptlets" (-1), and "--- ping statistics -" (-1). You (r0bby) are ranked 61 out of 61.
13:24:00 <bwolfe> whats the silence command ?
13:24:08 <r0bby> now it's good
13:24:10 <r0bby> im done :)
13:24:11 <bwolfe> or maybe just kick
13:24:12 <r0bby> sorry
13:24:15 <bwolfe> either would do here
13:24:17 <bwolfe> :-p
13:24:24 <r0bby> all is right in the world
13:24:26 <bwolfe> !silence r0bby
13:24:26 <OpenMRSBot> bwolfe: Error: "silence" is not a valid command.
13:24:29 <bwolfe> bummer
13:25:32 <bwolfe> r0bby: yeah, that jsp looks right
13:25:43 <bwolfe> r0bby: you may or may not need quotes around $myConcept
13:25:49 <bwolfe> ${myConcept}
13:26:03 <r0bby> i added that
13:26:27 <r0bby> burke and I need to figure out just how it's gonna work generation-wise
13:26:48 <r0bby> generate once or do it dynamically
13:26:58 <r0bby> for the first pass, i'll do it once
13:27:09 <r0bby> I hate being this far behind
13:27:59 <r0bby> I lovew how IDEA is seeing the copyright header as an unused import
13:28:12 <r0bby> IDEA has the best groovy support right now
13:28:19 <r0bby> the rest are too young
13:28:38 <r0bby> ben, sorry for not pinging you earlier on this :/
13:28:46 * r0bby has MAJOR adhd
13:28:59 <bwolfe> r0bby: now you know. :-)
13:29:37 <r0bby> is there something similar for date
13:29:50 <r0bby> groovy will do .toString
13:29:53 <r0bby> ()
13:30:32 <r0bby> wait fieldgen
13:32:13 <r0bby> meh wait, this is slightly different
13:32:48 * r0bby thinks he'll use the jquery date picker
13:32:52 <bwolfe> there isn't an openmrs taglib for date
13:32:56 <r0bby> and ditch the jsp
13:33:03 <r0bby> dateField
13:33:14 <bwolfe> there is a date picker that will take a mm/dd/yyyy string
13:33:44 * r0bby goes to sighs
13:33:47 <r0bby> er
13:34:57 <r0bby> OMG Estelle getty died :<<<<
13:35:24 <bwolfe> should we know who that is ?
13:37:03 <r0bby> Golden Girls
13:37:10 * r0bby ducks
13:38:21 <r0bby> hrm I may use a DWR util method
13:38:35 <r0bby> meh i can't
13:39:07 <r0bby> can't unless I store it statically..bad idea
13:39:41 <r0bby> somebody needs to upgrade DWR
13:39:41 <bwolfe> isn't dwrutil all in javascript ?
13:39:52 <r0bby> bwolfe: I need to remote.
13:40:04 <r0bby> hence why i'm using DWR
13:40:50 <r0bby> I want to go from JS to a Java Date object
13:41:11 *** TorLye_ has quit IRC
13:41:28 <r0bby> although, technically, i can
13:48:26 <r0bby> oh god
13:48:36 <r0bby> you shoulda seen me at my cousin's wedding :X
13:48:41 <r0bby> I saw the video -- it's bad
13:48:47 <r0bby> I'm never gonna live that thing down
13:48:51 <r0bby> NEVER
13:49:06 <r0bby> I had my cousin's friends one on each side of me :)
13:53:03 <bwolfe> r0bby: what was bad? too much alcohol? too much dancing? too much of both ?
13:54:36 <r0bby> not so much of too much
13:54:37 <r0bby> but how
13:55:02 * r0bby is in the WHOLE video
13:55:40 * r0bby hates the learning part of soc :(
13:56:28 <r0bby> jesus you guys made it possible to change the ENTIRE system via a module
13:57:46 <bwolfe> r0bby: that was the idea
13:57:59 <r0bby> it's amazing
13:58:14 <r0bby> I'm thinking of doing that for the management screen
13:58:39 <r0bby> adding an extension point or maybe a portlet to throw the data there to edit it
13:58:49 <r0bby> basically throw the createForm there
13:58:54 <r0bby> not sure :/
13:59:58 <r0bby> addressLayout is funny
14:00:03 <r0bby> it's a tour de france
14:00:38 * r0bby sighs
14:00:41 * r0bby goes to get coffee
14:00:47 <r0bby> i'm tired
14:01:02 *** bmckown_ has joined #openmrs
14:01:15 *** bmckown has quit IRC
14:13:05 <r0bby> bwolfe: if you ever decide to look at groovy; groovyConsole is the seriously invaluable for rapidly prototyping code
14:13:24 <bwolfe> good to know
14:13:24 <r0bby> it's a small swing app
14:13:36 <r0bby> def d = new Date() //today
14:13:42 <r0bby> def tomorrow = d + 1; date yesterday = d - 1
14:13:57 <r0bby> s/data/def/
14:14:11 <r0bby> def tomorrow = d + 1; def yesterday = d - 1
14:14:19 <r0bby> one of the things that's amazing about groovy :)
14:14:55 <r0bby> I have a book decided to JUST neat tricks, as well as telling you about some gotchas that may nip you
14:19:17 <r0bby> bwolfe who made this presentation?
14:19:37 <bwolfe> r0bby: which one ?
14:19:58 <r0bby>
14:21:11 <bwolfe> me
14:21:31 <bwolfe> why ?
14:22:08 <bwolfe> anything I should add to it ?
14:22:20 <r0bby> nah
14:22:23 <r0bby> most of it i know
14:22:49 <r0bby> I better
14:23:15 <nribeka> no sgrannis around ...
14:27:25 <bwolfe> r0bby: I want to do a video walkthrough of the datamodel, a basic add-a-page-to-openmrs-via-a-module one, and a then an advanced one off of that
14:27:32 <bwolfe> r0bby: can you think of any others that would be good ?
14:27:45 <bwolfe> nribeka: he's around today...just not on irc
14:27:57 <bwolfe> nribeka: and I think james is on vacation
14:28:46 <nribeka> yeps bwolfe
14:29:03 <nribeka> sgrannis put a file in iupui slashtemp
14:29:10 <nribeka> but i can't access it ... :(
14:29:36 <r0bby> bwolfe: how to add portlets
14:29:41 <r0bby> explain what a portlet is etc
14:29:54 <r0bby> how to create an extension point from a module etc
14:29:57 <r0bby> but that's simple
14:30:03 <r0bby> I learned mostly by reading
14:30:11 * r0bby is obsessive compulsive
14:30:57 <bwolfe> r0bby: "how to add a portlet"...hmm, I'll have to relearn that one then make a video. :-p
14:32:00 * r0bby sighs
14:32:48 <r0bby> I think I'm gonna grab the Date, then use Calendar
14:33:07 * r0bby makes a dateutil class
14:33:09 <r0bby> :x
14:33:15 <r0bby> java is stupid
14:33:31 <r0bby> in the sense that 0 = January, 1 = Feb, etc etc
14:33:36 <bwolfe> Context.getLocale()
14:33:43 <bwolfe> and Context.getDateFormat() is what you want
14:33:56 <bwolfe> Context.getDateFormat().format(myDateObject);
14:33:59 <bwolfe> ish
14:34:02 <bwolfe> I can't remember exactly
14:35:06 <r0bby> locale is wrong
14:35:37 <r0bby> im I love openmrs
14:36:04 <r0bby> I think i'm gonna turn down that job i interviewed for :/
14:36:09 <r0bby> I haven't a shot in hell anyways
14:36:16 <huntp> jmiranda - I've cracked it!
14:36:22 <r0bby> huntp: you suck
14:36:30 * r0bby must kill huntp's self confidence
14:36:39 <r0bby> I feel like shit, and misery loves company
14:36:54 <r0bby> huntp: welcome to the community, you will be initiated!
14:37:26 <r0bby> go through a hazing ritual, first, get me a squirrell, a rabbit, a chipmunk, and fish.
14:37:39 * huntp thinks r0bby is the cheeky one! :)
14:37:53 <r0bby> if by cheeky, you mean crazy, yes
14:40:26 <r0bby> Calendar c = new GregorianCalendar(); -> Calendar c = Calendar.getInstance();
14:40:41 <r0bby> PersonFormControler line 220
14:41:19 <jmiranda> huntp, so it works?
14:41:55 <r0bby> raise your hand if you think i'm crazy
14:42:56 <bwolfe> r0bby: Context.getDateFormat didn't work for you ?
14:43:11 <bwolfe> r0bby: how can you turn it down if you don't know if they have accepted you or not ?!
14:44:24 <r0bby> no it will
14:44:26 <r0bby> haven't tried it
14:44:37 <r0bby> yet
14:44:43 <r0bby> I've been looking at useages
14:44:59 <r0bby> to understand it
14:45:50 <r0bby> sweeeeeeeeeeet
14:46:05 <r0bby> I can add jars to the classpath of the groovyConsole while its running
14:46:22 * r0bby can script for it !!!!!
14:46:36 <r0bby> What's Mine say?!!!
14:47:00 <r0bby> name the movie :)
14:48:10 <bwolfe> Dumb and Dumberer
14:48:24 <bwolfe> I don't remember the other shirt though
14:48:29 <r0bby> Dude where's my car
14:48:37 <bwolfe> eh, same thing :-p
14:48:42 <r0bby> no...
14:48:46 <r0bby> totally diff movie :P
14:48:49 <huntp> jmiranda - yep, it seems to be working .... i'll paste you a snippet, and you can see if it makes sense?
14:48:53 <r0bby> but it wqas bad
14:49:04 <r0bby> I think openmrs has the most insane devs
14:49:08 <jmiranda> awesome
14:53:14 <huntp> I have global application-wide variable, which gets created once per application ... application.openmrs.obj.context = createobject("java", "org.openmrs.api.context.Context");
14:53:14 <huntp> I then run -> application.openmrs.obj.context.startup() ... to start the OpenMRS API .... again, only once per app.
14:53:14 <huntp> I check for a ColdFusion session variable -> session.MyUserContext ... if this doesnt exist, i create one by:
14:53:15 <huntp> application.openmrs.obj.context.authenticate(url.username,url.passwd);
14:53:15 <huntp> session.MyUserContext = application.openmrs.obj.context.getUserContext();
14:53:17 <huntp> then, in every call to the OpenMRS API -> I set the UserContext ... application.openmrs.obj.context.setUserContext(session.MyUserContext);
14:53:20 <huntp> and, at the end of every call -> I clear the UserContext ... application.openmrs.obj.context.clearUserContext();
14:54:34 <huntp> also ... in addition to all of that - I prefix all calls to the API with:
14:54:35 <huntp> openmrs.context.openSession();
14:54:35 <huntp> openmrs.context.clearSession();
14:55:19 <huntp> and ... at the end of each call to the API i do this:
14:55:19 <huntp> openmrs.context.clearSession();
14:55:19 <huntp> openmrs.context.closeSession();
14:55:38 <huntp> apologies for the HUGE coredump ... :)
14:55:51 <jmiranda> all good
14:56:15 <jmiranda> huntp, so you're actually able to access the app as a different (non-admin) user?
14:56:19 <r0bby> huntp: amazing job :)
14:56:48 <r0bby> I wonder if I could retrofit the groovyforms module to be used outside of the webapp itself :X
14:56:52 <huntp> jmiranda, yes - correct ... in multiple concurrent user sessions
14:57:02 <r0bby> probably not
14:57:03 <huntp> on different pc's / browsers
14:57:08 <r0bby> actually yes I could
14:57:23 <r0bby> interrogate the model for each field, then create some extra methods and do whatever :)
14:57:34 <jmiranda> huntp, awesome
14:57:36 <r0bby> bwolfe: ^
14:57:40 <r0bby> :)
14:58:06 <huntp> so - you don't see any obvious problems with all of that ... does it seem sensible?
14:58:40 <jmiranda> yeah
14:58:52 <jmiranda> i wouldn't call it sensible ... but it's the way we're doing it
14:58:54 <jmiranda> :)
14:59:34 <jmiranda> i would rather see an external app talking over an exposed web server interface
14:59:41 <jmiranda> but we don't have that
14:59:52 <jmiranda> and your solution is intrinsically more secure
15:00:22 <r0bby> jmiranda: you know you can write a Web Service easy in groovy =)
15:00:23 <jmiranda> since it's essentially going talking to openmrs over a local interface
15:00:25 * r0bby flexes
15:00:49 <jmiranda> r0bby, i can't wait to see that module and all of it's wonderful features
15:00:58 <r0bby>
15:01:00 <OpenMRSBot> <> (at
15:01:27 <r0bby> right now it's all a pipe dream
15:02:28 <r0bby> :)
15:02:40 * r0bby giggles
15:03:36 <r0bby> jmiranda: you're into web services and such -- you'd appreciate it :)
15:03:42 <r0bby> or at least kevin would
15:05:09 *** jmiranda_ has joined #openmrs
15:06:05 *** jmiranda has quit IRC
15:25:36 *** TorLye has joined #openmrs
15:52:35 *** TorLye has quit IRC
16:07:16 *** pearlbear has joined #openmrs
16:07:16 *** ChanServ sets mode: +v pearlbear
16:13:02 *** huntp_ has joined #openmrs
16:15:23 *** huntp has quit IRC
16:24:25 *** jmiranda_ has quit IRC
16:26:42 <r0bby> okay we have a JSP now :)
16:26:55 <r0bby> all the generation stuff is complete
16:27:02 <r0bby> now 1) validation 2) rendering
16:27:07 <r0bby> and then we're good
16:27:27 <r0bby> Like i said on the conf call though, testing the generation code is next to impossible
16:36:02 *** atomicturtle has left #openmrs
16:39:24 *** nribeka is now known as nribeka-away
16:56:58 *** bwolfe has quit IRC
17:31:50 *** bwolfe has joined #openmrs
17:31:50 *** ChanServ sets mode: +o bwolfe
17:43:31 *** njero has joined #openmrs
17:43:31 *** ChanServ sets mode: +v njero
18:06:20 <r0bby> bwolfe: have you ever used httpunit?
18:06:31 *** bmckown_ has quit IRC
18:07:05 <r0bby> im gonna go shower and take a break
18:07:10 <r0bby> before I break this computer
18:09:00 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Tickets: Ticket #938 (defect closed): Cannot add new person in person relationship search widget. <>
18:21:21 <bwolfe> r0bby: no, but it would be nice to try it out for the web tests
18:21:39 *** bwolfe has quit IRC
18:24:24 *** bwolfe has joined #openmrs
18:24:24 *** ChanServ sets mode: +o bwolfe
18:31:58 *** njero has quit IRC
18:42:01 <r0bby> I hate it.
18:42:14 <r0bby> im gonna move my server side handling to a controller
18:44:42 <bwolfe> r0bby: you hate httpunit ?
19:27:05 *** pombreda has quit IRC
20:06:25 *** sioraiocht has joined #openmrs
20:26:58 *** pearlbear has quit IRC
20:59:13 <r0bby> bwolfe: it was a headache for me.
21:10:41 <r0bby> kickass
21:20:19 *** sioraiocht has quit IRC
21:20:31 *** sioraiocht has joined #openmrs
21:25:42 *** upul has joined #openmrs
21:34:38 *** sgrannis has joined #openmrs
21:34:54 *** ChanServ sets mode: +v sgrannis
21:54:38 *** bwolfe has quit IRC
23:10:14 *** huntp_ has quit IRC
23:19:39 *** sgrannis has quit IRC
23:39:08 *** huntp has joined #openmrs
23:51:39 *** njero has joined #openmrs
23:51:39 *** ChanServ sets mode: +v njero
  • No labels