1:
31: package ;
32:
33: import ;
34:
35: import ;
36: import ;
37: import ;
38: import ;
39: import ;
40: import ;
41: import ;
42: import ;
43: import ;
44:
45:
50: public class DefaultFormulaContext implements FormulaContext
51: {
52: private DefaultTypeRegistry typeRegistry;
53: private DefaultFunctionRegistry functionRegistry;
54: private OperatorFactory operatorFactory;
55: private DefaultLocalizationContext localizationContext;
56: private Configuration config;
57: private HashMap references;
58:
59: public DefaultFormulaContext()
60: {
61: this(LibFormulaBoot.getInstance().getGlobalConfig());
62: }
63:
64: public DefaultFormulaContext(Configuration config)
65: {
66: this.config = config;
67: localizationContext = new DefaultLocalizationContext();
68: localizationContext.initialize(config);
69: typeRegistry = new DefaultTypeRegistry();
70: typeRegistry.initialize(config, this);
71: functionRegistry = new DefaultFunctionRegistry();
72: functionRegistry.initialize(config);
73: operatorFactory = new DefaultOperatorFactory();
74: operatorFactory.initalize(config);
75: }
76:
77: public OperatorFactory getOperatorFactory()
78: {
79: return operatorFactory;
80: }
81:
82: public void defineReference(Object name, Object value)
83: {
84: if (references == null)
85: {
86: references = new HashMap();
87: }
88: references.put(name, value);
89: }
90:
91: public Object resolveReference(Object name)
92: {
93: if (references == null)
94: {
95: return null;
96: }
97: return references.get(name);
98: }
99:
100: public Configuration getConfiguration()
101: {
102: return config;
103: }
104:
105: public FunctionRegistry getFunctionRegistry()
106: {
107: return functionRegistry;
108: }
109:
110: public Type resolveReferenceType(Object name)
111: {
112: return AnyType.TYPE;
113: }
114:
115: public TypeRegistry getTypeRegistry()
116: {
117: return typeRegistry;
118: }
119:
120: public LocalizationContext getLocalizationContext()
121: {
122: return localizationContext;
123: }
124:
125: public boolean isReferenceDirty(Object name)
126: {
127: return true;
128: }
129: }