java.lang.Object | +--com.ibm.commerce.common.beans.ResourceBundleDataBean
The ResourceBundleDataBean is used by JSPs to get information from property files. To find a property file, three parameters are needed:
After these parameters are set and data bean is actived the informaiton in property file can be get using the follwong methods:
public PropertyResourceBundle
getPropertyResourceBundle()
public SortedMap getPropertySortedMap()
This method is used to read from the property file with the following format
and return results as a SortedMap.
For example:
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
following the ascendent 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)
public Hashtable getPropertyHashtable()
This method is used to read from the property file with the following format
and return results as a Hashtable. The Hashtable contains many field Hastables
(each field corresponding to one small hashtable).
For example:
If you have a property file named UserRegistration_en_US.properties, which
contains the following content: . . . 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
. . .
For example, there are two stores named store201 and store202. There are two
properties files with the same name "UserRegistraion"
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/
First, creates a new
ResourceBundleDataBean and sets the property file name:
ResourceBundleDataBean bnResourceBundle= new ResourceBundleDataBean();
bnResourceBundle.setPropertyFileName("UserRegistration");
If
current store is store201, to read property file under the store201 directory,
if store directory is not set, the data bean still can find the correct
property file though the store relations (if not store relations is defined for
this store, the store itself will become the first store relation). if the
property file is not found in this directory, the data bean will continue
search "wcstores.war/WEB-INF/classes/" directory.
com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle,
request); PropertyResourceBundle properties =
bnResourceBundle.getPropertyResourceBundle();
Another choice is
explictly 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("201");
com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request);
PropertyResourceBundle properties =
bnResourceBundle.getPropertyResourceBundle();
If current store is
store202 but it does not have its own UserRegistration property file, but it
want to use the one under store201, a store relation need to be created first
in STOREREL table: The STRELTYP_ID '-16' is
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();
Following are sample codes showing how to use 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();
Field Summary | |
---|---|
static java.lang.String |
CLASSNAME The full qualified class name. |
static java.lang.String |
COPYRIGHT IBM copyright. |
Constructor Summary | |
---|---|
ResourceBundleDataBean() ResourceBundleDataBean constructor. |
Method Summary | |
---|---|
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 property file |
java.util.Hashtable |
getPropertyHashtable() Return a the content of the property file as one large Hashtable. |
java.util.Hashtable |
getPropertyHashtable(java.util.SortedMap atmpProperty) Gets the property Hashtable format form property StoredMap format. |
java.util.PropertyResourceBundle |
getPropertyResourceBundle() Returns a PropertyResourceBundle object. |
java.util.SortedMap |
getPropertySortedMap() Return a the content of the property file as one large Hashtable. |
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 belong to this store. |
boolean |
getStoreDirectoryEnabled() Gets a boolean which indicates if enable getting the Store Directory from the CommandContext. |
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) Gets a parameter from a specified accessbean. |
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 property file. |
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 name of store directory, which is used as the path to the 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) Input parameter: attribute name return: method name (with uppercase first character) uppercase the first character of the attribute name in order to match with the naming convention of the underlying get/set method |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll,
toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String COPYRIGHT
public static final java.lang.String CLASSNAME
Constructor Detail |
---|
public ResourceBundleDataBean()
Method Detail |
---|
public CommandContext getCommandContext()
public java.lang.String getDelimiter()
age.Options=0;Not Available|1;10-19 years|2;20-29
years
"|" is the delimitor.
public java.util.Locale getLocale()
public java.lang.String getPathSeparator()
"store1/UserRegistration"
"/" is the path
separator.
public java.lang.String getPropertyFileName()
public java.util.Hashtable getPropertyHashtable()
Return a the content of the property file as one large Hashtable. This Hashtable contains many field Hastables (each field corresponding to one small hashtable).
For example:
If you have a property file named UserRegistration_en_US.properties, which contains the following content:
. . . 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 text1 = User Registration. . .
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)
To read this file, following the following steps:
ResourceBundleDataBean bnResourceBundle= new ResourceBundleDataBean(); bnResourceBundle.setPropertyFileName("UserRegistration"); com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); Hashtable hshRegister = bnResourceBundle.getPropertyHashtable();
Hashtable hshChildren = (Hashtable) hshRegister.get("children"); Hashtable hshAge = (Hashtable) hshRegister.get("age"); Hashtable hshGender = (Hashtable) hshRegister.get("gender");for the entry which only have attribute name, you can use the following code to get the value:
String strTitle = (String) hshRegister.get("text1");
String strChildrenLabel = (String)hshChildren.get("Label")
if (((Boolean)hshChildren.get("Displayed").booleanValue()) { ... }
String[ ][ ] ageOptions = (String[ ][ ])hshAge.get("Options"); ageOptions[0][0] should be "0" ageOptions[0][1] should be "Not Available" ageOptions[1][0] should be "1" ageOptions[1][1] should be "10-19 years" If there is no separator, the internal value and display value will be same, for example String[ ][ ] genderOptions = (String[ ][ ])hshGender.get("Options"); genderOptions[0][0] should be "Male" genderOptions[0][1] should be "Male" genderOptions[1][0] should be "Famal" genderOptions[1][1] should be "Female"
public java.util.PropertyResourceBundle getPropertyResourceBundle()
public java.util.PropertyResourceBundle getTextPropertyResourceBundle()
public java.util.SortedMap getPropertySortedMap()
Return a the content of the property file as one large Hashtable. This Hashtable contains many field Hastables (each field corresponding to one small hashtable).
For example:
If you have a property file named UserRegistration_en_US.properties, which contains the following content:
. . . 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 text1 = User Registration. . .
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)
To read this file, following the following steps:
ResourceBundleDataBean bnResourceBundle= new ResourceBundleDataBean(); bnResourceBundle.setPropertyFileName("UserRegistration"); com.ibm.commerce.beans.DataBeanManager.activate(bnResourceBundle, request); Hashtable hshRegister = bnResourceBundle.getPropertyHashtable();
Hashtable hshChildren = (Hashtable) hshRegister.get("children"); Hashtable hshAge = (Hashtable) hshRegister.get("age"); Hashtable hshGender = (Hashtable) hshRegister.get("gender");for the entry which only have attribute name, you can use the following code to get the value:
String strTitle = (String) hshRegister.get("text1");
String strChildrenLabel = (String)hshChildren.get("Label")
if (((Boolean)hshChildren.get("Displayed").booleanValue()) { ... }
String[ ][ ] ageOptions = (String[ ][ ])hshAge.get("Options"); ageOptions[0][0] should be "0" ageOptions[0][1] should be "Not Available" ageOptions[1][0] should be "1" ageOptions[1][1] should be "10-19 years" If there is no separator, the internal value and display value will be same, for example String[ ][ ] genderOptions = (String[ ][ ])hshGender.get("Options"); genderOptions[0][0] should be "Male" genderOptions[0][1] should be "Male" genderOptions[1][0] should be "Famal" genderOptions[1][1] should be "Female"
public TypedProperty getRequestProperties()
public java.lang.String getSeparator()
age.Options=0;Not Available|1;10-19 years|2;20-29 years"1;10-19 years" is a option, ";" is the separator. If no separator is set, the databean will use the default one: ";".
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)
astrClassName
- The full qualified class name of the access
bean.aobjAccessBean
- The access bean instance.astrParameterName
- The name of the parameter to get.public void populate()
public void setCommandContext(CommandContext acommandContext)
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 delimitor. If no Delimiter is set, the databean will use the default one: "|".
astrDelimiter
- The delimiter for the property
filepublic void setLocale(java.util.Locale alcLocale)
alcLocale
- The Localepublic void setPathSeparator(java.lang.String astrPathSeparator)
"store1/UserRegistration""/" is the path separator. If path separator is not set, the databean will use the default one: "/" (working under Windows platform).
astrPathSeparator
- The path separatorpublic void setPropertyFileName(java.lang.String astrPropertyFileName)
astrPropertyFileName
- The name of property
filepublic void setRequestProperties(TypedProperty areqParms) throws java.lang.Exception
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 a option, ";" is the separator. If no separator is set, the databean will use the default one: ";".
astrSeparator
- The separator for the property
filepublic void setStoreDirectory(java.lang.String astrStoreDirectory)
astrStoreDirectory
- The name of store
directorypublic void setStoreDirectoryEnabled(boolean abStoreDirectoryEnabled)
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.public java.util.Hashtable getPropertyHashtable(java.util.SortedMap atmpProperty)
atmpProperty
- The property StoredMap format.