KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jdon > model > factory > ModelHandlerClassBuilder


1 /**
2  * Copyright 2003-2006 the original author or authors.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6
7  http://www.apache.org/licenses/LICENSE-2.0
8
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */

15
16 package com.jdon.model.factory;
17
18 import java.util.HashMap JavaDoc;
19 import java.util.Iterator JavaDoc;
20 import java.util.Map JavaDoc;
21
22 import com.jdon.container.config.app.AppConfigureCollection;
23 import com.jdon.container.pico.Startable;
24 import com.jdon.model.config.ConfigureReader;
25 import com.jdon.model.config.ModelMapping;
26 import com.jdon.util.Debug;
27
28 /**
29  * æ ¹æ?®modelmapping.xml生产相应的实例
30  * 下é?¢ä¸¤ä¸ªæ–¹æ³•é¢„先需è¦?执行:
31  * loadMapping(); //获å?–xml
32  * createModelClass();//预先创建一些class
33  *
34  * ModelFactory是有状æ€?的类。
35  *
36  * @author banq
37  */

38 public final class ModelHandlerClassBuilder implements Startable {
39     public final static String JavaDoc module = ModelHandlerClassBuilder.class.getName();
40
41     private ModelHandlerClassFactory modelHandlerClassFactory;
42
43     private Map JavaDoc configLoadedList = new HashMap JavaDoc();
44
45     /**
46      * key is formName /value is ModelMapping
47      */

48     private Map JavaDoc mps = new HashMap JavaDoc();
49
50     /**
51      * key is formName /value is Model class
52      */

53     private Map JavaDoc modelClasses = new HashMap JavaDoc();
54
55     /**
56      * key is formName /value is ModelHandler class
57      */

58     private Map JavaDoc handlerClasses = new HashMap JavaDoc();
59
60     public ModelHandlerClassBuilder(AppConfigureCollection appConfigureFiles,
61             ModelHandlerClassFactory handlerClassFactory) {
62         this.modelHandlerClassFactory = handlerClassFactory;
63         Iterator JavaDoc iter = appConfigureFiles.getConfigList().iterator();
64         while (iter.hasNext()) {
65             String JavaDoc configFile = (String JavaDoc) iter.next();
66             if (!configLoadedList.containsKey(configFile)) {
67                 ConfigureReader configureReader = new ConfigureReader(
68                         configFile);
69                 Debug.logVerbose("[JdonFramework]init configFile = "
70                         + configFile, module);
71                 configLoadedList.put(configFile, configureReader);
72             }
73         }
74     }
75
76     /**
77      * 将所有的ConfigureLoader包å?«çš„内容å?ˆå¹¶åœ¨ä¸€èµ·ã€‚
78      * 本方法相当于start()
79      * å?‚考 {@link #detroy()} method
80      *
81      */

82     public void start() {
83         try {
84             Iterator JavaDoc iter = configLoadedList.keySet().iterator();
85             while (iter.hasNext()) {
86                 String JavaDoc configFile = (String JavaDoc) iter.next();
87                 Debug.logVerbose("[JdonFramework] start configFile = " + configFile, module);
88                 ConfigureReader configureLoader = (ConfigureReader) configLoadedList.get(configFile);
89                 Map JavaDoc modelMappings = configureLoader.load();
90                 mps.putAll(modelMappings);
91                 
92                 Iterator JavaDoc mpsIter = modelMappings.keySet().iterator();
93                 while (mpsIter.hasNext()) {
94                     String JavaDoc formName = (String JavaDoc) mpsIter.next();
95                     build(formName);
96                 }
97             }
98             configLoadedList.clear();
99         } catch (Exception JavaDoc ex) {
100             Debug.logError("[JdonFramework] !!!!!!!framework started error: "
101                     + ex, module);
102         }
103     }
104     
105     private void build(String JavaDoc formName){
106         Debug.logVerbose("[JdonFramework] start build model for formName = " + formName, module);
107         ModelMapping modelMapping = (ModelMapping) mps.get(formName);
108         try {
109             
110             
111             Class JavaDoc modelClass = modelHandlerClassFactory.createModel(modelMapping);
112             modelClasses.put(formName, modelClass);
113             
114             Class JavaDoc keyClassType = modelHandlerClassFactory.createModelKeyClassType(modelMapping, modelClass);
115             modelMapping.setKeyClassType(keyClassType);
116             
117             handlerClasses.put(formName, modelHandlerClassFactory.createHandler(modelMapping));
118         } catch (Exception JavaDoc e) {
119             Debug.logError("[JdonFramework] build error: " + e, module);
120         }
121     }
122
123     /**
124      * 清除内存
125      */

126     public void stop() {
127         mps.clear();
128         configLoadedList.clear();
129         modelClasses.clear();
130         handlerClasses.clear();
131     }
132
133     public ModelMapping getModelMapping(String JavaDoc formName) {
134         return (ModelMapping) mps.get(formName);
135     }
136
137     /**
138      * @return Returns the handlerClasses.
139      */

140     public Class JavaDoc getHandlerClasses(String JavaDoc formName) {
141         return (Class JavaDoc)handlerClasses.get(formName);
142     }
143
144     /**
145      * @return Returns the modelClasses.
146      */

147     public Class JavaDoc getModelClasses(String JavaDoc formName) {
148         return (Class JavaDoc)modelClasses.get(formName);
149     }
150     
151
152
153 }
154
Popular Tags