View Javadoc

1   /*
2    * ToolModel.java
3    *
4    * Created on 20. april 2005, 21:49
5    */
6   
7   package com.vikash.firsttool.ProfileImpl;
8   
9   import javax.swing.tree.DefaultMutableTreeNode;
10  import javax.swing.undo.*;
11  import java.util.*;
12  import org.jgraph.graph.DefaultGraphModel;
13  import org.jgraph.graph.DefaultGraphCell;
14  import org.jgraph.graph.Edge;
15  import org.jgraph.graph.Port;
16  import org.jgraph.graph.GraphConstants;
17  import org.jgraph.event.GraphModelListener;
18  import org.jgraph.event.GraphModelEvent;
19  import org.jgraph.graph.*;
20  /***
21   *
22   * @author  studajb
23   */
24  
25  public class ToolModel extends DefaultGraphModel {
26      DefaultMutableTreeNode source,target;
27      Object sourcenode;
28      String edgetype,selected;
29      static ToolModel instance;
30      
31      public static ToolModel getInstance(boolean newProject){
32          if(newProject){ // for every new project create a new model
33              instance=null;
34          }
35          
36          if(instance==null)
37              instance=new ToolModel();
38          return instance;
39      }
40      
41      
42      // check whether two type of diagram elements can be connected
43      public boolean acceptsSource(Object edge,Object port,String edgetype,String selected){
44          
45          sourcenode=port;
46          this.edgetype=edgetype; // types of edges( association,uniassociation,dependency)
47          this.selected=selected; // mainly used for dependency which has different types namely ownership,transfer, avoid etc.
48          return (((Edge)edge).getTarget()!=port);
49      }
50      
51      public boolean acceptsTarget(Object edge,Object port){
52          
53          
54          return(((Edge)edge).getSource()!=port && validSourceTarget(sourcenode,port));
55      }
56      
57      
58      public boolean validSourceTarget(Object node1,Object node2){
59          source=(DefaultMutableTreeNode)node1;
60          target=(DefaultMutableTreeNode)node2;
61          if(source!=null && target!=null){
62              Object[] sourcelabels=GraphConstants.getExtraLabels(((DefaultGraphCell)source.getParent()).getAttributes());
63              Object[] targetlabels=GraphConstants.getExtraLabels(((DefaultGraphCell)target.getParent()).getAttributes());
64              Object sourcecell=String.valueOf(sourcelabels[0]);
65              Object targetcell=String.valueOf(targetlabels[0]);
66              if(edgetype=="uniassociation"){
67                  if(sourcecell.equals("Stakeholder")||sourcecell.equals("EnterpriseAsset")){
68                      if(targetcell.equals("EnterpriseStrength")||targetcell.equals("EnterpriseWeakness")
69                      ||targetcell.equals("EnterpriseOpportunity")||targetcell.equals("EnterpriseThreat")) {
70                          return true;
71                      }
72                      else
73                          return false;
74                  }
75                  else if(sourcecell.equals("EnterpriseStrength")||sourcecell.equals("EnterpriseWeakness")
76                  ||sourcecell.equals("EnterpriseOpportunity")||sourcecell.equals("EnterpriseThreat")){
77                      if(targetcell.equals("EnterpriseAsset")||targetcell.equals("Stakeholder")){
78                          return true;
79                      }
80                      else
81                          return false;
82                  }
83                  else if(sourcecell.equals("UnwantedIncident")){
84                      if(targetcell.equals("Asset"))
85                          return true;
86                      else
87                          return false;
88                  }
89                  else if(sourcecell.equals("ThreatScenario")){
90                      if(targetcell.equals("Asset")||targetcell.equals("Attacker")||targetcell.equals("Intruder")||targetcell.equals("Eavesdropper")||targetcell.equals("Man-in-the-Middle")
91                      ||targetcell.equals("Insider")||targetcell.equals("HardwareFailure")||targetcell.equals("SoftwareFailure")||targetcell.equals("Virus")
92                      ||targetcell.equals("Worm")||targetcell.equals("Zoombie")||targetcell.equals("TrojanHorse")||targetcell.equals("LogicalBomb")||targetcell.equals("TrapDoor"))
93                          return true;
94                      else
95                          return false;
96                  }
97                  else if(sourcecell.equals("Asset")) {
98                      if(targetcell.equals("UnwantedIncident")|| targetcell.equals("ThreatScenario"))
99                          return true;
100                     else
101                         return false;
102                     
103                 }
104                 else if(sourcecell.equals("Asset")||sourcecell.equals("Attacker")||sourcecell.equals("Intruder")||sourcecell.equals("Eavesdropper")||sourcecell.equals("Man-in-the-Middle")
105                 ||sourcecell.equals("Insider")||sourcecell.equals("HardwareFailure")||sourcecell.equals("SoftwareFailure")||sourcecell.equals("Virus")
106                 ||sourcecell.equals("Worm")||sourcecell.equals("Zoombie")||sourcecell.equals("TrojanHorse")||sourcecell.equals("LogicalBomb")||sourcecell.equals("TrapDoor")){
107                     if(targetcell.equals("ThreatScenario"))
108                         return true;
109                     else
110                         return false;
111                 }
112                 else return false;
113                 
114             }
115             else if(edgetype=="association"){
116                 if(sourcecell.equals("Asset")){
117                     if(targetcell.equals("Entity"))
118                         return true;
119                     else
120                         return false;
121                     
122                 }
123                 else if(sourcecell.equals("Risk")){
124                     if(targetcell.equals("Asset"))
125                         return true;
126                     else
127                         return false;
128                     
129                 }
130                 else if(sourcecell.equals("TreatmentEffect")){
131                     if(targetcell.equals("Risk"))
132                         return true;
133                     else
134                         return false;
135                     
136                 }
137                 else return false;
138             }
139             else if(edgetype=="dependency"){
140                 if(sourcecell.equals("Stakeholder")&& selected=="Ownership"){
141                     if(targetcell.equals("Asset"))
142                         return true;
143                     else
144                         return false;
145                 }
146                 else if(sourcecell.equals("UnwantedIncident")&& selected=="Initiate"){
147                     if(targetcell.equals("UnwantedIncident"))
148                         return true;
149                     else
150                         return false;
151                 }
152                 else if(sourcecell.equals("UnwantedIncident")&& selected=="Include"){
153                     if(targetcell.equals("ThreatScenario"))
154                         return true;
155                     else
156                         return false;
157                 }
158                 else if(sourcecell.equals("Risk")&& selected=="RiskEvaluation"){
159                     if(targetcell.equals("UnwantedIncident"))
160                         return true;
161                     else
162                         return false;
163                 }
164                 else if(sourcecell.equals("Treatment")){
165                     if(targetcell.equals("UnwantedIncident"))
166                         return true;
167                     else
168                         return false;
169                 }
170                 else if(sourcecell.equals("TreatmentEffect")&& selected=="TreatmentEvaluation"){
171                     if(targetcell.equals("Treatment"))
172                         return true;
173                     else
174                         return false;
175                 }
176                 else
177                     return false;
178             }
179             
180             else
181                 return false;
182         }
183         return true;
184     }
185     
186 }