Ignore:
Timestamp:
08/23/12 10:42:41 (12 years ago)
Author:
sherbold
Message:
  • started changing the similarity structure of the GUI model. The equality is now absolute (i.e., boolean instead of an int indicating the degree). Also, lists of equally observed name/hash combinations are now stored. There still seem to be mistakes, however, the structural changes to the interfaces warrant a commit.
Location:
trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/GUIModel.java

    r576 r589  
    88 
    99import java.util.ArrayList; 
     10import java.util.LinkedList; 
    1011import java.util.List; 
    1112 
     
    106107        IGUIElementSpec specToIntegrateElementFor = remainingPath.remove(0); 
    107108         
    108         List<TreeNode> matchingChildren = new ArrayList<TreeNode>(); 
    109         int maximumSimilarity = 0; 
     109        List<TreeNode> matchingChildren = new LinkedList<TreeNode>(); 
    110110         
    111111        if (parentNode.children != null) { 
    112112            for (TreeNode child : parentNode.children) { 
    113                 int similarityLevel = getSimilarityLevel 
    114                     (specToIntegrateElementFor, child.guiElement.getSpecification()); 
    115                  
    116                 if (similarityLevel >= maximumSimilarity) { 
    117                     if (maximumSimilarity == 100) { 
    118                         throw new GUIModelException 
    119                           ("several children of gui element " + parentNode.guiElement + 
    120                            " pretend to fully match specification " + specToIntegrateElementFor); 
    121                     } 
    122                      
    123                     if (maximumSimilarity != similarityLevel) { 
    124                         matchingChildren.clear(); 
    125                         maximumSimilarity = similarityLevel; 
    126                     } 
    127                      
     113                if( specToIntegrateElementFor.getSimilarity(child.guiElement.getSpecification())) { 
    128114                    matchingChildren.add(child); 
    129115                } 
    130116            } 
    131         } 
    132          
    133         // we do not see something as matching if the similarity level is below 80% 
    134         if (maximumSimilarity < 80) { 
    135             matchingChildren.clear(); 
    136117        } 
    137118         
     
    150131         
    151132        if (remainingPath.size() > 0) { 
     133            // TODO update spec here matchingChildren.get(0).guiElement 
     134            matchingChildren.get(0).guiElement.updateSpecification(specToIntegrateElementFor); 
    152135            return integratePath(matchingChildren.get(0), remainingPath, guiElementFactory); 
    153136        } 
    154137        else { 
    155138            return matchingChildren.get(0).guiElement; 
    156         } 
    157     } 
    158  
    159     /** 
    160      * <p> 
    161      * TODO: comment 
    162      * </p> 
    163      * 
    164      * @param spec1 
    165      * @param spec2 
    166      * @return 
    167      * @throws GUIModelException  
    168      */ 
    169     private int getSimilarityLevel(IGUIElementSpec spec1, IGUIElementSpec spec2) 
    170         throws GUIModelException 
    171     { 
    172         if (spec1 == spec2) { 
    173             return 100; 
    174         } 
    175         else if (spec1 != null) { 
    176             int level = spec1.getSimilarity(spec2); 
    177              
    178             if ((level < 0) || (100 < level)) { 
    179                throw new GUIModelException("invalid tree node similarity provided (" + level + 
    180                                            "). Must be between 0 and 100.");  
    181             } 
    182              
    183             return level; 
    184         } 
    185         else { 
    186             return 0; 
    187139        } 
    188140    } 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/IGUIElement.java

    r576 r589  
    3232     */ 
    3333    public int hashCode(); 
     34 
     35    public void updateSpecification(IGUIElementSpec specToIntegrateElementFor); 
    3436} 
  • trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/guimodel/IGUIElementSpec.java

    r576 r589  
    3333     * @return 
    3434     */ 
    35     public int getSimilarity(IGUIElementSpec otherParameters); 
     35    public boolean getSimilarity(IGUIElementSpec otherParameters); 
    3636 
    3737    /** 
Note: See TracChangeset for help on using the changeset viewer.