Ignore:
Timestamp:
05/23/14 21:54:40 (10 years ago)
Author:
rkrimmel
Message:

Moved alignment plugin into core-tasktrees

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/ObjectDistanceSubstitionMatrix.java

    r1553 r1554  
    33import java.util.ArrayList; 
    44import java.util.Collection; 
     5import java.util.HashMap; 
    56import java.util.Iterator; 
    67 
     
    1314import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.AlignmentHelpers; 
    1415import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
     16import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 
    1518import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 
     19import de.ugoe.cs.autoquest.usageprofiles.SymbolMap; 
    1620import de.ugoe.cs.util.console.GlobalDataContainer; 
    1721 
    1822public class ObjectDistanceSubstitionMatrix implements SubstitutionMatrix { 
    1923 
    20         private ArrayList<int[][]> matrix; 
    21         private int currentSequence; 
    22          
    23          
    24         public ObjectDistanceSubstitionMatrix() { 
    25                 currentSequence = 0; 
    26                 matrix = new ArrayList<int[][]>(); 
    27         } 
    28          
    29         @Override 
    30         public String info() { 
    31                 // TODO Auto-generated method stub 
    32                 return null; 
     24        // private ArrayList<int[][]> matrix; 
     25        HashMap<Integer, Integer> idmapping; 
     26        private TriangleMatrix matrix; 
     27        private SymbolMap<ITaskInstance, ITask> uniqueTasks; 
     28 
     29        public ObjectDistanceSubstitionMatrix( 
     30                        SymbolMap<ITaskInstance, ITask> uniqueTasks) { 
     31                this.uniqueTasks = uniqueTasks; 
     32                idmapping = new HashMap<Integer, Integer>(); 
     33                matrix = new TriangleMatrix(uniqueTasks.size()+1); 
    3334        } 
    3435 
    3536        @Override 
    36         public double getDistance(int pos1, int pos2) { 
    37                 // TODO Auto-generated method stub 
    38                  
    39                 return matrix.get(currentSequence)[pos1][pos2]; 
    40         } 
    41          
    42         public double getDistance(int sequence, int pos1, int pos2) { 
    43                 return  matrix.get(sequence)[pos1][pos2]; 
    44                  
    45                  
    46         } 
    47  
    48         @Override 
    49         public double getGapPenalty() { 
     37        public float getGapPenalty() { 
    5038                // TODO Auto-generated method stub 
    5139                return 0; 
     
    5341 
    5442        @Override 
    55         public void generate(List<IUserSession> sessions) { 
    56                  
    57                 for(Iterator it = sessions.iterator(); it.hasNext();) { 
    58                         IUserSession session = (IUserSession) it.next(); 
    59                         matrix.add(new int[sessions.size()][sessions.size()]); 
    60                  
    61                          
    62                         for (int i=0; i < session.size(); i++) { 
    63                                 for (int j=0; j < session.size(); j++) { 
    64                                         //TODO Check if ITaskInstance is of type IEventTaskInstance  
    65                                         IEventTaskInstance eti1 = (IEventTaskInstance) session.get(i); 
    66                                         IEventTaskInstance eti2 = (IEventTaskInstance) session.get(j); 
    67                                         IGUIElement first = (IGUIElement) eti1.getEvent().getTarget(); 
    68                                         IGUIElement second =(IGUIElement) eti2.getEvent().getTarget(); 
    69                                         matrix.get(currentSequence)[i][j] = AlignmentHelpers.distanceBetween(first, second); 
     43        public void generate() { 
     44                int i = 0; 
     45                for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it 
     46                                .hasNext();) { 
     47                        Object obj1 = it.next(); 
     48                        IEventTaskInstance eti1 = null; 
     49                        if (obj1 instanceof IEventTaskInstance) { 
     50                                eti1 = (IEventTaskInstance) obj1; 
     51                        } 
     52                        int j = 0; 
     53                        for (Iterator<ITaskInstance> jt = uniqueTasks.getSymbols() 
     54                                        .iterator(); jt.hasNext();) { 
     55                                IEventTaskInstance eti2 = null; 
     56                                Object obj2 = jt.next(); 
     57                                if (obj2 instanceof IEventTaskInstance) { 
     58                                        eti2 = (IEventTaskInstance) obj2; 
    7059                                } 
    71                         }                        
     60                                IGUIElement first = (IGUIElement) eti1.getEvent().getTarget(); 
     61                                IGUIElement second = (IGUIElement) eti2.getEvent().getTarget(); 
     62                                idmapping.put(eti1.getTask().getId(), i); 
     63                                idmapping.put(eti2.getTask().getId(), j); 
     64                                matrix.set(i, j, AlignmentHelpers.distanceBetween(first, second)); 
     65                                j++; 
     66                        } 
     67                        i++; 
    7268                } 
    7369        } 
     70 
     71        @Override 
     72        public float getDistance(int taskId1, int taskId2) { 
     73                return matrix.get(idmapping.get(taskId1),idmapping.get(taskId2)); 
     74        } 
     75 
    7476} 
     77 
Note: See TracChangeset for help on using the changeset viewer.