Ignore:
Timestamp:
07/25/13 14:54:32 (11 years ago)
Author:
pharms
Message:
  • performance improvements to be able to parse larger amounts of log files at once
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/AbstractDefaultLogParser.java

    r1247 r1265  
    2323import java.util.Collection; 
    2424import java.util.HashMap; 
     25import java.util.Iterator; 
    2526import java.util.LinkedList; 
    2627import java.util.List; 
     
    129130    public AbstractDefaultLogParser() { 
    130131        sequences = new LinkedList<List<Event>>(); 
    131         guiElementTree = new GUIElementTree<String>(); 
     132        guiElementTree = new GUIElementTree<String>(new GUIModel(false)); 
    132133        guiElementBuffer = new LinkedList<BufferEntry>(); 
    133134        eventBuffer = new LinkedList<BufferEntry>(); 
     
    192193        } 
    193194         
     195        // we parse a new file. So clear the buffers. 
     196        guiElementBuffer.clear(); 
     197        eventBuffer.clear(); 
     198         
    194199        if (inputSource != null) { 
    195200            inputSource.setSystemId("file://" + file.getAbsolutePath()); 
     
    219224            } 
    220225        } 
     226         
     227        if (guiElementBuffer.size() > 0) { 
     228            Console.println(guiElementBuffer.size() + " GUI elements not processed"); 
     229        } 
     230         
     231        if (eventBuffer.size() > 0) { 
     232            Console.printerrln(eventBuffer.size() + " events not processed"); 
     233        } 
    221234    } 
    222235 
     
    300313        } 
    301314        else if (qName.equals("component") && (currentGUIElementId != null)) { 
    302             guiElementBuffer.add(new BufferEntry(currentGUIElementId, currentParameters)); 
     315            guiElementBuffer.add(0, new BufferEntry(currentGUIElementId, currentParameters)); 
    303316 
    304317            processGUIElements(); 
     
    385398        do { 
    386399            processedElement = false; 
    387             // search for the next GUI element that can be processed 
    388             for (int i = 0; i < guiElementBuffer.size(); i++) { 
    389                 BufferEntry entry = guiElementBuffer.get(i); 
     400             
     401            // search for the next GUI element that can be processed (use an iterator on the  
     402            // linked list, as this is most effective) 
     403            Iterator<BufferEntry> iterator = guiElementBuffer.iterator(); 
     404            while (iterator.hasNext()) { 
     405                BufferEntry entry = iterator.next(); 
    390406                processedElement = handleGUIElement(entry.id, entry.parameters); 
     407 
    391408                if (processedElement) { 
    392                     guiElementBuffer.remove(i); 
     409                    iterator.remove(); 
    393410                    processedElements++; 
    394411                    break; 
     
    421438                 
    422439                if ((entry != null) && (entry.id != null) && (entry.parameters != null)) { 
     440                     
    423441                    processedEvent = handleEvent(entry.id, entry.parameters); 
     442 
    424443                    if (processedEvent) { 
    425444                        eventBuffer.remove(0); 
Note: See TracChangeset for help on using the changeset viewer.