1 package org.dbe.studio.tools.sdlCompiler2Java;
2
3 import java.io.*;
4
5 import javax.xml.transform.*;
6 import javax.xml.transform.stream.*;
7
8 import org.eclipse.core.runtime.Platform;
9 import org.eclipse.core.runtime.preferences.IPreferencesService;
10
11
12
13 public class Sdl2Java
14 {
15 private String sdl2wsdlTransform;
16 private String wsdl2mjavaTransform;
17 private String mjava2javaTransform;
18 private String wsdl2sdlTransform;
19
20 /***
21 *
22 * @param sdl
23 * @return wsdl
24 * @throws Sdl2JavaException
25 *
26 * this method take as parameter a SDL file as String and return a WSDL file as String
27 */
28 public String sdl2wsdl(String sdl)
29 throws Sdl2JavaException
30 {
31 if ( sdl2wsdlTransform == null ) throw new Sdl2JavaException(Sdl2JavaMessages.ERR_MSG_SDL_Null);
32 String wsdl;
33 try {
34 wsdl = transformer(sdl, sdl2wsdlTransform);
35 } catch (Exception e) {
36 throw new Sdl2JavaException(e);
37 }
38 return wsdl;
39 }
40
41 /***
42 *
43 * @param wsdl
44 * @return mJava
45 * @throws Sdl2JavaException
46 *
47 * this method take as parameter a WSDL file as String and return a mJava file as String
48 */
49 public String wsdl2mjava(String wsdl)
50 throws Sdl2JavaException
51 {
52 if ( wsdl2mjavaTransform == null ) throw new Sdl2JavaException(Sdl2JavaMessages.ERR_MSG_WSDL_Null);
53 String mjava;
54 try {
55 mjava = transformer(wsdl, wsdl2mjavaTransform);
56 } catch (Exception e) {
57 throw new Sdl2JavaException(e);
58 }
59 return mjava;
60 }
61
62 /***
63 *
64 * @param wsdl
65 * @return mJava
66 * @throws Sdl2JavaException
67 *
68 * this method take as parameter a WSDL file as String and return a mJava file as String
69 */
70 public String wsdl2sdl(String wsdl)
71 throws Sdl2JavaException
72 {
73 if ( wsdl2sdlTransform == null ) throw new Sdl2JavaException(Sdl2JavaMessages.ERR_MSG_WSDL_Null);
74 String sdl;
75 try {
76 sdl = transformer(wsdl, wsdl2sdlTransform);
77 } catch (Exception e) {
78 throw new Sdl2JavaException(e);
79 }
80 return sdl;
81 }
82
83 /***
84 *
85 * @param mjava
86 * @return java
87 * @throws Sdl2JavaException
88 *
89 * this method take as parameter a mJava file as String and return a Java file as String
90 */
91 public String mjava2java(String mjava)
92 throws Sdl2JavaException
93 {
94 if ( mjava2javaTransform == null ) throw new Sdl2JavaException(Sdl2JavaMessages.ERR_MSG_MJAVA_Null);
95 String java;
96 try {
97 java = transformer(mjava, mjava2javaTransform);
98 } catch (Exception e) {
99 throw new Sdl2JavaException(e);
100 }
101 return java;
102 }
103
104 /***
105 *
106 * @param sdl
107 * @return java
108 * @throws Sdl2JavaException
109 *
110 */
111 public String sdl2java(String sdl)
112 throws Sdl2JavaException
113 {
114 String wsdl = sdl2wsdl(sdl);
115 String mjava = wsdl2mjava(wsdl);
116 String java = mjava2java(mjava);
117
118 return java;
119 }
120
121
122 /***
123 *
124 * @param input
125 * @param transformation
126 * @return output
127 * @throws Exception
128 *
129 */
130 private String transformer(String input, String transformation)
131 throws Exception
132 {
133
134 Pack p = new Pack();
135 IPreferencesService service = Platform.getPreferencesService();
136 try {
137 p.setPack(service.getString("org.dbe.studio.tools.sdl2java", Sdl2JavaMessages.PREF_DEFAULT_NAMESPACE_KEY, Sdl2JavaMessages.PREF_DEFAULT_NAMESPACE_VALUE, null));
138 }
139 catch ( Exception ignored ) {
140 }
141
142
143 String packName = validateNamespace(p);
144
145
146 String nameSpace = getNameSpace(packName);
147
148 TransformerFactory tFactory = TransformerFactory.newInstance();
149 Transformer transformer = tFactory.newTransformer(new StreamSource(new StringReader(transformation)));
150 StringWriter output = new StringWriter();
151 transformer.setParameter("nameSpacePack",nameSpace);
152 transformer.setParameter("package",packName);
153 transformer.transform(new StreamSource(new StringReader(input)),new StreamResult(output));
154
155 return output.toString();
156 }
157
158
159 /***
160 * @param args
161 *
162 * ONLY for test purposes
163 */
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179 /***
180 *
181 * @param file
182 * @return
183 * @throws Exception
184 *
185 */
186 public static String loadFile(File file) throws Exception
187 {
188 FileInputStream fis = new FileInputStream(file);
189 ByteArrayOutputStream baos = new ByteArrayOutputStream((int)file.length());
190
191 byte[] b = new byte[4096];
192 int nb;
193 while ( (nb = fis.read(b)) != -1 ) {
194 baos.write(b, 0, nb);
195 }
196 return baos.toString();
197 }
198
199 /***
200 *
201 * @param mjava2javaTransform
202 *
203 */
204 public void setMjava2javaTransform(String mjava2javaTransform) {
205 this.mjava2javaTransform = mjava2javaTransform;
206 }
207
208 /***
209 *
210 * @param sdl2wsdlTransform
211 *
212 */
213 public void setSdl2wsdlTransform(String sdl2wsdlTransform) {
214 this.sdl2wsdlTransform = sdl2wsdlTransform;
215 }
216
217 /***
218 *
219 * @param wsdl2mjavaTransform
220 *
221 */
222 public void setWsdl2mjavaTransform(String wsdl2mjavaTransform) {
223 this.wsdl2mjavaTransform = wsdl2mjavaTransform;
224 }
225
226 /***
227 *
228 * @param wsdl2sdlTransform
229 */
230 public void setWsdl2SdlTransform(String wsdl2sdlTransform) {
231 this.wsdl2sdlTransform = wsdl2sdlTransform;
232 }
233
234 /***
235 *
236 * @param file
237 * @param strContent
238 * @throws Exception
239 */
240 public static void saveFile(File file, String strContent) throws Exception
241 {
242 FileWriter fw = new FileWriter(file);
243 fw.write(strContent);
244 fw.close();
245 }
246
247 /***
248 *
249 * @param p Pack
250 * @return pp String
251 */
252 public static String validateNamespace(Pack p){
253 String pp = null;
254
255
256 if(p.getPack().toString().endsWith(".")){
257 pp = p.getPack().toString();
258 pp = pp.substring(0,pp.lastIndexOf(".")).trim();
259 }
260 else pp = p.getPack().toString();
261 return pp;
262 }
263
264 /***
265 *
266 * @param pack String
267 * @return revPack String
268 */
269 public static String getNameSpace(String pack){
270 String revPack = null;
271
272 int i = pack.indexOf(".");
273 if(i == -1)
274 revPack = pack;
275 if(i > -1){
276 String revPack0 = pack.substring(0,pack.indexOf(".")+1);
277 String revPack1 = pack.substring(pack.lastIndexOf("."));
278 if(revPack1 != revPack0)
279 revPack = pack.replaceAll(revPack0,"")+".".concat(revPack0.replace('.',' ').trim());
280 }
281
282 return revPack;
283 }
284 }