疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

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 = http://www.cnblogs.com/cczjg/archive/2012/10/06/null;

while((data = http://www.cnblogs.com/cczjg/archive/2012/10/06/br.readLine())!=null)

{

bw.write(split(data)+“ ”);

bw.flush();

}

} else if(“xml”.equals(exn(filename))) {//解析映射文件

String data = http://www.cnblogs.com/cczjg/archive/2012/10/06/null;

while((data = http://www.cnblogs.com/cczjg/archive/2012/10/06/br.readLine())!=null)

{

bw.write(sp2(data)+“ ”);

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 datahttp://www.cnblogs.com/cczjg/archive/2012/10/06/= “”;
   
    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.xml映射文件======================================================*/
   
    /*
   
    * 拆分-关键词变小写 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;
   
    }
   
    }