package org.Webgatherer.Controller; import com.google.inject.Guice; import com.google.inject.Injector; import org.Webgatherer.Controller.Component.ControllerFlow; import org.Webgatherer.CoreEngine.Core.ThreadCommunication.FinalOutputContainer; import org.Webgatherer.CoreEngine.DependencyInjection.DependencyBindingModule; import org.Webgatherer.WorkflowExample.DataHolders.ContainerBase; import java.util.*; import java.util.concurrent.ConcurrentLinkedQueue; /** * @author Rick Dane */ public class Entry_ExampleRun_SearchScrape { public static void main(String[] args) { Injector injector = Guice.createInjector(new DependencyBindingModule()); ControllerFlow wfContrl = injector.getInstance(ControllerFlow.class); FinalOutputContainer finalOutputContainer = launchWebGathererThread(injector, wfContrl, "org.Webgatherer.WorkflowExample.Workflows.Implementations.WebGatherer.Workflow_WebSearch1", "org.Webgatherer.WorkflowExample.Workflows.Implementations.DataInterpetor.Workflow_DataInterpretor_SearchResultsScrape"); persistResults(finalOutputContainer); } private static FinalOutputContainer launchWebGathererThread(Injector injector, ControllerFlow wfContrl, String workflow2, String workflow3) { List<String> workflowlist = new ArrayList<String>(); workflowlist.add(workflow2); workflowlist.add(workflow3); Map<String, Object> parameterMap = new HashMap<String, Object>(); parameterMap.put("pageQueue", testLoadPages()); FinalOutputContainer finalOutputContainer = injector.getInstance(FinalOutputContainer.class); wfContrl.configure(finalOutputContainer, workflowlist, parameterMap); wfContrl.start(); return finalOutputContainer; } private static void persistResults(FinalOutputContainer finalOutputContainer) { int THREAD_SLEEP = 2000; int LIST_FIRST_ITEM = 0; int killCount = 5; int countKilledSoFar = 0; while (true) { Map<String, ContainerBase> outputMap = null; try { outputMap = finalOutputContainer.removeFromFinalOutputContainer(); } catch (Exception e) { try { Thread.sleep(THREAD_SLEEP); } catch (InterruptedException e1) { e1.printStackTrace(); } continue; } if (outputMap == null || outputMap.isEmpty()) { try { Thread.sleep(THREAD_SLEEP); } catch (InterruptedException e) { e.printStackTrace(); } continue; } ContainerBase outputContainer = null; for (Map.Entry<String, ContainerBase> entries : outputMap.entrySet()) { String key = entries.getKey(); outputContainer = outputMap.get(key); //this is just for this case where each map only has 1 entry countKilledSoFar++; break; } LinkedList<String> list = outputContainer.getEntries(); System.out.println("\n " + outputContainer.getIdentifier() + ": \n"); for (String curStr : list) { System.out.println(curStr + "\n"); } if (countKilledSoFar == killCount) { break; } } } private static Queue testLoadPages() { Queue<String[]> pageQueue = new ConcurrentLinkedQueue<String[]>(); String numPages = "7"; String[] site1 = {"livermore", null, null, null, "livermore,+ca+software+company", numPages, ""}; String[] site3 = {"fremont", null, null, null, "fremont,+ca+software+company", numPages, ""}; String[] site4 = {"milpitas", null, null, null, "milpitas,+ca+software+company", numPages, ""}; String[] site5 = {"emeryville", null, null, null, "emeryville,+ca+software+company", numPages, ""}; String[] site6 = {"pleasanton", null, null, null, "pleasanton,+ca+software+company", numPages, ""}; pageQueue.add(site1); pageQueue.add(site3); pageQueue.add(site4); pageQueue.add(site5); pageQueue.add(site6); return pageQueue; } }