Including a systemResource field makes sense.

-Adrian

On 2/1/2012 10:14 AM, Chatree Srichart wrote:
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