Package pl.net.bluesoft.rnd.pt.ext.report.util.dict

Source Code of pl.net.bluesoft.rnd.pt.ext.report.util.dict.DictionaryHelperImpl

package pl.net.bluesoft.rnd.pt.ext.report.util.dict;

import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.dict.ProcessDictionaryRegistry;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.config.ProcessDefinitionConfig;
import pl.net.bluesoft.rnd.processtool.model.dict.ProcessDictionary;
import pl.net.bluesoft.rnd.processtool.model.dict.ProcessDictionaryItem;

import java.util.HashMap;
import java.util.Map;

/**
* DB based implementation of DictionaryHelper.
*/
public class DictionaryHelperImpl implements DictionaryHelper {
    private static final String BLANK = "";
    protected ProcessDictionaryRegistry processDictionaryRegistry;
    protected ProcessDefinitionConfig processDefinitionConfig;
    protected Map<String, Map<String, String>> dictionaryMap;
   
    @Override
    public synchronized String getDictionaryValue(String dictionaryName, String languageCode, String key) {
        if (dictionaryName != null && languageCode != null && key != null) {
            if (!dictionaryMap.containsKey(dictionaryKey(languageCode, dictionaryName)))
                addDictionary(languageCode, dictionaryName);
            if (dictionaryMap.containsKey(dictionaryKey(languageCode, dictionaryName))) {
                Map<String, String> dictionary = dictionaryMap.get(dictionaryKey(languageCode, dictionaryName));
                if (dictionary.containsKey(key))
                    return dictionary.get(key);
            }
        }
        return BLANK;
    }

    private void addDictionary(String languageCode, String dictionaryName) {
        ProcessDictionary dict = processDictionaryRegistry.getSpecificOrDefaultOrGlobalDictionary(
                processDefinitionConfig, "db", dictionaryName, languageCode);
        if (dict != null) {
            Map<String, String> dictionary = new HashMap<String, String>();
            for (Object item : dict.items()) {
                ProcessDictionaryItem pdItem = (ProcessDictionaryItem) item;
                dictionary.put(pdItem.getKey().toString(), pdItem.getValueForCurrentDate().toString());
            }
            dictionaryMap.put(dictionaryKey(languageCode, dictionaryName), dictionary);
        }
    }

    public DictionaryHelperImpl(ProcessInstance processInstance) {
        init(processInstance);
    }
   
    private void init(ProcessInstance processInstance) {
        ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();
        processDictionaryRegistry = ctx.getProcessDictionaryRegistry();
        processDefinitionConfig = processInstance.getDefinition();
        dictionaryMap = new HashMap<String, Map<String, String>>();
    }

    protected String dictionaryKey(String languageCode, String dictionaryName) {
        return languageCode.concat("_").concat(dictionaryName);
    }
}
TOP

Related Classes of pl.net.bluesoft.rnd.pt.ext.report.util.dict.DictionaryHelperImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.