use of org.jaffa.exceptions.LabelException in project jaffa-framework by jaffa-projects.
the class LabelHelper method performSave.
/**
* This will perform the following tasks.
* - Add an entry for each label having an override value, to the ApplicationResources.override file.
* - Remove all entries from the ApplicationResources.override file, for which the override value is blank
* - Migrate all changes to the ApplicationResources.properties file by invoking InitApp.generateApplicationResources()
* - Flush the struts properties cache by invoking the flushCache() method on the MessageResources, provided its an instance of 'org.jaffa.util.PropertyMessageResources'
* @param request The request we are processing.
* @param messageResources The MessageResources object, which will be flushed, if its an instance of 'org.jaffa.util.PropertyMessageResources'.
* @throws FrameworkException if any error occurs.
*/
protected static void performSave(Map labels) throws FrameworkException {
String applicationResourcesOverrideLocation = (String) Config.getProperty(Config.PROP_APPLICATION_RESOURCES_OVERRIDE_LOCATION, null);
try {
// load the ApplicationResources.override file
Properties applicationResourcesOverrideProperties = loadPropertiesFromFile(applicationResourcesOverrideLocation, true);
ApplicationResourceLoader appResourceLoader = ApplicationResourceLoader.getInstance();
// Either update or remove a property
for (Iterator itr = labels.keySet().iterator(); itr.hasNext(); ) {
String label = (String) itr.next();
Map map = (Map) labels.get(label);
String override = (String) map.get(OVERRIDE);
if (override != null) {
// setting the override label into override file
applicationResourcesOverrideProperties.setProperty(label, override);
// Applying the changes into ApplicationResources in memory
appResourceLoader.getLocaleProperties(ApplicationResourceLoader.DEFAULT_PROP_LOCALE_KEY).setProperty(label, override);
} else {
// removing the override from file if there is any
applicationResourcesOverrideProperties.remove(label);
// reverting/leaving the default value if the override removed.
appResourceLoader.getLocaleProperties(ApplicationResourceLoader.DEFAULT_PROP_LOCALE_KEY).setProperty(label, appResourceLoader.getApplicationResourcesDefault().getProperty(label));
}
}
// Sort the ApplicationResources.override file
if (applicationResourcesOverrideProperties instanceof ListProperties)
((ListProperties) applicationResourcesOverrideProperties).sort();
// Now save the ApplicationResources.override file
storePropertiesToFile(applicationResourcesOverrideProperties, applicationResourcesOverrideLocation);
// Migrate all changes to the ApplicationResources.properties file by invoking InitApp.generateApplicationResources()
// InitApp.generateApplicationResources();
((PropertyMessageResources) PropertyMessageResourcesFactory.getDefaultMessageResources()).flushCache();
if (log.isDebugEnabled())
log.debug("Flushed the struts message cache");
} catch (IOException e) {
throw new LabelException(LabelException.WRITE_ERROR);
}
}
Aggregations