Ignore:
Timestamp:
10/20/15 10:16:11 (9 years ago)
Author:
pharms
Message:
  • changed creation of smell tree
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ShowUsabilityEvaluationResultDialog.java

    r1920 r2047  
    2222import java.util.LinkedList; 
    2323import java.util.List; 
     24import java.util.ListIterator; 
    2425import java.util.Map; 
    2526 
     
    215216     */ 
    216217    private void buildSmellTree() { 
     218        int groupCount = 5; 
     219        int groupSize = 30; 
     220         
    217221        List<UsabilitySmell> smells = usabilityEvalResult.getAllSmells(); 
    218          
    219         int[] eventCoverageQuantileGroups = { 990, 975, 950, 0, -1 }; 
    220         int[] minEventCoverages = new int[eventCoverageQuantileGroups.length]; 
    221         int[] maxEventCoverages = new int[eventCoverageQuantileGroups.length]; 
    222  
    223         final List<Map<String, List<UsabilitySmell>>> sortedSmells = 
    224             new LinkedList<Map<String, List<UsabilitySmell>>>(); 
    225          
    226         for (int i = 0; i < eventCoverageQuantileGroups.length; i++) { 
    227             sortedSmells.add(new HashMap<String, List<UsabilitySmell>>()); 
    228         } 
    229          
     222 
     223        final Map<String, List<UsabilitySmell>> sortedSmells = new HashMap<>(); 
     224 
    230225        for (UsabilitySmell smell : smells) { 
    231             int eventCoverageQuantile = smell.getIntensity().getEventCoverageQuantile(); 
    232              
    233             for (int i = 0; i < eventCoverageQuantileGroups.length; i++) { 
    234                 if (eventCoverageQuantile >= eventCoverageQuantileGroups[i]) { 
    235                     Map<String, List<UsabilitySmell>> smellMap = sortedSmells.get(i); 
    236                      
    237                     List<UsabilitySmell> smellList = smellMap.get(smell.getBriefDescription()); 
    238                      
    239                     if (smellList == null) { 
    240                         smellList = new ArrayList<UsabilitySmell>(); 
    241                         smellMap.put(smell.getBriefDescription(), smellList); 
    242                     } 
     226            List<UsabilitySmell> smellList = sortedSmells.get(smell.getBriefDescription()); 
     227                     
     228            if (smellList == null) { 
     229                smellList = new ArrayList<UsabilitySmell>(); 
     230                sortedSmells.put(smell.getBriefDescription(), smellList); 
     231            } 
     232             
     233            ListIterator<UsabilitySmell> it = smellList.listIterator(); 
     234            boolean added = false; 
     235             
     236            while (it.hasNext()) { 
     237                if (smell.getIntensity().getEventCoverage() > 
     238                    it.next().getIntensity().getEventCoverage()) 
     239                { 
     240                    it.previous(); 
     241                    it.add(smell); 
     242                    added = true; 
     243                    break; 
     244                } 
     245            } 
     246             
     247            if (!added) { 
     248                smellList.add(smell); 
     249            } 
     250        } 
     251 
     252        final Map<Integer, Map<String, List<UsabilitySmell>>> allSortedSmells = 
     253            new HashMap<Integer, Map<String, List<UsabilitySmell>>>(); 
     254         
     255        for (Map.Entry<String, List<UsabilitySmell>> entry : sortedSmells.entrySet()) { 
     256            // we create groupCount groups of size groupSize 
     257            int overallIndex = 0; 
     258             
     259            for (int i = 0; i < groupCount; i++) { 
     260                List<UsabilitySmell> smellList = new LinkedList<>(); 
     261                for (int j = 0; overallIndex < entry.getValue().size() && 
     262                                ((j < groupSize) || (i == (groupCount - 1))); j++) 
     263                { 
     264                    UsabilitySmell smell = entry.getValue().get(overallIndex++); 
    243265                     
    244266                    int ratio = smell.getIntensity().getRatio(); 
     
    258280                     
    259281                    smellList.add(index, smell); 
     282                } 
     283                 
     284                if (smellList.size() > 0) { 
     285                    Map<String, List<UsabilitySmell>> smellGroups = allSortedSmells.get(i); 
     286                     
     287                    if (smellGroups == null) { 
     288                        smellGroups = new HashMap<>(); 
     289                        allSortedSmells.put(i, smellGroups); 
     290                    } 
     291                     
     292                    smellGroups.put(entry.getKey(), smellList); 
     293                } 
     294            } 
     295        } 
     296         
     297        if (smellList.getListeners(SWT.Expand).length == 0) { 
     298            smellList.addListener(SWT.Expand, new Listener() { 
     299               public void handleEvent(final Event event) { 
     300                   ensureChildren((TreeItem) event.item); 
     301                   ((TreeItem) event.item).setExpanded(true); 
     302               } 
     303           }); 
     304        } 
     305 
     306        for (int i = 0; i < allSortedSmells.size(); i++) { 
     307            createRootItem("smells group " + (i + 1), allSortedSmells.get(i)); 
     308        } 
     309         
     310    } 
     311 
     312    /** 
     313     * convenience method for creating the display of the instances 
     314     */ 
     315    /*private void buildSmellTree() { 
     316        List<UsabilitySmell> smells = usabilityEvalResult.getAllSmells(); 
     317         
     318        int[] eventCoverageQuantileGroups = { 990, 975, 950, 0, -1 }; 
     319        int[] minEventCoverages = new int[eventCoverageQuantileGroups.length]; 
     320        int[] maxEventCoverages = new int[eventCoverageQuantileGroups.length]; 
     321 
     322        final List<Map<String, List<UsabilitySmell>>> sortedSmells = 
     323            new LinkedList<Map<String, List<UsabilitySmell>>>(); 
     324         
     325        for (int i = 0; i < eventCoverageQuantileGroups.length; i++) { 
     326            sortedSmells.add(new HashMap<String, List<UsabilitySmell>>()); 
     327        } 
     328         
     329        for (UsabilitySmell smell : smells) { 
     330            int eventCoverageQuantile = smell.getIntensity().getEventCoverageQuantile(); 
     331             
     332            for (int i = 0; i < eventCoverageQuantileGroups.length; i++) { 
     333                if (eventCoverageQuantile >= eventCoverageQuantileGroups[i]) { 
     334                    Map<String, List<UsabilitySmell>> smellMap = sortedSmells.get(i); 
     335                     
     336                    List<UsabilitySmell> smellList = smellMap.get(smell.getBriefDescription()); 
     337                     
     338                    if (smellList == null) { 
     339                        smellList = new ArrayList<UsabilitySmell>(); 
     340                        smellMap.put(smell.getBriefDescription(), smellList); 
     341                    } 
     342                     
     343                    int ratio = smell.getIntensity().getRatio(); 
     344                    int eventCoverage = smell.getIntensity().getEventCoverage(); 
     345                    int index = 0; 
     346                    for (index = 0; index < smellList.size(); index++) { 
     347                        UsabilitySmellIntensity candidate = smellList.get(index).getIntensity(); 
     348                        if ((ratio == candidate.getRatio()) && 
     349                            (eventCoverage > candidate.getEventCoverage())) 
     350                        { 
     351                            break; 
     352                        } 
     353                        else if (ratio > candidate.getRatio()) { 
     354                            break; 
     355                        } 
     356                    } 
     357                     
     358                    smellList.add(index, smell); 
    260359                     
    261360                    if (minEventCoverages[i] == 0) { 
Note: See TracChangeset for help on using the changeset viewer.