getter setter命名规则重定义
奋斗到了凌晨两点半终于把最近项目需要的一个需求搞定了,因为客户端与数据库之间的一个数据服务框架命名规则不符合java的命名规则,所以这里需要做一个转换,大概功能实现了,算法方面还有待优化。。
package readandwrite;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class ReadAndWrite {
private static BufferedReader br;
private static BufferedWriter bw;
/**
* @param args
* @throws IOException
*
* 两个问题:1 javabean非规范命名 如开头大写 2 时间 Timestamp将导致的插入问题!!!!!!
*/
public static void main(String[] args) throws IOException {
File dir = new File("d:\\test\\hibernate\\");
String newPath = "d:\\test\\hibernate_new\\";
File file2 = new File(newPath);
if(!file2.exists()) {
file2.mkdir();//创建文件夹
}
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if(file[i].isDirectory()) {//文件夹直接跳过
continue;
}
String filename = file[i].getName();
br = new BufferedReader(new InputStreamReader(new FileInputStream(file[i].getAbsolutePath())));
File f = new File(newPath+filename);
if(f.exists()){
f.delete();//删除旧文件,避免重复写入
}
f.createNewFile();
FileWriter fw = new FileWriter(f,true);
bw = new BufferedWriter(fw);
if("java".equals(exn(filename))) {//解析实体类
String data = null;
while((data = br.readLine())!=null)
{
bw.write(split(data)+"\n");
bw.flush();
}
} else if("
String data = null;
while((data = br.readLine())!=null)
{
bw.write(sp2(data)+"\n");
bw.flush();
}
}
}
}
/*
* 获取文件扩展名
*/
public static String exn(String filename) {
int k = filename.lastIndexOf(".");
if(k>-1 && k<(filename.length()-1)) {
return filename.substring(k+1);
} else {
return "";
}
}
/*==============================================解析.java实体类======================================================*/
/*
* 拆分-关键词变小写 1
* 规则:将带有驼峰格式的子串变小写
*/
public static String split(String s) {
String data = "";
String reg = "\\s|\\.|\\,|\\;|\\(|\\)|\\{|\\}|\\\"";
String[] word = s.split(reg);//java标识符
ArrayList<String> tag = new ArrayList<String>();
String[] tem = s.split("");
// 保存标点符号
for(int i=0; i<tem.length; i++)
{
if(tem[i].matches(reg)) {
tag.add(tem[i]);
}
}
int k = 0;
for (int i = 0; i < word.length; i++) {
String fw = format(word[i]);
if(i < tag.size()) {
data += fw+tag.get(i);
} else {
data += fw;
}
k = i;
}
if(tag.size() > k) {
for (int i = k+1; i < tag.size(); i++) {
data += tag.get(i);
}
}
return data;
}
/*
* 驼峰格式子串去大写
*/
public static String format(String str) {
String reg = "([a-z]+[A-Z][a-z]+)*";
Pattern p = Pattern.compile(reg);
if(p.matcher(str).matches()) {
return str.toLowerCase();
}
return str;
}
/*==============================================解析.hbm.
/*
* 拆分-关键词变小写 2
* 将 组合 id name = "" || property name = "" 双引号中的属性值变小写
*/
public static String sp2(String str) {
if(str.contains("<id name") || str.contains("<property name")) {
return split(str);
}
return str;
}
}
TAG: