6.4 xml part4
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<getPorts().size();i++){ ((ElementModel)getPorts().get(i)).doSaveXML(); } for(int i=0;i<getTexts().size();i++){ ((ElementModel)getTexts().get(i)).doSaveXML(); } }
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<IPropertyDescriptor> descriptorList = new ArrayList<IPropertyDescriptor>();
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<children.size();i++){
((ElementModel)children.get(i)).doSaveXML();
}
if(tail!=null)
tail.doSaveXML();
}
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<Object> children = new ArrayList<Object>(); private List<Object> ports = new ArrayList<Object>(); doSaveXML() private List<Object> texts = new ArrayList<Object>(); doSaveXML() private List<Object> containers = new ArrayList<Object>(); private List<Object> portOps = new ArrayList<Object>(); private List<Object> refers = new ArrayList<Object>(); 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; }
浙公网安备 33010602011771号