1
2
3
4
5
6
7 package org.asyrinx.joey.gen.core.impl;
8
9 import java.io.File;
10 import java.io.IOException;
11 import java.util.HashMap;
12 import java.util.Map;
13
14 import org.apache.commons.logging.Log;
15 import org.apache.commons.logging.LogFactory;
16 import org.apache.velocity.context.Context;
17 import org.asyrinx.brownie.core.io.FileNameUtils;
18 import org.asyrinx.joey.gen.core.BizLogicDistiller;
19 import org.asyrinx.joey.gen.core.GenerationQuery;
20 import org.asyrinx.joey.gen.core.JoeyGenRuntimeException;
21
22 /***
23 * @author takeshi
24 */
25 public class BizLogicDistillerComposite implements BizLogicDistiller, GenerationQuery {
26
27 /***
28 *
29 */
30 public BizLogicDistillerComposite() {
31 super();
32 }
33
34 private final Map distillers = new HashMap();
35
36 public boolean canGenerate(String inputTemplate, File outputFile, Context context) {
37 context.put("bizLogic", "");
38 if (outputFile == null)
39 return true;
40 if (!outputFile.exists())
41 return true;
42 final String ext = FileNameUtils.getExtension(outputFile.getName()).toLowerCase();
43 if (!this.containsDistiller(ext))
44 return false;
45 final String distilled;
46 try {
47 distilled = this.distill(outputFile);
48 } catch (IOException e) {
49 throw new JoeyGenRuntimeException(e);
50 }
51 if ((distilled != null) && (!"".equals(distilled.trim()))) {
52 context.put("bizLogic", distilled);
53 }
54 log.debug("canGenerate context.hashCode=" + context.hashCode());
55 log.debug("canGenerate context['bizLogic']=" + context.get("bizLogic"));
56 return true;
57 }
58
59 final Log log = LogFactory.getLog(this.getClass());
60
61 public String distill(File source) throws IOException {
62 final String ext = FileNameUtils.getExtension(source.getName());
63 final BizLogicDistiller distiller = (BizLogicDistiller) distillers.get(ext);
64 if (distiller != null)
65 return distiller.distill(source);
66 else
67 return "";
68 }
69
70 public boolean containsDistiller(String ext) {
71 return this.distillers.containsKey(ext.toLowerCase());
72 }
73
74 public void put(String ext, BizLogicDistiller distiller) {
75 this.distillers.put(ext.toLowerCase(), distiller);
76 }
77
78 }