uimanager.java

来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 107 行

JAVA
107
字号
package anni.ui;

import java.io.*;

import java.util.*;

import anni.model.*;


public class UIManager {
    private Map<String, TableModel> tableModels = new HashMap<String, TableModel>();
    private List<FkModel> fkModels = new ArrayList<FkModel>();
    private TableUI tableUI = new TableUI();
    private FkUI fkUI = new FkUI();

    public void setTableModels(Map<String, TableModel> tableModels) {
        this.tableModels = tableModels;
    }

    public void setFkModels(List<FkModel> fkModels) {
        this.fkModels = fkModels;
    }

    // render
    public void render(String fileName) {
        try {
            PrintWriter out = new PrintWriter(new OutputStreamWriter(
                        new FileOutputStream(fileName), "utf-8"));

            renderHead(out);
            renderScripts(out);
            renderDefs(out);
            renderBody(out);
            renderFoot(out);

            out.flush();
            out.close();
        } catch (Exception ex) {
        }
    }

    public void renderHead(PrintWriter out) {
        out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
        out.println(
            "<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>");
        out.println(
            "<svg xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg' width='1000' height='700' viewBox='0 0 1000 700'  onmousemove='doDrag(evt)'>");
    }

    public void renderScripts(PrintWriter out) {
        out.println(
            "    <script type='text/ecmascript' xlink:href='er.js'/>");
        out.println("    <script type='text/ecmascript'>");
        out.println("    <![CDATA[");

        for (TableModel tableModel : tableModels.values()) {
            tableUI.renderScripts(tableModel, out);
        }

        out.println();

        for (FkModel fkModel : fkModels) {
            fkUI.renderScripts(fkModel, out);
        }

        out.println("    ]]>");
        out.println("    </script>");
    }

    public void renderDefs(PrintWriter out) {
        out.println("    <defs>");

        for (TableModel tableModel : tableModels.values()) {
            tableUI.renderDefs(tableModel, out);
        }

        for (FkModel fkModel : fkModels) {
            fkUI.renderDefs(fkModel, out);
        }

        out.println("    </defs>");
    }

    public void renderBody(PrintWriter out) {
        for (TableModel tableModel : tableModels.values()) {
            tableUI.renderBody(tableModel, out);
        }

        for (FkModel fkModel : fkModels) {
            fkUI.renderBody(fkModel, out);
        }
    }

    public void renderFoot(PrintWriter out) {
        out.println("</svg>");
    }

    // static
    public static UIManager createUIManager(ModelManager modelManager) {
        UIManager uiManager = new UIManager();
        uiManager.setTableModels(modelManager.getTableModels());
        uiManager.setFkModels(modelManager.getFkModels());

        return uiManager;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?