001: /*
002: * ChainBuilder ESB
003: * Visual Enterprise Integration
004: *
005: * Copyright (C) 2006 Bostech Corporation
006: *
007: * This program is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU General Public License as published by the
009: * Free Software Foundation; either version 2 of the License, or (at your option)
010: * any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
014: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
015: * for more details.
016: *
017: * You should have received a copy of the GNU General Public License along with
018: * this program; if not, write to the Free Software Foundation, Inc.,
019: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: *
022: * $Id: Trn2JavaTask.java 11910 2008-02-14 00:56:43Z lzheng $
023: */
024: package com.bostechcorp.cbesb.tools.ant;
025:
026: import java.io.File;
027:
028: import org.apache.commons.lang.StringUtils;
029: import org.apache.tools.ant.BuildException;
030: import org.apache.tools.ant.Task;
031:
032: import com.bostechcorp.cbesb.common.trn.compiler.TransformerCompiler;
033: import com.bostechcorp.cbesb.common.util.ErrorUtil;
034: import com.bostechcorp.cbesb.common.util.FileUtil;
035: import com.bostechcorp.cbesb.common.util.RuntimeClassLoader;
036: import com.bostechcorp.cbesb.common.util.project.ProjectUtil;
037:
038: /**
039: * @author elu
040: *
041: */
042: public class Trn2JavaTask extends Task {
043: static public String DEFAULT_MAP_PACKAGE_NAME = "com.bostechcrop.cbesb.generated.map";
044:
045: private String srcDir;
046:
047: private String destDir;
048:
049: private String projName;
050:
051: private String javaPackageName;
052:
053: /**
054: * @return the destDir
055: */
056: public String getDestDir() {
057: return destDir;
058: }
059:
060: /**
061: * @param destDir
062: * the destDir to set
063: */
064: public void setDestDir(String destDir) {
065: this .destDir = destDir;
066: }
067:
068: /**
069: * @return the javaPackageName
070: */
071: public String getJavaPackageName() {
072: return javaPackageName;
073: }
074:
075: /**
076: * @param javaPackageName
077: * the javaPackageName to set
078: */
079: public void setJavaPackageName(String javaPackageName) {
080: this .javaPackageName = javaPackageName;
081: }
082:
083: /**
084: * @return the srcDir
085: */
086: public String getSrcDir() {
087: return srcDir;
088: }
089:
090: /**
091: * @param srcDir
092: * the srcDir to set
093: */
094: public void setSrcDir(String srcDir) {
095: this .srcDir = srcDir;
096: }
097:
098: /**
099: * @return the projName
100: */
101: public String getProjName() {
102: return projName;
103: }
104:
105: /**
106: * @param projName
107: * the projName to set
108: */
109: public void setProjName(String projName) {
110: this .projName = projName;
111: }
112:
113: /**
114: *
115: */
116: public Trn2JavaTask() {
117: this .javaPackageName = DEFAULT_MAP_PACKAGE_NAME;
118: }
119:
120: /**
121: * execute the task
122: *
123: * @throws BuildException
124: */
125: public void execute() {
126: try {
127: File srcDirFile = new File(srcDir);
128: File destDirFile = new File(destDir);
129: File[] trnFiles = FileUtil.listFilesAsArray(srcDirFile,
130: new TrnFileFilter(), true);
131:
132: for (File file : trnFiles) {
133:
134: System.err.println("Proj: " + projName
135: + " File - path: " + file.getPath()
136: + ", name: " + file.getName());
137:
138: File newDirFile = destDirFile;
139: String newPackageName = javaPackageName;
140:
141: newDirFile = FileUtil.getDirectoryPath(newDirFile,
142: javaPackageName.replace(".", File.separator));
143:
144: // let us grap the sub directory if TRN file is in
145: // sub-directory;
146:
147: // change the "." to "_" as "." is used for Java name space.
148:
149: String transformedProjName = projName.replace('.', '_');
150: String dirStr = StringUtils.substringBeforeLast(file
151: .getPath(), File.separator);
152: dirStr = StringUtils.substringAfter(dirStr, srcDirFile
153: .getPath());
154:
155: if (StringUtils.isNotBlank(transformedProjName))
156: dirStr = File.separatorChar + transformedProjName
157: + dirStr;
158: if (StringUtils.isNotBlank(dirStr)) {
159: newDirFile = FileUtil.getDirectoryPath(newDirFile,
160: dirStr);
161: newPackageName = newPackageName
162: + dirStr.replace(File.separatorChar, '.');
163: }
164:
165: FileUtil.buildDirectory(newDirFile);
166: System.err.println("new dir:"
167: + newDirFile.getAbsolutePath());
168: String javaFileName = StringUtils.substringBefore(file
169: .getName(), ".")
170: + ".java";
171: TransformerCompiler t = new TransformerCompiler(file,
172: new File(newDirFile, javaFileName),
173: newPackageName);
174: t.generateJavaCode();
175: }
176:
177: } catch (Exception ex) {
178:
179: ErrorUtil.printError("Exception in execute(): ", ex);
180: }
181: }
182:
183: class TrnFileFilter implements java.io.FileFilter {
184:
185: public boolean accept(File file) {
186: if (file.isDirectory())
187: return false;
188: String name = file.getName().toLowerCase();
189: return name.endsWith("trn");
190: }// end accept
191: }
192:
193: }
|