/*
* Copyright 1999-2012 Alibaba Group.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.cobar.parser.codegen;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
/**
* (created at 2010-9-26)
*
* @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
*/
public class Main {
public static void main(String[] args) throws Exception {
Main main = new Main();
main.dir(new File(
"/media/BC4CF85E4CF814BC/work/cobar/cobar-1.1.0-dev/cobar-parser/src/main/java/com/alibaba/cobar/parser/ast/expression"));
}
private void dir(File dir) throws Exception {
if (dir.getName().equals(".svn"))
return;
File[] fl = dir.listFiles();
if (fl == null)
return;
for (File file : fl) {
if (file.isDirectory()) {
dir(file);
} else {
handleFile(file);
}
}
}
protected static final String srcString = "<a href=\"mailto:QiuShuo1985@gmail.com\">";
protected static final String targetString = "<a href=\"mailto:shuo.qius@alibaba-inc.com\">";
// void visit(ASTNode groupBy);
private void handleFile(File file) throws Exception {
if (file == null || !file.getName().endsWith(".java")) {
return;
}
InputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
BufferedReader fin = new BufferedReader(new InputStreamReader(fileInputStream, "gbk"));
File tmp = getTmpFile(file);
PrintWriter tout = null;
try {
tout = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tmp), "gbk"));
StringBuilder sb = new StringBuilder();
for (String line = null; (line = fin.readLine()) != null;) {
sb.append(line).append("\r\n");
}
int index = sb.lastIndexOf("}");
tout.print(sb.substring(0, index));
tout.print("@Override\r\n");
tout.print("public void accept(SQLASTVisitor visitor){visitor.visit(this);}}");
tout.flush();
} finally {
try {
tout.close();
} catch (Exception e2) {
}
}
String opath = file.getAbsolutePath();
if (file.delete() == false) {
System.out.println(file.getAbsolutePath());
tmp.delete();
return;
}
tmp.renameTo(new File(opath));
} finally {
try {
fileInputStream.close();
} catch (Exception e) {
}
}
}
private File getTmpFile(File file) throws Exception {
File[] sub = file.getParentFile().listFiles();
String newName = file.getName() + ".temp";
loop1: while (true) {
for (File s : sub) {
if (newName.equalsIgnoreCase(s.getName())) {
newName = newName + "1";
continue loop1;
}
}
break;
}
return new File(file.getParent(), newName);
}
}