IFile、File与实体转换

  /**
     * 根据物理实体文件在开发工程中创建实体文件
     */
    @Override
    public void getEntityFilesByErFile(IFile erfile, IFolder entityFolder) {
        if (null == erfile || null == entityFolder) {
            ERDiagramActivator.showErrorDialog("ER图表为空!");
            return;
        }

        // 通过file反编译获取diagram,再创建实体,通过流写入文件,到folder路径下
        File tradeFile = erfile.getLocation().toFile(); // ifile转换成file
        byte[] fileByteArray = this.File2ByteArray(tradeFile);// 文件转成二进制数据
        if (null == fileByteArray) {
            return;
        }
        // 将二进制数组转换成对象
        ERDiagram resultDiagram = null;
        try {
            resultDiagram = (ERDiagram) this.restore(fileByteArray);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 设置er图中所有表格转换成实体对象
        for (final ERTable table : resultDiagram.getDiagramContents()
                .getContents().getTableSet().getList()) {

            final String className = table.getPhysicalName();

            Document document = DocumentHelper.createDocument();
            Element root = document.addElement("entity");
            createElement(root, "schema", "");
            createElement(root, "name", className);
            createElement(root, "objName", className);
            createElement(root, "strategy", "");

            createColumns(root, table);

            System.out.println(XmlUtils.formatXML(document.asXML(), true));
            InputStream in = EntityUtils.parseEntity(document.asXML());

            String fileName = className + "." + Constants.FILE_EXT_EIX;
            IFile ifile = entityFolder.getFile(fileName);
            // 設置實體對象字段值
            try {
                if (!ifile.exists()) {
                    ifile.create(null, true, null);
                }
                ifile.setContents(in, IFile.FORCE, null);
                // entityFolder.copy((IPath) new Path(fileName), IFile.FORCE,
                // null);
            } catch (CoreException e) {
                e.printStackTrace();
            }
        }
    }

    // 将文件转换成byte数组
    public byte[] File2ByteArray(File tradeFile) {
        byte[] buffer = null;
        try {
            FileInputStream fis = new FileInputStream(tradeFile);// 文件读取成流
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[(int) tradeFile.length()];// 文件大小长度的数组
            if(b.length == 0){
                ERDiagramActivator.showErrorDialog("ER文件为空!");
                throw new IOException("ER文件为空!");
            }
            int n;
            // 文件没有读取完,一直读取文件,并且写入到数组
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer;
    }

    // 把二进制数组的数据转回对象
    public Object restore(byte[] b) throws ClassNotFoundException, IOException {
        if(null == b)
            return null;
        ByteArrayInputStream bis = null;
        ObjectInputStream ois = null;
        try {
            // 读取二进制数据并转换成对象
            bis = new ByteArrayInputStream(b);
            ois = new ObjectInputStream(bis);
            return ois.readObject();
        } finally {
            if (ois != null) {
                ois.close();
            }
            if (bis != null) {
                bis.close();
            }
        }
    }

    // 創建元素節點
    private Element createElement(Element element, String tag, String value) {
        Element e = element.addElement(tag);
        e.addText(value);
        return e;
    }

    // 得到当前sql类型数据的规范名称
    private String getFullClassName(final SqlType type) {
        if (type == null) {
            return "";
        }
        final Class clazz = type.getJavaClass();
        final String name = clazz.getCanonicalName();
        return name;
    }

    // 创建表格中列数据
    private void createColumns(Element root, ERTable table) {
        Element columns = createElement(root, "columns", "");

        List<NormalColumn> columnsList = table.getExpandedColumns();
        String length = "";
        String type = "";
        for (NormalColumn column : columnsList) {
            Element columnEle = createElement(columns, "column", "");
            createElement(columnEle, "primaryKey", BooleanUtils
                    .toStringTrueFalse(column.isPrimaryKey()).toLowerCase());
            createElement(columnEle, "physicalName", column.getPhysicalName());
            createElement(columnEle, "logicName", column.getLogicalName());
            type = ObjectUtils.toString(column.getType());
            if (column.getWord() != null
                    && column.getWord().getTypeData() != null
                    && column.getWord().getTypeData().getLength() != null) {
                length = Integer.toString(column.getWord().getTypeData()
                        .getLength());
            }
            type = type.replace("(n)", "(" + length + ")");
            createElement(columnEle, "type", type);
            createElement(columnEle, "length", length);
            createElement(columnEle, "notNull",
                    BooleanUtils.toStringTrueFalse(column.isNotNull())
                            .toLowerCase());
            createElement(columnEle, "mapType",
                    getFullClassName(column.getType()));
            createElement(columnEle, "comment", column.getDescription());
        }
    }

原文地址:https://www.cnblogs.com/Soy-technology/p/11429850.html

时间: 2024-11-13 09:49:18

IFile、File与实体转换的相关文章

C#实体转换

using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Reflection; /// <summary> /// 实体阅读器类,可以从DataTable中或者DbDataReader的实例中将数据转换成对应的示例 /// 作者:周公 /// 日期:2011-07-17 /// 修改日期:2011-07-21 /// 博客地址:http:/

HBaseConvetorUtil 实体转换工具类

HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @Description: 传入hbase返回结果值,返回实例集合 * @param * @return * @throws */ public static <T> List<T>convetor(Class<T> cla,ResultScanner resultScanner) throws Exce

HBaseConvetorUtil 实体转换工具

HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @Description: 传入hbase返回结果值.返回实例集合 * @param * @return * @throws */ public static <T> List<T>convetor(Class<T> cla,ResultScanner resultScanner) throws Exce

html实体转换

摘要: 在 HTML 中,某些字符是预留的.在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签.如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体.如需显示小于号,我们必须这样写:< 或 < HTML 中的常用字符实体是不间断空格( ).浏览器总是会截短 HTML 页面中的空格.如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个.如需在页面中增加空格的数量,您需要使用   字符实体. 实体列表: 下面

.NET 实体转换辅助类

/// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where T : new() { public static IList<T> ConvertToModelList(DataTable dt) { // 定义集合 IList<T> ts = new List<T>(); // 获得此模型的类型 Type type = typeof

File和byte[]转换

http://blog.csdn.net/commonslok/article/details/9493531 public static byte[] File2byte(String filePath) { byte[] buffer = null; try { File file = new File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new Byt

Jquery EasyUI Tree树形结构的Java实现(实体转换VO)

前一阵做的OA项目,有一个是组织架构的树,因为是分开做的,我做的是Controller和页面,其他组做的Service和Dao,因为之前一直没有商量页面用什么框架做比较好,导致,Dao层取出来的数据都不是Easyui Tree所能识别的,其实后台返回的也是树形的结构,但是他们返回来的 **id,而不是Easyui Tree所能识别的id:他们返回的是name,,而不是Easyui Tree所能识别的text,他们返回的是****,,而不是Easyui Tree所能识别的children,因为别人

这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程

之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnetpager写了一个精简实用的返回分页显示的html方法,其他话不说了,直接上代码. 分页显示信息的实体类:  public class Pager    {        private string _firstPageText;        /// <summary>        ///

Transformer-view java实体 转换视图 Lists.transform

自: https://blog.csdn.net/mnmlist/article/details/53870520 meta_ws 连接: https://github.com/kse-music/demo/blob/064663ac7251285745dc915dad4a6837f723538f/src/test/java/com/hiekn/demo/test/util/GuavaTest.java import com.google.common.base.Function; import