1,8 → 1,14 |
package ak.hostadmiral.struts; |
|
import java.util.HashMap; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Iterator; |
import org.apache.struts.util.PropertyMessageResources; |
|
import ak.hostadmiral.util.ResourceManager; |
import ak.hostadmiral.util.ResourceAddedListener; |
|
/** |
* Extention of PropertyMessageResources to work with multiple |
* resource files, specified as semicolomn separated list. |
10,15 → 16,17 |
*/ |
public class MultiPropertyMessageResources |
extends PropertyMessageResources |
implements ResourceAddedListener |
{ |
private HashMap[] multiLocales; |
private String[] multiConfig; |
private List multiLocales = new ArrayList(); // List(HashMap) |
private List multiConfig = new ArrayList(); // List(String) |
|
public MultiPropertyMessageResources(MultiPropertyMessageResourcesFactory factory, |
String config) |
{ |
super(factory, config); |
initMultiConfig(config); |
initMultiConfig(config); |
ResourceManager.getInstance().addAddedListener(this); |
} |
|
public MultiPropertyMessageResources(MultiPropertyMessageResourcesFactory factory, |
26,13 → 34,14 |
{ |
super(factory, config, returnNull); |
initMultiConfig(config); |
ResourceManager.getInstance().addAddedListener(this); |
} |
|
protected synchronized void loadLocale(String localeKey) |
{ |
for(int i = 0; i < multiConfig.length; i++) { |
config = multiConfig[i]; |
locales = multiLocales[i]; |
for(int i = 0; i < multiConfig.size(); i++) { |
config = (String)multiConfig.get(i); |
locales = (HashMap)multiLocales.get(i); |
super.loadLocale(localeKey); |
} |
} |
39,10 → 48,24 |
|
protected void initMultiConfig(String cfg) |
{ |
this.multiConfig = cfg.split("\\s*;\\s*"); |
// from struts-config.xml |
String[] strs = cfg.split("\\s*;\\s*"); |
|
this.multiLocales = new HashMap[this.multiConfig.length]; |
for(int i = 0; i < this.multiLocales.length; i++) |
this.multiLocales[i] = new HashMap(); |
for(int i = 0; i < strs.length; i++) { |
this.multiConfig.add(strs[i]); |
this.multiLocales.add(new HashMap()); |
} |
|
// from resource manager |
for(Iterator i = ResourceManager.getInstance().getResources().iterator(); i.hasNext(); ) { |
this.multiConfig.add((String)i.next()); |
this.multiLocales.add(new HashMap()); |
} |
} |
|
public void resourceAdded(String resourceName) |
{ |
this.multiConfig.add(resourceName); |
this.multiLocales.add(new HashMap()); |
} |
} |