public class ResourceBundleDataBean extends java.lang.Object implements ResourceBundleSmartDataBean, ResourceBundleInputDataBean
After these parameters are set and the data bean is activated, the information in property file can be read using the following methods:
public PropertyResourceBundle getPropertyResourceBundle()
public SortedMap getPropertySortedMap()
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):
Note: . . .
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
| -- 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();
public Hashtable getPropertyHashtable()
This method is used to read from the property file and return the results as a Hashtable of
Hashtables. The Hashtable contains many field Hashtables (each field corresponding to one small
hashtable).
The format of the property file would look as follows (example for UserRegistration_en_US.properties:
children.Label=Number Of Children
children.Displayed=yes
children.Required=no
age.Label=Age
age.Displayed=yes
age.Required=no
age.Options=0;Not Available|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
age.Operators=>;Older than|<;Yonger than|!=;Not equal to
gender.Label=Gender
gender.Displayed=yes
gender.Required=no
gender.Options=Male|Female
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 |
---|---|
com.ibm.commerce.command.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.
|
com.ibm.commerce.datatype.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(com.ibm.commerce.command.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(com.ibm.commerce.datatype.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 CLASSNAME
public static final java.lang.String COPYRIGHT
public ResourceBundleDataBean()
public com.ibm.commerce.command.CommandContext getCommandContext()
getCommandContext
in interface com.ibm.commerce.beans.SmartDataBean
public java.lang.String getDelimiter()
age.Options=0;Not Available|1;10-19 years|2;20-29 years
"|" is the delimiter.getDelimiter
in interface ResourceBundleSmartDataBean
public java.util.Locale getLocale()
getLocale
in interface ResourceBundleSmartDataBean
public java.lang.String getPathSeparator()
"store1/UserRegistration"
"/" is the path separator.getPathSeparator
in interface ResourceBundleSmartDataBean
public java.lang.String getPropertyFileName()
getPropertyFileName
in interface ResourceBundleSmartDataBean
public java.util.Hashtable getPropertyHashtable()
getPropertyHashtable
in interface ResourceBundleSmartDataBean
public java.util.Hashtable getPropertyHashtable(java.util.SortedMap atmpProperty)
atmpProperty
- The property StoredMap format.public java.util.PropertyResourceBundle getPropertyResourceBundle()
getPropertyResourceBundle
in interface ResourceBundleSmartDataBean
public java.util.SortedMap getPropertySortedMap()
public com.ibm.commerce.datatype.TypedProperty getRequestProperties()
getRequestProperties
in interface com.ibm.commerce.beans.InputDataBean
public java.lang.String getSeparator()
age.Options=0;Not Available|1;10-19 years|2;20-29 years
"1;10-19 years" is an option, ";" is the separator.
If no separator is set, the default value ';' will be used.getSeparator
in interface ResourceBundleSmartDataBean
public java.lang.String getStoreDirectory()
getStoreDirectory
in interface ResourceBundleSmartDataBean
public boolean getStoreDirectoryEnabled()
getStoreDirectoryEnabled
in interface ResourceBundleSmartDataBean
public java.util.PropertyResourceBundle getTextPropertyResourceBundle()
public static java.lang.String invokeGetMethod(java.lang.String astrClassName, java.lang.Object aobjAccessBean, java.lang.String astrParameterName)
astrClassName
- The fully qualified class name of the access bean.aobjAccessBean
- The access bean instance.astrParameterName
- The name of the parameter to get.public void populate()
populate
in interface com.ibm.commerce.beans.SmartDataBean
public void setCommandContext(com.ibm.commerce.command.CommandContext acommandContext)
setCommandContext
in interface com.ibm.commerce.beans.SmartDataBean
acommandContext
- The command context.public void setDelimiter(java.lang.String astrDelimiter)
age.Options=0;Not Available|1;10-19 years|2;20-29 years
'|' is the delimiter.
If no Delimiter is set, the databean will use the default value '|'.
setDelimiter
in interface ResourceBundleInputDataBean
astrDelimiter
- The delimiter for the property filepublic void setLocale(java.util.Locale alcLocale)
setLocale
in interface ResourceBundleInputDataBean
alcLocale
- The Localepublic void setPathSeparator(java.lang.String astrPathSeparator)
"store1/UserRegistration"
'/' is the path separator. If the path separator is not set, the databean will use
the default value '/'setPathSeparator
in interface ResourceBundleInputDataBean
astrPathSeparator
- The path separatorpublic void setPropertyFileName(java.lang.String astrPropertyFileName)
setPropertyFileName
in interface ResourceBundleInputDataBean
astrPropertyFileName
- The name of the property filepublic void setRequestProperties(com.ibm.commerce.datatype.TypedProperty areqParms) throws java.lang.Exception
setRequestProperties
in interface com.ibm.commerce.beans.InputDataBean
areqParms
- The request properties.java.lang.Exception
- Any exception happens.public void setSeparator(java.lang.String astrSeparator)
age.Options=0;Not Available|1;10-19 years|2;20-29 years
"1;10-19 years" is an option, ";" is the separator.
If no separator is set, the databean will use the default
value ';'.setSeparator
in interface ResourceBundleInputDataBean
astrSeparator
- The separator for the property filepublic void setStoreDirectory(java.lang.String astrStoreDirectory)
setStoreDirectory
in interface ResourceBundleInputDataBean
astrStoreDirectory
- The store directorypublic void setStoreDirectoryEnabled(boolean abStoreDirectoryEnabled)
setStoreDirectoryEnabled
in interface ResourceBundleInputDataBean
abStoreDirectoryEnabled
- A boolean value indicating if getting the Store
Directory from the CommandContextpublic static java.lang.String toUpOneChar(java.lang.String strAttributeName)
strAttributeName
- The attribute name.