On Wed, Feb 1, 2012 at 4:23 PM, Adrian Crum <
[email protected]> wrote:

> Hans,
>
> This looks pretty good, but I have a few questions.
>
> Do we really need EntityUtilProperties.java? It seems to me you could just
> add the three new methods to EntityUtil.java.
>

I don't think just 3 new method. If we need to cover every property's
methods, we also need:

- getPropertyNumber
- getPropertyAsDouble
- propertyValueEquals
- and so on


> In the getSystemPropertyValue method, why are you using findByAnd when the
> SystemProperty entity has a primary key? Also, that lookup could come from
> the cache.


That is my fault. I had thought about the SytemProperty should have 2
primary keys:

- systemResource (pk)
- systemPropertyId (pk)
- systemPropertyValue
- description

Because the <property-to-field/> includes a resource attribute

<property-to-field resource="" property="" field=""/>

I was wondering if it would be nice to add the systemResource field?

Regards,
Chatree Srichart


>
> -Adrian
>
>
>
>  On 2/1/2012 8:24 AM, [email protected] wrote:
>
>> Author: hansbak
>> Date: Wed Feb  1 08:24:36 2012
>> New Revision: 1238998
>>
>> URL: 
>> http://svn.apache.org/viewvc?**rev=1238998&view=rev<http://svn.apache.org/viewvc?rev=1238998&view=rev>
>> Log:
>> some missing files in -r1238993
>>
>> Added:
>>     ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.**xml
>> (with props)
>>     ofbiz/trunk/framework/entity/**script/
>>     ofbiz/trunk/framework/entity/**script/org/
>>     ofbiz/trunk/framework/entity/**script/org/ofbiz/
>>     ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/
>>     ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/
>>     
>> ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/**EntityUtilPropertiesTests.xml
>>   (with props)
>>     
>> ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**EntityUtilProperties.java
>>   (with props)
>>
>> Added: ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.**xml
>> URL: http://svn.apache.org/viewvc/**ofbiz/trunk/framework/common/**
>> data/CommonSystemPropertyData.**xml?rev=1238998&view=auto<http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/data/CommonSystemPropertyData.xml?rev=1238998&view=auto>
>> ==============================**==============================**
>> ==================
>> --- ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.**xml
>> (added)
>> +++ ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.**xml
>> Wed Feb  1 08:24:36 2012
>> @@ -0,0 +1,23 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +    Licensed to the Apache Software Foundation (ASF) under one
>> +    or more contributor license agreements.  See the NOTICE file
>> +    distributed with this work for additional information
>> +    regarding copyright ownership.  The ASF licenses this file
>> +    to you under the Apache License, Version 2.0 (the
>> +    "License"); you may not use this file except in compliance
>> +    with the License.  You may obtain a copy of the License at
>> +
>> +    
>> http://www.apache.org/**licenses/LICENSE-2.0<http://www.apache.org/licenses/LICENSE-2.0>
>> +
>> +    Unless required by applicable law or agreed to in writing,
>> +    software distributed under the License is distributed on an
>> +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> +    KIND, either express or implied.  See the License for the
>> +    specific language governing permissions and limitations
>> +    under the License.
>> +-->
>> +<entity-engine-xml>
>> +<SystemProperty systemPropertyId="currency.**uom.id.default"
>> systemPropertyValue="THB" description="the default currency to use for
>> prices, etc"/>
>> +<SystemProperty systemPropertyId="**defaultFromEmailAddress"
>> systemPropertyValue="propertyt**[email protected]<[email protected]>"
>> description="general default 'fromEmailAddress' can be overridden in:
>> EmailTemplateSetting"/>
>> +</entity-engine-xml>
>>
>> Propchange: ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.
>> **xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:eol-style = native
>>
>> Propchange: ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.
>> **xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:keywords = Date Rev Author URL Id
>>
>> Propchange: ofbiz/trunk/framework/common/**data/CommonSystemPropertyData.
>> **xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:mime-type = text/xml
>>
>> Added: ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/**
>> EntityUtilPropertiesTests.xml
>> URL: http://svn.apache.org/viewvc/**ofbiz/trunk/framework/entity/**
>> script/org/ofbiz/entity/test/**EntityUtilPropertiesTests.xml?**
>> rev=1238998&view=auto<http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/script/org/ofbiz/entity/test/EntityUtilPropertiesTests.xml?rev=1238998&view=auto>
>> ==============================**==============================**
>> ==================
>> --- 
>> ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/**EntityUtilPropertiesTests.xml
>> (added)
>> +++ 
>> ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/**EntityUtilPropertiesTests.xml
>> Wed Feb  1 08:24:36 2012
>> @@ -0,0 +1,45 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +Licensed to the Apache Software Foundation (ASF) under one
>> +or more contributor license agreements.  See the NOTICE file
>> +distributed with this work for additional information
>> +regarding copyright ownership.  The ASF licenses this file
>> +to you under the Apache License, Version 2.0 (the
>> +"License"); you may not use this file except in compliance
>> +with the License.  You may obtain a copy of the License at
>> +
>> +http://www.apache.org/**licenses/LICENSE-2.0<http://www.apache.org/licenses/LICENSE-2.0>
>> +
>> +Unless required by applicable law or agreed to in writing,
>> +software distributed under the License is distributed on an
>> +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> +KIND, either express or implied.  See the License for the
>> +specific language governing permissions and limitations
>> +under the License.
>> +-->
>> +
>> +<simple-methods 
>> xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>> "
>> +        xsi:noNamespaceSchemaLocation=**"http://ofbiz.apache.org/dtds/**
>> simple-methods.xsd <http://ofbiz.apache.org/dtds/simple-methods.xsd>">
>> +
>> +<simple-method method-name="**testGetGeneralProperties"
>> short-description="test getting general properties" login-required="false">
>> +<call-class-method ret-field="**currencyUomIdDefault"
>> method-name="getPropertyValue" class-name="org.ofbiz.entity.**
>> util.EntityUtilProperties">
>> +<string value="general"/>
>> +<string value="currency.uom.id.**default"/>
>> +<field field="delegator" type="org.ofbiz.entity.**Delegator"/>
>> +</call-class-method>
>> +<assert><if-compare field="currencyUomIdDefault" operator="equals"
>> value="THB"></if-compare></**assert>
>> +
>> +<call-class-method ret-field="**defaultFromEmailAddress"
>> method-name="getPropertyValue" class-name="org.ofbiz.entity.**
>> util.EntityUtilProperties">
>> +<string value="general"/>
>> +<string value="**defaultFromEmailAddress"/>
>> +<field field="delegator" type="org.ofbiz.entity.**Delegator"/>
>> +</call-class-method>
>> +<assert><if-compare field="**defaultFromEmailAddress" operator="equals"
>> value="propertytest@example.**com <[email protected]>
>> "></if-compare></assert>
>> +
>> +<property-to-field resource="general" property="currency.uom.id.**default"
>> field="currencyUomIdDefault"/>
>> +<assert><if-compare field="currencyUomIdDefault" operator="equals"
>> value="THB"></if-compare></**assert>
>> +
>> +<property-to-field resource="general" property="**defaultFromEmailAddress"
>> field="**defaultFromEmailAddress"/>
>> +<assert><if-compare field="**defaultFromEmailAddress" operator="equals"
>> value="propertytest@example.**com <[email protected]>
>> "></if-compare></assert>
>> +</simple-method>
>> +</simple-methods>
>>
>> Propchange: ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/*
>> *EntityUtilPropertiesTests.xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:eol-style = native
>>
>> Propchange: ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/*
>> *EntityUtilPropertiesTests.xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:keywords = Date Rev Author URL Id
>>
>> Propchange: ofbiz/trunk/framework/entity/**script/org/ofbiz/entity/test/*
>> *EntityUtilPropertiesTests.xml
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:mime-type = text/xml
>>
>> Added: ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**
>> EntityUtilProperties.java
>> URL: http://svn.apache.org/viewvc/**ofbiz/trunk/framework/entity/**
>> src/org/ofbiz/entity/util/**EntityUtilProperties.java?rev=**
>> 1238998&view=auto<http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityUtilProperties.java?rev=1238998&view=auto>
>> ==============================**==============================**
>> ==================
>> --- 
>> ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**EntityUtilProperties.java
>> (added)
>> +++ 
>> ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**EntityUtilProperties.java
>> Wed Feb  1 08:24:36 2012
>> @@ -0,0 +1,242 @@
>> +/**************************************************************
>> *********************
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements.  See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership.  The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License.  You may obtain a copy of the License at
>> + *
>> + * 
>> http://www.apache.org/**licenses/LICENSE-2.0<http://www.apache.org/licenses/LICENSE-2.0>
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied.  See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + ****************************************************************
>> *******************/
>> +package org.ofbiz.entity.util;
>> +
>> +import java.io.IOException;
>> +import java.io.InputStream;
>> +import java.io.Serializable;
>> +import java.math.BigDecimal;
>> +import java.math.BigInteger;
>> +import java.net.URL;
>> +import java.util.**InvalidPropertiesFormatExcepti**on;
>> +import java.util.List;
>> +import java.util.Locale;
>> +import java.util.Map;
>> +import java.util.Properties;
>> +import java.util.ResourceBundle;
>> +import java.util.Set;
>> +
>> +import org.ofbiz.base.util.Debug;
>> +import org.ofbiz.base.util.UtilMisc;
>> +import org.ofbiz.base.util.**UtilProperties;
>> +import org.ofbiz.base.util.**UtilValidate;
>> +import org.ofbiz.base.util.**collections.**ResourceBundleMapWrapper;
>> +import org.ofbiz.entity.Delegator;
>> +import org.ofbiz.entity.GenericValue;
>> +
>> +@SuppressWarnings("serial")
>> +public class EntityUtilProperties implements Serializable {
>> +
>> +    public final static String module = EntityUtilProperties.class.**
>> getName();
>> +
>> +    protected static String getSystemPropertyValue(String name,
>> Delegator delegator) {
>> +        if (name == null || name.length()<= 0) return "";
>> +
>> +        // find system property
>> +        try {
>> +            List<GenericValue>  systemProperties = delegator.findByAnd("
>> **SystemProperty", UtilMisc.toMap("**systemPropertyId", name));
>> +            if (UtilValidate.isNotEmpty(**systemProperties)) {
>> +                GenericValue systemProperty = EntityUtil.getFirst(**
>> systemProperties);
>> +                String systemPropertyValue = systemProperty.getString("*
>> *systemPropertyValue");
>> +                return systemPropertyValue;
>> +            }
>> +        } catch (Exception e) {
>> +            Debug.logWarning("Could not get a sytem property for " +
>> name + " : " + e.getMessage(), module);
>> +        }
>> +        return null;
>> +    }
>> +
>> +    public static boolean propertyValueEquals(String resource, String
>> name, String compareString) {
>> +        return UtilProperties.**propertyValueEquals(resource, name,
>> compareString);
>> +    }
>> +
>> +    public static boolean propertyValueEqualsIgnoreCase(**String
>> resource, String name, String compareString) {
>> +        return UtilProperties.**propertyValueEqualsIgnoreCase(**resource,
>> name, compareString);
>> +    }
>> +
>> +    public static String getPropertyValue(String resource, String name,
>> String defaultValue) {
>> +        return UtilProperties.**getPropertyValue(resource, name,
>> defaultValue);
>> +    }
>> +
>> +    public static double getPropertyNumber(String resource, String name,
>> double defaultValue) {
>> +        return UtilProperties.**getPropertyNumber(resource, name,
>> defaultValue);
>> +    }
>> +
>> +    public static double getPropertyNumber(String resource, String name)
>> {
>> +        return UtilProperties.**getPropertyNumber(resource, name);
>> +    }
>> +
>> +    public static Boolean getPropertyAsBoolean(String resource, String
>> name, boolean defaultValue) {
>> +        return UtilProperties.**getPropertyAsBoolean(resource, name,
>> defaultValue);
>> +    }
>> +
>> +    public static Integer getPropertyAsInteger(String resource, String
>> name, int defaultNumber) {
>> +        return UtilProperties.**getPropertyAsInteger(resource, name,
>> defaultNumber);
>> +    }
>> +
>> +    public static Long getPropertyAsLong(String resource, String name,
>> long defaultNumber) {
>> +        return UtilProperties.**getPropertyAsLong(resource, name,
>> defaultNumber);
>> +    }
>> +
>> +    public static Float getPropertyAsFloat(String resource, String name,
>> float defaultNumber) {
>> +        return UtilProperties.**getPropertyAsFloat(resource, name,
>> defaultNumber);
>> +    }
>> +
>> +    public static Double getPropertyAsDouble(String resource, String
>> name, double defaultNumber) {
>> +        return UtilProperties.**getPropertyAsDouble(resource, name,
>> defaultNumber);
>> +    }
>> +
>> +    public static BigInteger getPropertyAsBigInteger(String resource,
>> String name, BigInteger defaultNumber) {
>> +        return UtilProperties.**getPropertyAsBigInteger(**resource,
>> name, defaultNumber);
>> +    }
>> +
>> +    public static BigDecimal getPropertyAsBigDecimal(String resource,
>> String name, BigDecimal defaultNumber) {
>> +        return UtilProperties.**getPropertyAsBigDecimal(**resource,
>> name, defaultNumber);
>> +    }
>> +
>> +    public static String getPropertyValue(String resource, String name,
>> Delegator delegator) {
>> +        String value = getSystemPropertyValue(name, delegator);
>> +        if (UtilValidate.isEmpty(value)) {
>> +            value = UtilProperties.**getPropertyValue(resource, name);
>> +        }
>> +        return value;
>> +    }
>> +
>> +    public static Properties getProperties(String resource) {
>> +        return UtilProperties.getProperties(**resource);
>> +    }
>> +
>> +    public static Properties getProperties(URL url) {
>> +        return UtilProperties.getProperties(**url);
>> +    }
>> +
>> +    public static boolean propertyValueEquals(URL url, String name,
>> String compareString) {
>> +        return UtilProperties.**propertyValueEquals(url, name,
>> compareString);
>> +    }
>> +
>> +    public static boolean propertyValueEqualsIgnoreCase(**URL url,
>> String name, String compareString) {
>> +        return UtilProperties.**propertyValueEqualsIgnoreCase(**url,
>> name, compareString);
>> +    }
>> +
>> +    public static String getPropertyValue(URL url, String name, String
>> defaultValue) {
>> +        return UtilProperties.**getPropertyValue(url, name,
>> defaultValue);
>> +    }
>> +
>> +    public static double getPropertyNumber(URL url, String name, double
>> defaultValue) {
>> +        return UtilProperties.**getPropertyNumber(url, name,
>> defaultValue);
>> +    }
>> +
>> +    public static double getPropertyNumber(URL url, String name) {
>> +        return UtilProperties.**getPropertyNumber(url, name);
>> +    }
>> +
>> +    public static String getPropertyValue(URL url, String name) {
>> +        return UtilProperties.**getPropertyValue(url, name);
>> +    }
>> +
>> +    public static String getSplitPropertyValue(URL url, String name) {
>> +        return UtilProperties.**getSplitPropertyValue(url, name);
>> +    }
>> +
>> +     public static void setPropertyValue(String resource, String name,
>> String value) {
>> +         UtilProperties.**setPropertyValue(resource, name, value);
>> +     }
>> +
>> +      public static void setPropertyValueInMemory(**String resource,
>> String name, String value) {
>> +          UtilProperties.**setPropertyValueInMemory(**resource, name,
>> value);
>> +      }
>> +
>> +    public static String getMessage(String resource, String name, Locale
>> locale, Delegator delegator) {
>> +        String value = getSystemPropertyValue(name, delegator);
>> +        if (UtilValidate.isEmpty(value)) {
>> +            value = UtilProperties.getMessage(**resource, name, locale);
>> +        }
>> +        return value;
>> +    }
>> +
>> +    public static String getMessage(String resource, String name,
>> Object[] arguments, Locale locale) {
>> +        return UtilProperties.getMessage(**resource, name, arguments,
>> locale);
>> +    }
>> +
>> +    public static<E>  String getMessage(String resource, String name,
>> List<E>  arguments, Locale locale) {
>> +        return UtilProperties.getMessage(**resource, name, arguments,
>> locale);
>> +    }
>> +
>> +    public static String getMessageList(String resource, String name,
>> Locale locale, Object... arguments) {
>> +        return UtilProperties.getMessageList(**resource, name, locale,
>> arguments);
>> +    }
>> +
>> +    public static String getMessage(String resource, String name,
>> Map<String, ? extends Object>  context, Locale locale) {
>> +        return UtilProperties.getMessage(**resource, name, context,
>> locale);
>> +    }
>> +
>> +    public static String getMessageMap(String resource, String name,
>> Locale locale, Object... context) {
>> +        return UtilProperties.getMessageMap(**resource, name, locale,
>> context);
>> +    }
>> +
>> +    public static ResourceBundle getResourceBundle(String resource,
>> Locale locale) {
>> +        return UtilProperties.**getResourceBundle(resource, locale);
>> +    }
>> +
>> +    public static ResourceBundleMapWrapper getResourceBundleMap(String
>> resource, Locale locale) {
>> +        return UtilProperties.**getResourceBundleMap(resource, locale);
>> +    }
>> +
>> +    public static ResourceBundleMapWrapper getResourceBundleMap(String
>> resource, Locale locale, Map<String, Object>  context) {
>> +        return UtilProperties.**getResourceBundleMap(resource, locale,
>> context);
>> +    }
>> +
>> +    public static Properties getProperties(String resource, Locale
>> locale) {
>> +        return UtilProperties.getProperties(**resource, locale);
>> +    }
>> +
>> +    @Deprecated
>> +    public static Locale getFallbackLocale() {
>> +        return UtilProperties.**getFallbackLocale();
>> +    }
>> +
>> +    public static List<Locale>  localeToCandidateList(Locale locale) {
>> +        return UtilProperties.**localeToCandidateList(locale);
>> +    }
>> +
>> +    public static Set<Locale>  getDefaultCandidateLocales() {
>> +        return UtilProperties.**getDefaultCandidateLocales();
>> +    }
>> +
>> +    @Deprecated
>> +    public static List<Locale>  getCandidateLocales(Locale locale) {
>> +        return UtilProperties.**getCandidateLocales(locale);
>> +    }
>> +
>> +    public static String createResourceName(String resource, Locale
>> locale, boolean removeExtension) {
>> +        return UtilProperties.**createResourceName(resource, locale,
>> removeExtension);
>> +    }
>> +
>> +    public static boolean isPropertiesResourceNotFound(**String
>> resource, Locale locale, boolean removeExtension) {
>> +        return UtilProperties.**isPropertiesResourceNotFound(**resource,
>> locale, removeExtension);
>> +    }
>> +
>> +    public static URL resolvePropertiesUrl(String resource, Locale
>> locale) {
>> +        return UtilProperties.**resolvePropertiesUrl(resource, locale);
>> +    }
>> +
>> +    public static Properties xmlToProperties(InputStream in, Locale
>> locale, Properties properties) throws IOException,
>> InvalidPropertiesFormatExcepti**on {
>> +        return UtilProperties.**xmlToProperties(in, locale, properties);
>> +    }
>> +}
>>
>> Propchange: ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**
>> EntityUtilProperties.java
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:eol-style = native
>>
>> Propchange: ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**
>> EntityUtilProperties.java
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:keywords = Date Rev Author URL Id
>>
>> Propchange: ofbiz/trunk/framework/entity/**src/org/ofbiz/entity/util/**
>> EntityUtilProperties.java
>> ------------------------------**------------------------------**
>> ------------------
>>     svn:mime-type = text/plain
>>
>>
>>

Reply via email to