文档章节

HIBERNATE TOOLS 帮助

triankg
 triankg
发布于 2014/04/14 14:58
字数 467
阅读 118
收藏 2
package a.b.c

import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import org.apache.commons.io.FileUtils;

/**
 * HIBERNATE 帮助类
 */
public class HibernateToolsUtil
{
    public static String SL = "\tprivate static final long serialVersionUID = {0}L;";

    /**
     * 文件转码, 不遍历子目录
     * @param files 
     * @param from 原始编码
     * @param to 转换编码
     * @param path 转码后文件存放位置
     */
    public static void fileChangeEncoding(Collection<File> files, String from, String to,
        String path) throws IOException
    {
        if (files == null)
        {
            return;
        }

        File template = FileUtils.getTempDirectory();
        template = new File(template, "/changeEncoding");
        System.out.println("[系统缓存目录]:" + template);
        System.out.println("执行转码------------------");
        for (Iterator<File> iterator = files.iterator(); iterator.hasNext();)
        {
            File fromFile = (File)iterator.next();
            System.out.println("当前文件:" + fromFile);
            File toFile = new File(template, fromFile.getName());
            FileUtils.writeLines(toFile, to, FileUtils.readLines(fromFile, from), null);
        }
        FileUtils.copyDirectory(template, new File(path));
        System.out.println("转码结束------------------");
    }

    /**
     * HIBERNATE TOOLS 不支持 LIST 需要修改源码 , 但是在最新的4.× 版本中修改失败, 还是直接通过一个转换工具全部替换掉
     * @param files
     * @param encoding 文件编码
     * @param toPath 转换后文件放置路径
     */
    public static void changeToList(Collection<File> files, String encoding, String toPath)
        throws IOException
    {
        if (files == null)
        {
            return;
        }

        Random r = new Random(Long.MAX_VALUE);
        File template = FileUtils.getTempDirectory();
        template = new File(template, "/changeToList");
        System.out.println("[系统缓存目录]:" + template);
        System.out.println("执行替换SET------------------");
        for (Iterator<File> iterator = files.iterator(); iterator.hasNext();)
        {
            File fromFile = (File)iterator.next();
            System.out.println("当前文件:" + fromFile);
            File toFile = new File(template, fromFile.getName());
            List<String> lines = FileUtils.readLines(fromFile);
            // i 下标,j 记录序列号行,c 记录定义class下标 行
            int i = 0, j = 0;
            // 标识是否是人员扩展
            for (String line : lines)
            {
                /*
                 * 不处理内部类情况 
                 */
                if (line.contains(" class "))
                {
                    j = i + 1;
                }

                if (i == j && i != 0)
                {
                    if (line.contains("{"))
                    {
                        j = i + 1;
                    }
                }
                line = replaceSet(line);
                lines.set(i, line);
                i++;

            }
            /****************************************************************/
            // 填充序列号, 一些自定义处理
            lines.add(j, MessageFormat.format(SL, String.valueOf(r.nextLong())));
            
            /****************************************************************/
            FileUtils.writeLines(toFile, encoding, lines, null);
        }
        FileUtils.copyDirectory(template, new File(toPath));
        System.out.println("替换SET结束------------------");
    }

    public static String replaceSet(String line)
    {
        line = line.replaceAll("\\.Set;$", ".List;");
        line = line.replaceAll("\\bSet<", "List<");
        line = line.replaceAll("\\.HashSet;$", ".ArrayList;");
        line = line.replaceAll("\\bHashSet<", "ArrayList<");
        return line;
    }

    /**
     * @param args
     */
    public static void main(String[] args) throws IOException
    {
        // 源文件地址
        String filePath = "1";
        // 转换文件存放地址
        String toPath = "2";
        fileChangeEncoding(FileUtils.listFiles(new File(filePath), new String[]{"java"}, true),
            "GBK", "UTF-8", toPath);
        changeToList(FileUtils.listFiles(new File(toPath), new String[]{"java"}, true), "UTF-8",
            toPath);
    }

}



© 著作权归作者所有

下一篇: TOMCAT 的 CONTEXT
triankg
粉丝 12
博文 112
码字总数 29848
作品 0
无锡
项目经理
私信 提问
【Hibernate那点事儿】—— Hibernate应该了解的知识

前言:   最近由于有点时间,就像深入的学习一下Hibernate.之前只是简单的使用,并没领会它的妙处。这里就趁着分享的机会,好好整理一下。   这篇主要讲到了下面几个部分:   Hiberna...

青夜之衫
2017/12/04
0
0
Hibernate初体验及简单错误排除

Hibernate是什么,有多少好处,想必查找这类博文的都知道,所以就不多说了。下面是我对Hibernate简单使用的一个小小的总结。与君(主要是刚入门的)共勉吧! 创建的顺序 创建Hibernate的配置...

郭璞
2016/05/19
0
0
Hibernate Tools

Hibernate Tools是由JBoss推出的一个Eclipse综合开发工具插件,该插件可以简化ORM框架Hibernate,以及JBoss Seam,EJB3等的开发工作。Hibernate Tools可以以Ant Task以及Eclipse插件的形式运...

匿名
2008/09/16
42.3K
0
Hibernate使用外键一对一映射ERROR: 不能将值 NULL 插入列 '',表 '';列不允许有 Null 值。INSERT 失败。

hibernate使用外键一对一映射中出现错误ERROR: 不能将值 NULL 插入列 'DEPT_ID',表 'test.dbo.DEPARTMENTS';列不允许有 Null 值。INSERT 失败。 目录结构: 配置文件:hibernate.cfg.xml s......

woaisinile
2016/01/10
1K
0
Hibernate Tools for Eclipse的使用

Hibernate Tools的官方网站:http://hibernate.org/tools/ Step1、安装好Hibernate Tools,建立一个Dynamic web project,工程名为“test”。 Step2、以Mysql为示例,建立相应的测试数据库及...

Airship
2016/12/12
27
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
7
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
10
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
昨天
9
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部