Changeset 1692 for branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment
- Timestamp:
- 08/23/14 17:19:39 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/ObjectDistanceSubstitionMatrix.java
r1687 r1692 3 3 4 4 import java.util.HashMap; 5 import java.util.HashSet; 5 6 import java.util.Iterator; 6 7 … … 11 12 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 12 13 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 13 import de.ugoe.cs.autoquest.usageprofiles.SymbolMap;14 14 15 15 16 16 public class ObjectDistanceSubstitionMatrix implements SubstitutionMatrix { 17 17 18 // private ArrayList<int[][]> matrix;19 18 HashMap<Integer, Integer> idmapping; 20 19 private TriangleMatrix matrix; 21 private SymbolMap<ITaskInstance,ITask> uniqueTasks;20 private HashSet<ITask> uniqueTasks; 22 21 private double gapPenalty; 23 22 private int index = 0; … … 26 25 27 26 public ObjectDistanceSubstitionMatrix( 28 SymbolMap<ITaskInstance,ITask> uniqueTasks,float positiveThreshold, int gapPenalty) {27 HashSet<ITask> uniqueTasks,float positiveThreshold, int gapPenalty) { 29 28 this.uniqueTasks = uniqueTasks; 30 29 this.positiveThreshold = positiveThreshold; … … 49 48 int index2=-1; 50 49 float distance=0; 51 52 //TODO: Nicht ueber Symbols sondern ueber values, wenn Eventtask -> getInstances()->get(0) 53 for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it 54 .hasNext();) { 55 Object obj1 = it.next(); 56 for (Iterator<ITaskInstance> jt = uniqueTasks.getSymbols() 57 .iterator(); jt.hasNext();) { 58 50 for (Iterator<ITask> it = uniqueTasks.iterator(); it.hasNext();) { 51 ITask task1 = it.next(); 52 for (Iterator<ITask> jt = uniqueTasks.iterator(); jt.hasNext();) { 53 ITask task2 = jt.next(); 54 ITaskInstance ti1 = null; 55 ITaskInstance ti2 = null; 56 //TODO This seems ugly 57 if(task1.getInstances().size() > 0) { 58 ti1 = (ITaskInstance) task1.getInstances().iterator().next(); 59 } 60 if(task2.getInstances().size() > 0) { 61 ti2 = (ITaskInstance) task2.getInstances().iterator().next(); 62 } 59 63 IEventTaskInstance eti1 = null; 60 I Task task1= null;64 IEventTaskInstance eti2 = null; 61 65 62 IEventTaskInstance eti2 = null;63 ITask task2 = null;64 66 65 Object obj2 = jt.next(); 66 67 if (obj1 instanceof IEventTaskInstance && obj2 instanceof IEventTaskInstance) { 68 eti1 = (IEventTaskInstance) obj1; 67 if (ti1 instanceof IEventTaskInstance && ti2 instanceof IEventTaskInstance) { 68 eti1 = (IEventTaskInstance) ti1; 69 69 index1 = getIndex(eti1); 70 eti2 = (IEventTaskInstance) obj2;70 eti2 = (IEventTaskInstance) ti2; 71 71 index2 = getIndex(eti2); 72 72 distance = distanceBetweenInstances(eti1,eti2); 73 73 } 74 else if( obj1 instanceof IEventTaskInstance && !(obj2 instanceof IEventTaskInstance)) {75 task 2 = ((ITaskInstance) obj2).getTask();74 else if(ti1 instanceof IEventTaskInstance && !(ti2 instanceof IEventTaskInstance)) { 75 task1 = ((ITaskInstance) ti1).getTask(); 76 76 index2 = getIndex(task2); 77 eti1 = (IEventTaskInstance) obj1;77 eti1 = (IEventTaskInstance) ti1; 78 78 index1 = getIndex(eti1); 79 79 distance = distanceBetweenTaskAndInstance(task2,eti1); 80 80 } 81 else if(!(obj1 instanceof IEventTaskInstance) && obj2 instanceof IEventTaskInstance) { 82 task1 = ((ITaskInstance) obj1).getTask(); 81 else if(!(ti1 instanceof IEventTaskInstance) && ti2 instanceof IEventTaskInstance) { 83 82 index1 = getIndex(task1); 84 eti2 = (IEventTaskInstance) obj2;83 eti2 = (IEventTaskInstance) ti2; 85 84 index2 = getIndex(eti2); 86 85 distance = distanceBetweenTaskAndInstance(task1,eti2); 87 86 } 88 else if(!(obj2 instanceof IEventTaskInstance) && !(obj2 instanceof IEventTaskInstance)) { 89 task1 = ((ITaskInstance) obj1).getTask(); 87 else if(!(ti1 instanceof IEventTaskInstance) && !(ti2 instanceof IEventTaskInstance)) { 90 88 index1 = getIndex(task1); 91 task2 = ((ITaskInstance) obj2).getTask();92 89 index2 = getIndex(task2); 93 90 distance = distanceBetweenTasks(task1,task2); … … 103 100 } 104 101 105 102 //TODO: Calculate distance here 106 103 private float distanceBetweenTaskAndInstance(ITask task1, IEventTaskInstance eti) { 107 104 return 0; 108 105 } 109 106 107 //TODO: Calculate distance here 110 108 private float distanceBetweenTasks(ITask task1, ITask task2) { 111 109 return 0; … … 158 156 } 159 157 else { 160 System.out.println("Firsttask: " +taskId1); 161 System.out.println("Secondtask: " + taskId2); 162 System.out.println(idmapping); 158 163 159 Integer first = idmapping.get(taskId1); 164 160 Integer second = idmapping.get(taskId2); 165 System.out.println("First: " + first + " Second: " + second);166 System.out.println("Matrix: " + matrix.get(first, second));167 161 return matrix.get(first,second); 168 162 }
Note: See TracChangeset
for help on using the changeset viewer.