public class ResourceBundleDataBean
extends java.lang.Object
implements com.ibm.commerce.common.beans.ResourceBundleSmartDataBean, com.ibm.commerce.common.beans.ResourceBundleInputDataBean
After these parameters are set and the data bean is activated, the information in property file can be read using the following methods:
If you have a property file named UserRegistration_en_US.properties, which contains the following content (The number can be anything as long as they follow the ascending order): . . . 100.Name=children 100.Label=Number Of Children 100.Displayed=yes 100.Required=no 100.Size=5 105.Name=age 105.Label=Age 105.Displayed=yes 105.Required=no 105.Options=0;Not Provided|1;10-19 years|2;20-29 years|3;30-39 years|4;40-49 years|5;50-59 years|6;60 years or older 110.Name=gender 110.Label=Gender 110.Displayed=yes 110.Required=no 110.Options=N;Not Provided|M;Male|F;Female
Note:
| -- Default Delimiter (You can use setDelimiter(String) method to set a different Delimiter)
; -- Default Separator (You can use setSeparator(String) method to set a different Separator)
The following sample code illustrates how to use the SortedMap: ResourceBundleDataBean bnResourceBundle= new ResourceBundleDataBean(); if (strProfileType != null && strProfileType.equals(ECUserConstants.EC_USER_PROFILE_BUSINESS)) bnResourceBundle.setPropertyFileName("UserRegistrationB2B"); else bnResourceBundle.setPropertyFileName("UserRegistration"); com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); SortedMap smpFields = bnResourceBundle.getPropertySortedMap(); Iterator entryIterator = smpFields.entrySet().iterator(); Map.Entry textentry = (Map.Entry) entryIterator.next(); Hashtable hshText = (Hashtable) textentry .getValue();
If there are multiple stores on the site, and each wishes to have its own version of the properties files. Then this can be achieved using the store path concept. For example, if there are two stores - store 201 and store 202, and each has the need for the same file 'UserRegistration'. Then the file layout may look like the following: wcstores.war/WEB-INF/classes/UserRegistration_en_US.properties wcstores.war/WEB-INF/classes/store201/UserRegistration_en_US.properties wcstores.war/WEB-INF/classes/store202/ Notice that there is a default version of the UserRegistration_en_US.properties file in the classpath, and store 201 overrides this default version in path 'store201'. Store 202 does not have its own version of the file, so references will resolve to the default version of the file. To read the property file, use the following code: ResourceBundleDataBean bnResourceBundle= new ResourceBundleDataBean(); bnResourceBundle.setPropertyFileName("UserRegistration"); com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); PropertyResourceBundle properties = bnResourceBundle.getPropertyResourceBundle(); Assuming the current store is store 201, then the first place that will be looked is in the store path for this store. The path is 'store201/UserRegistration_en_US.properties'. The file will be found and returned. If the file was not found, then the store relations table would be checked. And the file will be searched on the store paths for each of the relative stores. If still the file is not found, then it will be picked up from the classpath. In our case, there is a default version of the file directly on the classpath, and that would be resolved.
Another choice is explicitly specify the directory. In this way, if the property file is not found in this directory, the data bean will return null instead of continue search "wcstores.war/WEB-INF/classes/" directory. bnResourceBundle.setStoreDirectory("store201"); com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); PropertyResourceBundle properties = bnResourceBundle.getPropertyResourceBundle(); For store 202, which does not have its own property file, it is possible to reuse the file from store 201. The way is by simply creating a store relationship with that store. Simply insert an entry in the STORREL table with relationship type '-16', which indicates property file relationship. STRELTYP_ID RELATEDSTORE_ID STORE_ID SEQUENCE STATE ----------- --------------- ----------- ------------------------ ----------- -16 201 202 +1.00000000000000E+000 1 The STRELTYP_ID '-16' is defined in STRELTYP NAME STRELTYP_ID ------------------------------------------------------------ ----------- com.ibm.commerce.propertyFiles -16 After the store relation is created, the following code will find the property file under store201 for current store202. com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); PropertyResourceBundle properties = bnResourceBundle.getPropertyResourceBundle();
Modifier and Type | Field and Description |
---|---|
static java.lang.String | CLASSNAME
The fully qualified class name.
|
static java.lang.String | COPYRIGHT
IBM copyright.
|
Constructor and Description |
---|
ResourceBundleDataBean()
ResourceBundleDataBean constructor.
|
Modifier and Type | Method and Description |
---|---|
CommandContext | getCommandContext()
Gets the command context of this data bean.
|
java.lang.String | getDelimiter()
Gets the delimiter for the property file.
|
java.util.Locale | getLocale()
Gets the Locale.
|
java.lang.String | getPathSeparator()
Gets the path separator.
|
java.lang.String | getPropertyFileName()
Gets the name of the property file
|
java.util.Hashtable | getPropertyHashtable()
Return the content of the property file as a Hashtable of Hashtables.
|
java.util.Hashtable | getPropertyHashtable(java.util.SortedMap atmpProperty)
Helper method to convert the Hashtable of Hashtables format to the SortedMap format.
|
java.util.PropertyResourceBundle | getPropertyResourceBundle()
Returns a PropertyResourceBundle object.
|
java.util.SortedMap | getPropertySortedMap()
Returns the content of the property file as a SortedMap.
|
TypedProperty | getRequestProperties()
Gets the request properties;
|
java.lang.String | getSeparator()
Gets the separator for the property file.
|
java.lang.String | getStoreDirectory()
Gets the name of the store directory, which is used for finding property files belonging to this store.
|
boolean | getStoreDirectoryEnabled()
Gets a boolean which indicates whether or not the store directory should be fetched from the command context.
|
java.util.PropertyResourceBundle | getTextPropertyResourceBundle()
Returns a PropertyResourceBundle object of the text property file.
|
static java.lang.String | invokeGetMethod(java.lang.String astrClassName, java.lang.Object aobjAccessBean, java.lang.String astrParameterName)
Invoke the specified getter method from the specified accessbean, and return the result.
|
void | populate()
Populate the databean.
|
void | setCommandContext(CommandContext acommandContext)
Sets the command context.
|
void | setDelimiter(java.lang.String astrDelimiter)
Sets the delimiter for the property file.
|
void | setLocale(java.util.Locale alcLocale)
Set the Locale.
|
void | setPathSeparator(java.lang.String astrPathSeparator)
Sets the path separator.
|
void | setPropertyFileName(java.lang.String astrPropertyFileName)
Sets the name of the property file; this parameter must be set before populating the data bean.
|
void | setRequestProperties(TypedProperty areqParms)
Sets the request properties.
|
void | setSeparator(java.lang.String astrSeparator)
Sets the separator for the property file.
|
void | setStoreDirectory(java.lang.String astrStoreDirectory)
Sets the store directory, which is used as the path to find the property file.
|
void | setStoreDirectoryEnabled(boolean abStoreDirectoryEnabled)
Sets if enable getting the Store Directory from the CommandContext.
|
static java.lang.String | toUpOneChar(java.lang.String strAttributeName)
This helper method is used to change the first character of the input parameter to upper case.
|
public static final java.lang.String COPYRIGHT
public static final java.lang.String CLASSNAME
public ResourceBundleDataBean()
public CommandContext getCommandContext()
public java.lang.String getDelimiter()
public java.util.Locale getLocale()
public java.lang.String getPathSeparator()
public java.lang.String getPropertyFileName()
public java.util.Hashtable getPropertyHashtable()
public java.util.PropertyResourceBundle getPropertyResourceBundle()
public java.util.PropertyResourceBundle getTextPropertyResourceBundle()
public java.util.SortedMap getPropertySortedMap()
public TypedProperty getRequestProperties()
public java.lang.String getSeparator()
public java.lang.String getStoreDirectory()
public boolean getStoreDirectoryEnabled()
public static java.lang.String invokeGetMethod(java.lang.String astrClassName, java.lang.Object aobjAccessBean, java.lang.String astrParameterName)
public void populate()
public void setCommandContext(CommandContext acommandContext)
public void setDelimiter(java.lang.String astrDelimiter)
public void setLocale(java.util.Locale alcLocale)
public void setPathSeparator(java.lang.String astrPathSeparator)
public void setPropertyFileName(java.lang.String astrPropertyFileName)
public void setRequestProperties(TypedProperty areqParms) throws java.lang.Exception
public void setSeparator(java.lang.String astrSeparator)
public void setStoreDirectory(java.lang.String astrStoreDirectory)
public void setStoreDirectoryEnabled(boolean abStoreDirectoryEnabled)
public static java.lang.String toUpOneChar(java.lang.String strAttributeName)
public java.util.Hashtable getPropertyHashtable(java.util.SortedMap atmpProperty)