博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.4 xml part4
阅读量:4347 次
发布时间:2019-06-07

本文共 7334 字,大约阅读时间需要 24 分钟。

1.DiagramModel

注意:是继承自AbstractModel(功能:监听)
public class DiagramModel extends AbstractModel {
public DiagramModel() {        super();                name="";                initModel();  见下面:    }
public void initModel(){        setName("Diagram");                setDiagramDoc(DocumentHelper.createDocument());        创建document        setRootElement(getDiagramDoc().addElement(ModelType.ELE_ROOT));        setDiagramElement(getRootElement().addElement(ModelType.ELE_DIAGRAM));            setDiagramExElement(getRootElement().addElement(ModelType.ELE_DIAGRAMEX));    } 添加根元素root,并且添加root的子元素diagram和diagramex。??

1.1 doSaveXML()

public void doSaveXML() {        // TODO Auto-generated method stub                this.addDiagramAttribute(ModelType.ATR_NAME, name); 先添加属性NAME和属性值name。        getDiagramHead().doSaveXML();        getComponent().doSaveXML();                        for(int i=0;i

1.1.1  addDiagramAttribute(ModelType.ATR_NAME, name);

protected void addDiagramAttribute(String name,String value){        if(getDiagramElement()==null){            return;        }        getDiagramElement().addAttribute(name, value);    }        protected void removeDiagramAttribute(String name){        if(getDiagramElement()==null){            return;        }        Attribute atr = getDiagramElement().attribute(name);        if(atr != null){            getDiagramElement().remove(atr);        }    }

1.1.2 getDiagramHead().doSaveXML();

public DiagramHeadingModel getDiagramHead() {		return diagramHead;	}
public class DiagramHeadingModel extends ElementModel {
先定义一些属性,并且定义一个结构体        private String definition,myCtype,myReturn,mySystem,diagramType;	private boolean isRetShow,isSysShow,isRunsOnShow;	public static final String SELECT_DEF = "select_def";	public static final String SELECT_CTYPE = "select_ctype";	public static final String SELECT_RETURN = "select_return";	public static final String SELECT_SYSTEM = "select_system";	public static final String SELECT_DIAGRAM = "select_diagram";		private IPropertyDescriptor[] descriptor; 	private List
descriptorList = new ArrayList
(); private static final TextPropertyDescriptor definitionDescriptor = new TextPropertyDescriptor(SELECT_DEF,"Definition"); private static final TextPropertyDescriptor ctypeDescriptor = new TextPropertyDescriptor(SELECT_CTYPE,"runs On"); private static final TextPropertyDescriptor returnDescriptor = new TextPropertyDescriptor(SELECT_RETURN,"return"); private static final TextPropertyDescriptor systemDescriptor = new TextPropertyDescriptor(SELECT_SYSTEM,"system"); private static final PropertyDescriptor diagramDescriptor = new PropertyDescriptor(SELECT_DIAGRAM,"Diagram Type"); public DiagramHeadingModel() { super(ConstantResourceFactory.LABEL_DIAGRAMHEAD_MODEL, ConstantResourceFactory.ID_DIAGRAMHEAD_MODEL, ConstantResourceFactory.SIZE_DIAGRAMHEAD); // TODO Auto-generated constructor stub definition=""; myCtype=""; myReturn=""; mySystem=""; diagramType=""; isRetShow=false; isSysShow=false; isRunsOnShow=false; }
public IPropertyDescriptor[] getPropertyDescriptors() {		// TODO Auto-generated method stub		if(descriptor == null){			descriptorList.add(definitionDescriptor);			descriptorList.add(diagramDescriptor);			if(isRunsOnShow()){				descriptorList.add(ctypeDescriptor);			}			if(isRetShow()){				descriptorList.add(returnDescriptor);			}			if(isSysShow()){				descriptorList.add(systemDescriptor);			}			descriptor = (IPropertyDescriptor[]) descriptorList							.toArray(new IPropertyDescriptor[1]);		}							return descriptor;	}
然后保存,过程就是两步:首先继承elementModel的dosaveXML,然后添加自己的属性。public void doSaveXML() {		// TODO Auto-generated method stub		super.doSaveXML();				this.addXMLElementAttribute(ModelType.ATR_DIAGRAM,diagramType);		this.addXMLElementAttribute(ModelType.ATR_DEFINITION,definition);		if(isRunsOnShow()){			this.addXMLElementAttribute(ModelType.ATR_RUNSON,myCtype);		}		else{			this.removeXMLElementAttribute(ModelType.ATR_RUNSON);		}				if(isRetShow()){			this.addXMLElementAttribute(ModelType.ATR_RETURN,myReturn);		}		else{			this.removeXMLElementAttribute(ModelType.ATR_RETURN);		}				if(isSysShow()){			this.addXMLElementAttribute(ModelType.ATR_SYSTEM,mySystem);		}		else{			this.removeXMLElementAttribute(ModelType.ATR_SYSTEM);		}	}

1.1.3 getComponent().doSaveXML(); 

public ComponentInstanceModel getComponent() {		return component;	}
public void doSaveXML() {		// TODO Auto-generated method stub		super.doSaveXML();						for(int i=0;i

1.1.4 ((ElementModel)getPorts().get(i)).doSaveXML();

到了最重要的portelementmodel了。

public abstract class PortElementModel extends ElementModel {
定义一些属性: private static final     IPropertyDescriptor[] descriptorPort = new IPropertyDescriptor[]{        new PropertyDescriptor(SELECT_LABEL,"Model Label"),                new TextPropertyDescriptor(SELECT_NAME,"Port Name"),        new TextPropertyDescriptor(SELECT_TYPE,"Port Type"),    };
初始化: public PortElementModel(String label, String modelID, Dimension size) {        super(label, modelID, size);        // TODO Auto-generated constructor stub        name="";        type="";    }
保存: public void doSaveXML() {        // TODO Auto-generated method stub        super.doSaveXML();          this.addXMLElementAttribute(ModelType.ELE_NAME, name);        this.addXMLElementAttribute(ModelType.ELE_TYPE, type);    }

1.1.5 ((ElementModel)getTexts().get(i)).doSaveXML();

public abstract class LiteralElementModel extends ElementModel {public void doSaveXML() {        // TODO Auto-generated method stub        super.doSaveXML();    }}

1.2 DiagramModel中定义的变量

private List children = new ArrayList();    private List ports = new ArrayList();      doSaveXML()    private List texts = new ArrayList(); doSaveXML() private List containers = new ArrayList(); private List portOps = new ArrayList(); private List refers = new ArrayList(); private ComponentInstanceModel component; doSaveXML()
public ComponentInstanceModel getComponent() {        return component;    }public void setComponent(ComponentInstanceModel component) {        this.component = component;    }
private DiagramHeadingModel diagramHead;     doSaveXML()
public void setDiagramHead(DiagramHeadingModel diagramHead) {        this.diagramHead = diagramHead;    }public DiagramHeadingModel getDiagramHead() {        return diagramHead;    }
private String name;
public String getName() {        return name;    }public void setName(String name) {        this.name = name;    }
private Document diagramDoc;
public void setDiagramDoc(Document diagramDoc) {        this.diagramDoc = diagramDoc;    }public Document getDiagramDoc() {        return diagramDoc;    }
private Element rootElement,diagramElement,diagramExElement;
public void setDiagramElement(Element diagramElement) {        this.diagramElement = diagramElement;    }public Element getDiagramElement() {        return diagramElement;    }
public void setDiagramExElement(Element diagramExElement) {        this.diagramExElement = diagramExElement;    }public Element getDiagramExElement() {        return diagramExElement;    }
public void setRootElement(Element rootElement) {        this.rootElement = rootElement;    }public Element getRootElement() {        return rootElement;    }

 

 

  

  

  

  

  

  

转载于:https://www.cnblogs.com/liyuhui20093357/p/3768944.html

你可能感兴趣的文章
接口测试用例
查看>>
Sybase IQ导出文件的几种方式
查看>>
linux 系统下 tar 的压缩与解压缩命令
查看>>
转:How to force a wordbreaker to be used in Sharepoint Search
查看>>
MySQL存储过程定时任务
查看>>
Python中and(逻辑与)计算法则
查看>>
POJ 3267 The Cow Lexicon(动态规划)
查看>>
设计原理+设计模式
查看>>
tomcat 7服务器跨域问题解决
查看>>
前台实现ajax 需注意的地方
查看>>
Jenkins安装配置
查看>>
深入理解Java虚拟机&运行时数据区
查看>>
02-环境搭建
查看>>
spring第二冲刺阶段第七天
查看>>
搜索框键盘抬起事件2
查看>>
透析Java本质-谁创建了对象,this是什么
查看>>
BFS和DFS的java实现
查看>>
关于jquery中prev()和next()的用法
查看>>
一、 kettle开发、上线常见问题以及防错规范步骤
查看>>
eclipse没有server选项
查看>>