View Javadoc

1   //
2   // $Revision: 5 $
3   // $LastChangedBy: mhanns $
4   // $Date: 2010-04-01 10:10:45 +0200 (Do, 01 Apr 2010) $
5   // $HeadURL:
6   // svn://localhost/winf-ps/trunk/repository/src/main/java/de/uni_leipzig/wifa/iwi/mr3/dao/SavePhaseProcessor.java
7   // $
8   //
9   
10  package de.uni_leipzig.wifa.iwi.mr3.dao;
11  
12  import java.util.Map;
13  
14  import org.eclipse.emf.ecore.EAnnotation;
15  import org.eclipse.emf.ecore.EAttribute;
16  import org.eclipse.emf.ecore.EClass;
17  import org.eclipse.emf.ecore.EDataType;
18  import org.eclipse.emf.ecore.EEnum;
19  import org.eclipse.emf.ecore.EEnumLiteral;
20  import org.eclipse.emf.ecore.EGenericType;
21  import org.eclipse.emf.ecore.EObject;
22  import org.eclipse.emf.ecore.EOperation;
23  import org.eclipse.emf.ecore.EPackage;
24  import org.eclipse.emf.ecore.EParameter;
25  import org.eclipse.emf.ecore.EReference;
26  import org.eclipse.emf.ecore.ETypeParameter;
27  import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
28  import org.eclipse.emf.ecore.resource.Resource;
29  
30  import de.uni_leipzig.wifa.iwi.mr3.service.MRException;
31  
32  /**
33   * Phase processor.
34   * <p>
35   * This interface must implemented by any phase processor implementation. The
36   * phase processor acts as strategy pattern.
37   */
38  public interface SaveProcessor
39  {
40    /**
41     * Start the build up process.
42     * 
43     * @param resource
44     *          Resource to process
45     * @param registry
46     *          Object cache
47     */
48    void process(Resource resource, final Map<EObject, Object> registry);
49  
50    /**
51     * Dispatch the current element to its handler.
52     * <p>
53     * The order of dispatch types dependends on type hierarchy. Special types
54     * <b>must</b> checked earlier then generally types.
55     * 
56     * @param element
57     *          Element to dispatch
58     * @param registry
59     *          Object cache
60     * @throws MRException
61     *           if the model could not be saved
62     */
63    void dispatch(EObject element, final Map<EObject, Object> registry) throws MRException;
64  
65    /**
66     * Process an <code>EPackage</code>.
67     * 
68     * @param element
69     *          <code>EPackage</code>
70     * @param registry
71     *          Object cache
72     */
73    void process(EPackage element, final Map<EObject, Object> registry);
74  
75    /**
76     * Process an <code>EDataType</code>.
77     * 
78     * @param element
79     *          <code>EDataType</code>
80     * @param registry
81     *          Object cache
82     */
83    void process(EDataType element, final Map<EObject, Object> registry);
84  
85    /**
86     * Process an <code>EClass</code>.
87     * 
88     * @param element
89     *          <code>EClass</code>
90     * @param registry
91     *          Object cache
92     */
93    void process(EClass element, final Map<EObject, Object> registry);
94  
95    /**
96     * Process an <code>EEnum</code>.
97     * 
98     * @param element
99     *          <code>EEnum</code>
100    * @param registry
101    *          Object cache
102    */
103   void process(EEnum element, final Map<EObject, Object> registry);
104 
105   /**
106    * Process an <code>EAnnotation</code>.
107    * 
108    * @param element
109    *          <code>EAnnotation</code>
110    * @param registry
111    *          Object cache
112    */
113   void process(EAnnotation element, final Map<EObject, Object> registry);
114 
115   /**
116    * Process an <code>EOperation</code>.
117    * 
118    * @param element
119    *          <code>EOperation</code>
120    * @param registry
121    *          Object cache
122    */
123   void process(EOperation element, final Map<EObject, Object> registry);
124 
125   /**
126    * Process an <code>EAttribute</code>.
127    * 
128    * @param element
129    *          <code>EAttribute</code>
130    * @param registry
131    *          Object cache
132    */
133   void process(EAttribute element, final Map<EObject, Object> registry);
134 
135   /**
136    * Process an <code>EReference</code>.
137    * 
138    * @param element
139    *          <code>EReference</code>
140    * @param registry
141    *          Object cache
142    */
143   void process(EReference element, final Map<EObject, Object> registry);
144 
145   /**
146    * Process an <code>EEnumLiteral</code>.
147    * 
148    * @param element
149    *          <code>EEnumLiteral</code>
150    * @param registry
151    *          Object cache
152    */
153   void process(EEnumLiteral element, final Map<EObject, Object> registry);
154 
155   /**
156    * Process an <code>EGenericType</code>.
157    * <p>
158    * We don't need to do something here. The work is still done in the other
159    * methods.
160    * 
161    * @param element
162    *          <code>EGenericType</code>
163    * @param registry
164    *          Object cache
165    */
166   void process(EGenericType element, final Map<EObject, Object> registry);
167 
168   /**
169    * Process an <code>EParameter</code>.
170    * <p>
171    * {@link EParameter}s are ordered!
172    * 
173    * @param element
174    *          <code>EParameter</code>
175    * @param registry
176    *          Object cache
177    */
178   void process(EParameter element, final Map<EObject, Object> registry);
179 
180   /**
181    * Process an <code>ETypeParameter</code> (generic type parameters).
182    * <p>
183    * 
184    * @param element
185    *          <code>ETypeParameter</code>
186    * @param registry
187    *          Object cache
188    */
189   void process(ETypeParameter element, final Map<EObject, Object> registry);
190 
191   /**
192    * Process an <code>EStringToStringMapEntryImpl</code>.
193    * 
194    * @param element
195    *          <code>EStringToStringMapEntryImpl</code>
196    * @param registry
197    *          Object cache
198    */
199   void process(EStringToStringMapEntryImpl element, final Map<EObject, Object> registry);
200 
201   /**
202    * Process an unknown element.
203    * 
204    * @param element
205    *          Unknown element
206    * @param registry
207    *          Object cache
208    */
209   void process(EObject element, final Map<EObject, Object> registry);
210 }