package com.thoughtworks.webanalyticsautomation.plugins; /** * Created by: Anand Bagmar * Email: abagmar@gmail.com * Date: Dec 29, 2010 * Time: 9:34:02 AM * * Copyright 2010 Anand Bagmar (abagmar@gmail.com). Distributed under the Apache 2.0 License */ import com.thoughtworks.webanalyticsautomation.common.Utils; import com.thoughtworks.webanalyticsautomation.inputdata.Section; import com.thoughtworks.webanalyticsautomation.scriptrunner.ScriptRunner; import net.lightbody.bmp.BrowserMobProxy; import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.List; public class OmnitureDebugger implements WaatPlugin { private final Logger logger = Logger.getLogger(getClass()); private final String OMNITURE_DEBUGGER_URL = "javascript:(window.open(\"\",\"stats_debugger\",\"width=600,height=600,location=0,menubar=0,status=1,toolbar=0,resizable=1,scrollbars=1\").document.write(\"<script language='JavaScript' src='http://sitecatalyst.omniture.com/sc_tools/stats_debugger.html'></script>\"));"; private static final String OMNITURE_DEBUGGER_WINDOW_TITLE = "Omniture Debugger"; private static final String OMNITURE_DEBUGGER_URL_DECODE_CHECKBOX = "url_decode"; private final String OMNITURE_DEBUGGER_SPLITTER = ">Image</span>"; public OmnitureDebugger() { logger.info ("Creating an instance of Omniture Debugger"); } public ArrayList<Section> captureSections(ScriptRunner scriptRunner) { logger.info("Capturing sections from Omniture Debugger"); String sSource= scriptRunner.getHTMLSourceByExecutingScript(OMNITURE_DEBUGGER_URL, OMNITURE_DEBUGGER_WINDOW_TITLE, OMNITURE_DEBUGGER_URL_DECODE_CHECKBOX); logger.debug("Omniture Debugger HTML source: \n" + sSource); return parseOmnitureDebuggerSections (sSource); } public ArrayList<Section> captureSections(List<String> urlPatterns, int minimumNumberOfPackets) { logger.info ("ERROR - INVALID API CALLED ON OmnitureDebugger Plugin"); return null; } @Override public BrowserMobProxy getProxy(int port) { logger.info ("ERROR - INVALID API CALLED ON OmnitureDebugger Plugin"); return null; } @Override public void enableCapture(String name) { logger.info ("ERROR - INVALID API CALLED ON OmnitureDebugger Plugin"); } @Override public Object getSeleniumProxy(int port) { logger.info ("ERROR - INVALID API CALLED ON OmnitureDebugger Plugin"); return null; } private ArrayList<Section> parseOmnitureDebuggerSections(String sSource) { ArrayList<Section> capturedSections = new ArrayList<Section>(); ArrayList<String> convertedCapturedSections = Utils.convertStringArrayToArrayList(splitCapturedHTML(sSource)); for (String convertedCapturedSection: convertedCapturedSections) { capturedSections.add(new Section("", convertedCapturedSection)); } return capturedSections; } private String[] splitCapturedHTML(String sSource) { sSource = sSource.replace("</SPAN>", "</span>"); sSource = sSource.replace("Image</span>", "image</span>"); sSource = sSource.replace("IMAGE</span>", "image</span>"); return sSource.split(OMNITURE_DEBUGGER_SPLITTER); } }