Ignore:
Timestamp:
02/14/13 15:20:07 (11 years ago)
Author:
pharms
Message:
  • support of new HTML logging format
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorServlet.java

    r1022 r1069  
    7878     * the message listener to forward received messages to. 
    7979     */ 
     80    private HtmlGUIElementManager guiElementManager = new HtmlGUIElementManager(); 
     81 
     82    /** 
     83     * the message listener to forward received messages to. 
     84     */ 
    8085    private transient HtmlMonitorMessageListener messageListener; 
    8186 
     
    199204            } 
    200205            else { 
    201                 HtmlPageElement guiStructure = extractHtmlPageElements(message, clientInfos); 
     206                HtmlGUIElement guiStructure = extractHtmlPageElements(message, clientInfos); 
    202207                HtmlEvent[] events = extractHtmlEvents(message, clientInfos); 
    203208                 
     
    275280            events = new ArrayList<HtmlEvent>(); 
    276281             
    277             HtmlPageElement server = getServerElement(clientInfos); 
    278             HtmlPageElement page = getPageElementRepresentingWebPage(clientInfos, server); 
     282            HtmlServer server = getServerElement(clientInfos); 
     283            HtmlDocument document = getPageElementRepresentingWebPage(clientInfos, server); 
    279284 
    280285            for (int i = 0; i < eventArray.size(); i++) { 
     
    285290                else { 
    286291                    Long time = assertValue(((JSONObject) eventObj), "time", Long.class); 
    287                     String path = assertValue(((JSONObject) eventObj), "path", String.class); 
     292                    String domPath = assertValue(((JSONObject) eventObj), "path", String.class); 
    288293                    String eventType = 
    289294                        assertValue(((JSONObject) eventObj), "eventType", String.class); 
     
    302307                        Console.printerrln(eventType + " event has no valid timestamp"); 
    303308                    } 
    304                     else if (path == null) { 
    305                         Console.printerrln(eventType + " event has no valid path"); 
     309                    else if (domPath == null) { 
     310                        Console.printerrln(eventType + " event has no valid DOM path"); 
    306311                    } 
    307312                    else if ((coordinates != null) && (coordinates.length != 2)) { 
     
    311316                                (eventType, coordinates, key, scrollPosition, selectedValue)) 
    312317                    { 
    313                         path = page.getPath() + path; 
    314                         events.add(new HtmlEvent(clientInfos, time, path, eventType, 
    315                                                  coordinates, key, scrollPosition, selectedValue)); 
     318                        HtmlPageElement target = 
     319                            guiElementManager.getPageElement(document, domPath); 
     320                         
     321                        if (target != null) { 
     322                            events.add(new HtmlEvent(clientInfos, time, target, eventType, 
     323                                                     coordinates, key, scrollPosition, 
     324                                                     selectedValue)); 
     325                        } 
     326                        else { 
     327                            events.add(new HtmlEvent(clientInfos, time, document, domPath, 
     328                                                     eventType, coordinates, key, scrollPosition, 
     329                                                     selectedValue)); 
     330                        } 
    316331                    } 
    317332                    else { 
     
    342357     *         representation of the server of the HTML page that was observed  
    343358     */ 
    344     private HtmlPageElement extractHtmlPageElements(JSONObject      object, 
    345                                                     HtmlClientInfos clientInfos) 
     359    private HtmlServer extractHtmlPageElements(JSONObject      object, 
     360                                               HtmlClientInfos clientInfos) 
    346361    { 
    347         HtmlPageElement server = getServerElement(clientInfos); 
    348         HtmlPageElement page = getPageElementRepresentingWebPage(clientInfos, server); 
     362        HtmlServer server = getServerElement(clientInfos); 
     363        HtmlDocument document = getPageElementRepresentingWebPage(clientInfos, server); 
    349364 
    350365        JSONObject jsonPageElement = assertValue(object, "guiModel", JSONObject.class); 
    351         page.addChild(convert(jsonPageElement, page.getPath())); 
     366        document.addChild(convert(jsonPageElement, document, null)); 
    352367         
    353368        return server; 
     
    364379     * @return as described 
    365380     */ 
    366     private HtmlPageElement getServerElement(HtmlClientInfos clientInfos) { 
    367         String id = clientInfos.getUrl().getHost(); 
     381    private HtmlServer getServerElement(HtmlClientInfos clientInfos) { 
     382        String host = clientInfos.getUrl().getHost(); 
     383        int port = 80; 
     384         
    368385        if (clientInfos.getUrl().getPort() > -1) { 
    369             id += ":" + clientInfos.getUrl().getPort(); 
    370         } 
    371          
    372         return new HtmlPageElement(null, "server", id, 0); 
     386            port = clientInfos.getUrl().getPort(); 
     387        } 
     388         
     389        return guiElementManager.createHtmlServer(host, port); 
    373390    } 
    374391 
     
    384401     * @return as described 
    385402     */ 
    386     private HtmlPageElement getPageElementRepresentingWebPage(HtmlClientInfos clientInfos, 
    387                                                               HtmlPageElement server) 
     403    private HtmlDocument getPageElementRepresentingWebPage(HtmlClientInfos clientInfos, 
     404                                                           HtmlServer      server) 
    388405    { 
    389         String id = clientInfos.getUrl().getPath(); 
     406        String path = clientInfos.getUrl().getPath(); 
     407        String query = null; 
    390408         
    391409        if (clientInfos.getUrl().getQuery() != null) { 
    392             id += "?" + clientInfos.getUrl().getQuery(); 
    393         } 
    394          
    395         HtmlPageElement page = 
    396             new HtmlPageElement(server.getPath(), "document", id, clientInfos.getTitle(), 0); 
    397          
    398         server.addChild(page); 
    399          
    400         return page; 
     410            query = "?" + clientInfos.getUrl().getQuery(); 
     411        } 
     412         
     413        HtmlDocument document = guiElementManager.createHtmlDocument 
     414            (server, path, query, clientInfos.getTitle()); 
     415         
     416        server.addChild(document); 
     417         
     418        return document; 
    401419    } 
    402420 
     
    408426     * 
    409427     * @param jsonPageElement the JSON object to be converted 
    410      * @param parentPath      the path through the DOM of the parent HTML page element of the 
    411      *                        converted one 
     428     * @param document        the document to which the page element belongs 
     429     * @param parent          the parent page element of the converted element, of null, if none 
     430     *                        is present. In this case the document is considered the parent 
     431     *                        element. 
    412432     *                         
    413433     * @return as described. 
    414434     */ 
    415     private HtmlPageElement convert(JSONObject jsonPageElement, String parentPath) { 
     435    private HtmlPageElement convert(JSONObject      jsonPageElement, 
     436                                    HtmlDocument    document, 
     437                                    HtmlPageElement parent) 
     438    { 
    416439        HtmlPageElement result = null; 
    417440 
    418441        if (jsonPageElement != null) { 
    419442            String tagName = assertValue(jsonPageElement, "tagName", String.class); 
    420             String id = assertValue(jsonPageElement, "id", String.class); 
     443            String htmlid = assertValue(jsonPageElement, "htmlId", String.class); 
    421444            Integer index = assertValue(jsonPageElement, "index", Integer.class); 
    422445 
    423             result = new HtmlPageElement(parentPath, tagName, id, index); 
     446            result = guiElementManager.createHtmlPageElement 
     447                (document, parent, tagName, htmlid, index); 
    424448 
    425449            JSONArray childElements = assertValue(jsonPageElement, "children", JSONArray.class); 
     
    435459                    } 
    436460                    else { 
    437                         result.addChild(convert((JSONObject) jsonChild, result.getPath())); 
     461                        result.addChild(convert((JSONObject) jsonChild, document, result)); 
    438462                    } 
    439463                } 
Note: See TracChangeset for help on using the changeset viewer.