1
2
3
4
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){
33 instance=null;
34 }
35
36 if(instance==null)
37 instance=new ToolModel();
38 return instance;
39 }
40
41
42
43 public boolean acceptsSource(Object edge,Object port,String edgetype,String selected){
44
45 sourcenode=port;
46 this.edgetype=edgetype;
47 this.selected=selected;
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 }