/* Edge *****************/
public class ScheduleEdge extends Edge {
+
+ private int uid;
+ private int gid;
+ private static int nodeID=0;
private String label;
private final ClassDescriptor cd;
/** Class Constructor
*
*/
- public ScheduleEdge(ScheduleNode target, String label, ClassDescriptor cd) {
+ public ScheduleEdge(ScheduleNode target, String label, ClassDescriptor cd, int gid) {
super(target);
+ this.uid = ScheduleEdge.nodeID++;
+ this.gid = gid;
this.fedge = null;
this.targetFState = null;
this.sourceCNode = null;
this.listExeTime = -1;
}
- public ScheduleEdge(ScheduleNode target, String label, ClassDescriptor cd, boolean isNew) {
+ public ScheduleEdge(ScheduleNode target, String label, ClassDescriptor cd, boolean isNew, int gid) {
super(target);
+ this.uid = ScheduleEdge.nodeID++;
+ this.gid = gid;
this.fedge = null;
this.targetFState = null;
this.sourceCNode = null;
return completeLabel;
}
- public int hashCode(){
- return target.hashCode()^label.hashCode();
- }
-
public ClassDescriptor getClassDescriptor() {
return cd;
}
public boolean equals(Object o) {
if (o instanceof ScheduleEdge) {
ScheduleEdge e=(ScheduleEdge)o;
+ if(e.gid == this.gid) {
+ if(e.uid != this.uid) {
+ return false;
+ }
+ }
if ((e.label.equals(label))&&
(e.target.equals(target))&&
(e.source.equals(source)) &&
- (e.cd.equals(cd)) &&
- (e.fedge.equals(fedge)) &&
+ (e.cd.equals(cd)) &&
(e.sourceCNode.equals(sourceCNode)) &&
(e.targetCNode.equals(targetCNode)) &&
(e.newRate == newRate) &&
(e.transTime == transTime) &&
(e.listExeTime == listExeTime))
if(e.targetFState != null) {
- return e.targetFState.equals(targetFState);
- } else if(this.targetFState == null) {
- return true;
- } else {
+ if(!e.targetFState.equals(targetFState)) {
+ return false;
+ }
+ } else if(this.targetFState != null) {
return false;
- }
+ }
+ if(e.fedge != null) {
+ return e.fedge.equals(fedge);
+ } else if(this.fedge == null) {
+ return true;
+ }
}
return false;
}
+ public int hashCode(){
+ int hashcode = gid^uid^label.hashCode()^target.hashCode()^source.hashCode()^cd.hashCode()^
+ sourceCNode.hashCode()^targetCNode.hashCode()^newRate^probability^
+ Boolean.toString(isNew).hashCode()^transTime^listExeTime;
+ if(targetFState != null) {
+ hashcode ^= targetFState.hashCode();
+ }
+ if(fedge != null) {
+ hashcode ^= fedge.hashCode();
+ }
+ return hashcode;
+ }
+
public void setProbability(int prob) {
this.probability = prob;
}