Ignore:
Timestamp:
11/07/14 12:55:16 (10 years ago)
Author:
funger
Message:
  • add type hierarchy
Location:
trunk/autoquest-plugin-android/src/main/java/de/ugoe/cs/autoquest/plugin/android
Files:
2 edited

Legend:

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

    r1803 r1815  
    3939 
    4040import de.ugoe.cs.autoquest.eventcore.Event; 
     41import de.ugoe.cs.autoquest.eventcore.gui.CharacterTyped; 
    4142import de.ugoe.cs.autoquest.eventcore.gui.IInteraction; 
    42 import de.ugoe.cs.autoquest.eventcore.gui.MouseButtonInteraction; 
    43 import de.ugoe.cs.autoquest.eventcore.gui.MouseClick; 
     43import de.ugoe.cs.autoquest.eventcore.gui.TouchSingle; 
    4444import de.ugoe.cs.autoquest.eventcore.guimodel.GUIElementTree; 
    4545import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; 
     
    5353 * <p> 
    5454 * This class provides functionality to parse XML log files generated by the 
    55  * AndroidMonitor of autoquest. The result of parsing a file is a collection of 
     55 * AndroidMonitor of AutoQUEST. The result of parsing a file is a collection of 
    5656 * event sequences. 
    5757 * </p> 
     
    136136         */ 
    137137        private List<Event> currentSequence; 
    138  
    139138         
     139        /** 
     140     * <p> 
     141     * internal handle to the class ancestors 
     142     * </p> 
     143     */ 
     144    private List<String> currentTypeHierarchy;   
    140145 
    141146        /** 
     
    332337                        } 
    333338                } 
    334  
    335                 // TODO add hierarchy information if available -> Up to know gathering 
    336                 // this information leads to an out of memory exception in the 
    337                 // androidmonitor @see: AndroidmonitorLogFile#addComponent 
     339                else if (qName.equals("ancestor")) { 
     340            currentTypeHierarchy.add(atts.getValue("name")); 
     341        } 
     342        else if (qName.equals("ancestors")) { 
     343            currentTypeHierarchy = new LinkedList<String>(); 
     344        } 
    338345        } 
    339346 
     
    355362                        } 
    356363                } 
    357                 if (qName.equals("component") && currentGUIElementHash != null) { 
     364                else if (qName.equals("ancestors")) { 
     365            currentGUIElementSpec.setTypeHierarchy(currentTypeHierarchy); 
     366        } 
     367                else if (qName.equals("component") && currentGUIElementHash != null) { 
    358368                        try { 
    359369                                currentGUIElementTree.add(currentGUIElementHash, 
     
    367377                        currentGUIElementHash = null; 
    368378                        currentParentHash = null; 
    369                 } else if (currentEventId != null && qName.equals("event")) { 
     379                        currentTypeHierarchy = null; 
     380                }  
     381                else if (currentEventId != null && qName.equals("event")) { 
    370382 
    371383                        IGUIElement currentGUIElement; 
     
    415427                switch (event) { 
    416428                case "onClick": 
    417                         /* 
    418                          * due to the reason that android uses float instead of integer it 
    419                          * is necessary to parse the float values to integer values 
    420                          * this is simply done by removing the dot 
    421                          */ 
    422  
    423                         int x = Integer.parseInt(currentEventParameters.get("X").replace(".", "")); 
    424                         int y = Integer.parseInt(currentEventParameters.get("Y").replace(".", "")); 
    425                         MouseButtonInteraction.Button button = null; 
    426                         button = MouseButtonInteraction.Button.LEFT; 
    427  
    428                         return new MouseClick(button, x, y); 
    429  
     429                         
     430                        float x = Float.parseFloat(currentEventParameters.get("X")); 
     431                        float y = Float.parseFloat(currentEventParameters.get("Y")); 
     432                         
     433                        return new TouchSingle(x,y); 
     434                 
     435                case "text": 
     436                        return new CharacterTyped(currentEventParameters.get("message")); 
     437                         
    430438                default: 
    431439                        throw new SAXException("unhandled event id " + event); 
  • trunk/autoquest-plugin-android/src/main/java/de/ugoe/cs/autoquest/plugin/android/guimodel/ANDROIDGUIElementSpec.java

    r1813 r1815  
    1414package de.ugoe.cs.autoquest.plugin.android.guimodel; 
    1515 
     16import java.util.List; 
     17 
    1618import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec; 
    1719 
     
    3638        /* 
    3739         * (non-Javadoc) see 
    38          * de.ugoe.cs.autoquest.androidmonitor.AndroidmonitorLogFile logComponent() 
     40         * de.ugoe.cs.autoquest.androidmonitor.AndroidmonitorLogFile#logComponent() 
    3941         */ 
    4042        /** 
     
    7072         */ 
    7173        private String type; 
     74         
     75        /** 
     76     * <p> 
     77     * Type hierarchy of the class itself 
     78     * </p> 
     79     */ 
     80    private List<String> typeHierarchy = null; 
    7281 
    7382        /* 
     
    9099        @Override 
    91100        public String[] getTypeHierarchy() { 
    92                 return new String[] { (getType()) }; 
    93                 // TODO change this part after adding ancestors in 
    94                 // de.ugoe.cs.autoquest.androidmonitor.AndroidmonitorLogFile#addComponent 
     101                if (typeHierarchy == null) { 
     102            return new String[] 
     103                { (getType()) }; 
     104        } 
     105        else 
     106            return typeHierarchy.toArray(new String[typeHierarchy.size()]); 
    95107        } 
    96108 
     
    173185        this.type = type; 
    174186    } 
     187     
     188    /** 
     189     * <p> 
     190     * Sets the type hierarchy of the specified GUI element. 
     191     *  
     192     * @param typeHierarchy 
     193     *            </p> 
     194     */ 
     195    public void setTypeHierarchy(List<String> typeHierarchy) { 
     196        this.typeHierarchy = typeHierarchy; 
     197    } 
     198     
    175199 
    176200} 
Note: See TracChangeset for help on using the changeset viewer.