001 package org.kuali.rice.krms.service.impl;
002
003 import org.kuali.rice.krms.framework.engine.expression.ComparisonOperator;
004 import org.kuali.rice.krms.builder.ComponentBuilder;
005 import org.kuali.rice.krms.service.TemplateRegistry;
006 import org.kuali.rice.krms.dto.TemplateInfo;
007
008 import java.util.HashMap;
009 import java.util.Map;
010
011 /**
012 * @author Christoff
013 * Date: 2013/01/10
014 */
015 public class TemplateRegistryImpl implements TemplateRegistry {
016
017 private Map<String, TemplateInfo> templatesMap;
018 private Map<String, ComponentBuilder> componentBuilderMap = new HashMap<String, ComponentBuilder>();
019
020 public void setTemplatesMap(Map<String, TemplateInfo> templatesMap) {
021 this.templatesMap = templatesMap;
022 }
023
024 public TemplateInfo getTemplateForType(String type) {
025 TemplateInfo template = templatesMap.get(type);
026 return (template != null ? template : null);
027 }
028
029 public String getTermSpecNameForType(String type) {
030 TemplateInfo template = templatesMap.get(type);
031 return (template != null ? template.getTermSpecName() : null);
032 }
033
034 public String getOperationForType(String type) {
035 TemplateInfo template = templatesMap.get(type);
036 if (template == null) {
037 return null;
038 }
039 ComparisonOperator operator = ComparisonOperator.fromCode(template.getOperator());
040 return (operator != null ? operator.getCode() : null);
041 }
042
043 public String getValueForType(String type) {
044 TemplateInfo template = templatesMap.get(type);
045 return (template != null ? template.getValue() : null);
046 }
047
048 public ComponentBuilder getComponentBuilderForType(String type){
049 TemplateInfo template = templatesMap.get(type);
050 if ((template == null) || (template.getComponentBuilderClass() == null)){
051 return null;
052 }
053
054 ComponentBuilder builder = componentBuilderMap.get(template.getComponentBuilderClass());
055 if (builder == null){
056 try {
057 builder = (ComponentBuilder) Class.forName(template.getComponentBuilderClass()).newInstance();
058 componentBuilderMap.put(template.getComponentBuilderClass(), builder);
059 } catch (InstantiationException e) {
060 e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
061 } catch (IllegalAccessException e) {
062 e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
063 } catch (ClassNotFoundException e) {
064 e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
065 }
066 }
067
068 return builder;
069 }
070
071 }