To make it more clear, we don't use Freemarker to show something on a page but to send something to a map renderer system
Jacques On Thursday, January 02, 2014 3:55 PM jacques.le.r...@les7arts.com wrote > In this case we are no converting data, we want to transfer a Float from a > point to another. > We are using this built-in > http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_c > > Jacques > > On Thursday, January 02, 2014 2:52 PM adrian.c...@sandglass-software.com wrote >> You are not understanding the problem and I don't know how to make it >> any simpler. >> >> Mini-language and screen widgets both utilize the conversion framework >> to convert data types. The conversion framework is thoroughly tested and >> Float <--> String conversions work perfectly. If you are having a >> problem, then it is somewhere else - NOT in Mini-language or screen widgets. >> >> Adrian Crum >> Sandglass Software >> www.sandglass-software.com >> >> On 1/2/2014 8:10 AM, Jacques Le Roux wrote: >>> No, it's not the template. Actually as soon as you pass in >>> SetField.runAction() (for widgets, similar for minilang) and have >>> (for instance) fr as locale in your env, you are screwed: the decimals are >>> lost. That's why I changed things there. >>> >>> Moreover this issue does not appear for points which comes directly from >>> the DB and use the same path to the geoLocation.ftl >>> template but no set field >>> For instance partymgr/control/PartyGeoLocation?partyId=DemoCustomer >>> or facility/control/EditFacilityGeoPoint?facilityId=WebStoreWarehouse >>> >>> Jacques >>> >>> On Thursday, January 02, 2014 1:08 PM adrian.c...@sandglass-software.com >>> wrote >>>> That appears to be a problem in the template. >>>> >>>> Adrian Crum >>>> Sandglass Software >>>> www.sandglass-software.com >>>> >>>> On 1/2/2014 6:40 AM, Jacques Le Roux wrote: >>>>> I'm not quite sure to follow you. For isntance, currently if you change >>>>> type="Float" locale="en"/> >>>>> for >>>>> /> >>>>> in >>>>> <screen name="ExampleGeoLocationPointSet1"> >>>>> >>>>> You get an error in HtmlWidget.StringHtmlWrapperForFtl(): >>>>> freemarker.core.NonNumericalException: point.lon is not a number, it is >>>>> org.ofbiz.widget.screen.HtmlWidget$StringHtmlWrapperForFtl >>>>> >>>>> Jacques >>>>> >>>>> On Thursday, January 02, 2014 12:23 PM adrian.c...@sandglass-software.com >>>>> wrote >>>>>> The String would be converted to a Float. What would be the issue? >>>>>> >>>>>> Adrian Crum >>>>>> Sandglass Software >>>>>> www.sandglass-software.com >>>>>> >>>>>> On 1/2/2014 6:12 AM, Jacques Le Roux wrote: >>>>>>> Though Adrian, >>>>>>> >>>>>>> There is something which makes me wonder. >>>>>>> >>>>>>> Suppose we were not in the geolocation context, and we want to set a >>>>>>> Float value like it's done in >>>>>>> >>>>>>> <screen name="ExampleGeoLocationPointSet1"> >>>>>>> and >>>>>>> <simple-method method-name="editGeoLocation" short-description="Edit >>>>>>> GeoLocation"> >>>>>>> >>>>>>> And we have a floating-point DB field >>>>>>> >>>>>>> Won't we get the same issue? >>>>>>> >>>>>>> Jacques >>>>>>> >>>>>>> >>>>>>> On Thursday, January 02, 2014 8:52 AM jacques.le.r...@les7arts.com wrote >>>>>>>> It's just a temporary hack I hastily commited last night, so as I was >>>>>>>> unsure I preferred to be safe than sorry. >>>>>>>> Good to know that MethodContext is thread safe. >>>>>>>> >>>>>>>> I have still to check but your new data model proposition sounds to me >>>>>>>> at 1st glance. >>>>>>>> >>>>>>>> Note that the current works well, even for i18n, as long as you only >>>>>>>> use a direct relation with data. >>>>>>>> But if you use <set> to save your data in DB then the problem arises.. >>>>>>>> That's why I got this way... >>>>>>>> >>>>>>>> Jacques >>>>>>>> >>>>>>>> On Thursday, January 02, 2014 1:39 AM >>>>>>>> adrian.c...@sandglass-software.com wrote >>>>>>>>> There is no need to synchronize on the <set> element model - it is >>>>>>>>> thread-safe. The MethodContext instance is per-thread, so it doesn't >>>>>>>>> need synchronization either. >>>>>>>>> >>>>>>>>> Please take some time to understand the architecture before committing >>>>>>>>> changes like this. >>>>>>>>> >>>>>>>>> Adrian Crum >>>>>>>>> Sandglass Software >>>>>>>>> www.sandglass-software.com >>>>>>>>> >>>>>>>>> On 1/1/2014 7:15 PM, jler...@apache.org wrote: >>>>>>>>>> Author: jleroux >>>>>>>>>> Date: Thu Jan 2 00:15:38 2014 >>>>>>>>>> New Revision: 1554706 >>>>>>>>>> >>>>>>>>>> URL: http://svn.apache.org/r1554706 >>>>>>>>>> Log: >>>>>>>>>> This is a temporary hack waiting for a better geolocation data >>>>>>>>>> model, related with OFBIZ-5453 >>>>>>>>>> >>>>>>>>>> Modified: >>>>>>>>>> >>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java >>>>>>>>>> >>>>>>>>>> Modified: >>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java >>>>>>>>>> URL: >>>>>>>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1554706&r1=1554705&r2=1554706&view=diff >>>>>>>>>> ============================================================================== >>>>>>>>>> --- >>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java >>>>>>>>>> (original) +++ >>>>>>>>>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java >>>>>>>>>> Thu Jan 2 00:15:38 2014 @@ -144,10 >>>>>>>>>> +144,17 @@ public final class SetOperation >>>>>>>>>> extends Debug.logWarning(exc, "Error evaluating scriptlet >>>>>>>>>> [" + this.scriptlet + "]: " + exc, module); } >>>>>>>>>> } else if (!this.fromFma.isEmpty()) { >>>>>>>>>> + Locale localeTemp = null; // FIXME this is a temporary >>>>>>>>>> hack waiting for a better geolocation data model, >>>>>>>>>> related with OFBIZ-5453 if >>>>>>>>>> (!this.localeFse.isEmpty() && this.type.length() > 0) { >>>>>>>>>> - methodContext.setLocale(new >>>>>>>>>> Locale(this.localeFse.expandString(methodContext.getEnvMap()))); >>>>>>>>>> + localeTemp = methodContext.getLocale(); >>>>>>>>>> + synchronized (this) { >>>>>>>>>> + methodContext.setLocale(new >>>>>>>>>> Locale(this.localeFse.expandString(methodContext.getEnvMap()))); >>>>>>>>>> + newValue = >>>>>>>>>> this.fromFma.get(methodContext.getEnvMap()); >>>>>>>>>> + methodContext.setLocale(localeTemp); >>>>>>>>>> + } >>>>>>>>>> + } else { >>>>>>>>>> + newValue = >>>>>>>>>> this.fromFma.get(methodContext.getEnvMap()); >>>>>>>>>> } >>>>>>>>>> - newValue = this.fromFma.get(methodContext.getEnvMap()); >>>>>>>>>> if (Debug.verboseOn()) >>>>>>>>>> Debug.logVerbose("In screen getting value for >>>>>>>>>> field from [" + this.fromFma.toString() + "]: " + >>>>>>>>>> newValue, module); } else if (!this.valueFse.isEmpty()) >>>>>>>>>> {