Example usage for com.fasterxml.jackson.datatype.guava GuavaModule GuavaModule

List of usage examples for com.fasterxml.jackson.datatype.guava GuavaModule GuavaModule

Introduction

In this page you can find the example usage for com.fasterxml.jackson.datatype.guava GuavaModule GuavaModule.

Prototype

public GuavaModule() 

Source Link

Usage

From source file:com.arpnetworking.logback.StenoEncoder.java

StenoEncoder(final JsonFactory jsonFactory, final ObjectMapper objectMapper) {

    // Initialize object mapper;
    _objectMapper = objectMapper;//  w  w w .  j  ava2s.  co  m
    _objectMapper.setAnnotationIntrospector(new StenoAnnotationIntrospector());
    final SimpleFilterProvider simpleFilterProvider = new SimpleFilterProvider();
    simpleFilterProvider.addFilter(RedactionFilter.REDACTION_FILTER_ID,
            new RedactionFilter(!DEFAULT_REDACT_NULL));
    // Initialize this here based on the above code, if it was initialized at the declaration site then things
    // could get out of sync
    _redactEnabled = true;
    _objectMapper.setFilters(simpleFilterProvider);

    // Setup writing of Date/DateTime values
    _objectMapper.registerModule(new JodaModule());
    _objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    _objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
    _objectMapper.setDateFormat(new ISO8601DateFormat());

    // Setup other common modules
    _objectMapper.registerModule(new AfterburnerModule());
    _objectMapper.registerModule(new Jdk7Module());
    _objectMapper.registerModule(new Jdk8Module());
    _objectMapper.registerModule(new GuavaModule());

    // Serialization strategies
    _listsSerialziationStrategy = new ListsSerialziationStrategy(this, jsonFactory, _objectMapper);
    _objectAsJsonSerialziationStrategy = new ObjectAsJsonSerialziationStrategy(this, jsonFactory,
            _objectMapper);
    _objectSerialziationStrategy = new ObjectSerialziationStrategy(this, jsonFactory, _objectMapper);
    _mapOfJsonSerialziationStrategy = new MapOfJsonSerialziationStrategy(this, jsonFactory, _objectMapper);
    _mapSerialziationStrategy = new MapSerialziationStrategy(this, jsonFactory, _objectMapper);
    _arrayOfJsonSerialziationStrategy = new ArrayOfJsonSerialziationStrategy(this, jsonFactory, _objectMapper);
    _arraySerialziationStrategy = new ArraySerialziationStrategy(this, jsonFactory, _objectMapper);
    _standardSerializationStrategy = new StandardSerializationStrategy(this, jsonFactory, _objectMapper);
}

From source file:com.clematis.jsmodify.JSExecutionTracer.java

/**
 * This method parses the JSON file containing the trace objects and extracts the objects
 *///from   www  .  j  av  a 2 s. co m
public static void extraxtTraceObjects() {
    try {
        ObjectMapper mapper = new ObjectMapper();
        // Register the module that serializes the Guava Multimap
        mapper.registerModule(new GuavaModule());

        Multimap<String, TraceObject> traceMap = mapper.<Multimap<String, TraceObject>>readValue(
                new File("clematis-output/ftrace/function.trace"),
                new TypeReference<TreeMultimap<String, TraceObject>>() {
                });

        Collection<TraceObject> timingTraces = traceMap.get("TimingTrace");
        Collection<TraceObject> domEventTraces = traceMap.get("DOMEventTrace");
        Collection<TraceObject> XHRTraces = traceMap.get("XHRTrace");
        Collection<TraceObject> functionTraces = traceMap.get("FunctionTrace");

        Iterator<TraceObject> it3 = domEventTraces.iterator();
        TraceObject next2;
        ArrayList<TraceObject> removeus = new ArrayList<TraceObject>();
        /**    while (it3.hasNext()) {
        next2 = it3.next();
                
        if (next2 instanceof DOMEventTrace
                && (((DOMEventTrace) next2).getEventType().equals("mouseover") 
                        || (((DOMEventTrace) next2).getEventType().equals("mousemove"))
                        || (((DOMEventTrace) next2).getEventType().equals("mouseout"))
                        || (((DOMEventTrace) next2).getEventType().equals("mousedown"))
                        || (((DOMEventTrace) next2).getEventType().equals("mouseup")))) {
            removeus.add(next2);
                
        }
            }*/
        domEventTraces.removeAll(removeus);

        story = new Story(domEventTraces, functionTraces, timingTraces, XHRTraces);
        story.setOrderedTraceList(sortTraceObjects());

        System.out.println(timingTraces.size());
        Iterator<TraceObject> it = timingTraces.iterator();
        TraceObject next;

        while (it.hasNext()) {
            next = it.next();
            System.out.println("=======");
            System.out.println(next.getCounter());
        }

        /*
         * ArrayList<TraceObject> bookmarkTraceObjects = new ArrayList<TraceObject>(); for
         * (TraceObject to : story.getOrderedTraceList()) { if (to instanceof DOMEventTrace) {
         * if (((DOMEventTrace)to).getEventType().equals("_BOOKMARK_")) {
         * bookmarkTraceObjects.add(to);
         * System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); } } }
         */

        story.setEpisodes(buildEpisodes());

        ArrayList<Episode> ss = story.getEpisodes();
        Iterator<Episode> it2 = ss.iterator();
        System.out.println("hhhmmm");

        while (it2.hasNext()) {
            System.out.println("--------");
            System.out.println(it2.next().getSource().getClass());
        }

        System.out.println("# of trace objects: " + story.getOrderedTraceList().size());
        System.out.println("# of episodes: " + story.getEpisodes().size());
        /*
         * for (int i = 0; i < story.getEpisodes().size(); i ++) { Episode episode =
         * story.getEpisodes().get(i); if (episode.getSource() instanceof DOMEventTrace) {
         * DOMEventTrace source = (DOMEventTrace)episode.getSource();
         * if(source.getTargetElement().contains("bookmarkButton")) {
         * System.out.println("***********"); if (i + 1 < story.getEpisodes().size()) {
         * story.getEpisodes().get(i).getSource().setIsBookmarked(true); // move isbookmarked to
         * episode System.out.println("* " + story.getEpisodes().get(i).getSource().toString());
         * } } } }
         */
        /*
         * for (int i = 0; i < story.getEpisodes().size(); i ++) { Episode episode =
         * story.getEpisodes().get(i); ArrayList<TraceObject> bookmarkObjects = new
         * ArrayList<TraceObject>(); for (int j = 0; j < episode.getTrace().getTrace().size(); j
         * ++) { if (episode.getTrace().getTrace().get(j) instanceof DOMEventTrace) {
         * DOMEventTrace domEventTrace = (DOMEventTrace)episode.getTrace().getTrace().get(j); if
         * (domEventTrace.getEventType().equals("_BOOKMARK_")) {
         * bookmarkObjects.add(domEventTrace); System.out.println("bookmark"); if (i + 1 <
         * story.getEpisodes().size()) { story.getEpisodes().get(i +
         * 1).getSource().setIsBookmarked(true); } } } }
         * episode.getTrace().getTrace().removeAll(bookmarkObjects); } for (Episode e :
         * story.getEpisodes()) { boolean bookmarkNextEpisode = false; // if
         * (e.getSource().getIsBookmarked()) System.out.println("============ " +
         * e.getSource().getIsBookmarked()); for (TraceObject to : e.getTrace().getTrace()) { if
         * (to instanceof DOMEventTrace) { if
         * (((DOMEventTrace)to).getEventType().equals("_BOOKMARK_"))
         * System.out.println("bookmark"); } } }
         */
        /*
         * for (Episode episode : story.getEpisodes()) { if (episode.getSource() instanceof
         * DOMEventTrace) { if
         * (((DOMEventTrace)episode.getSource()).getTargetElement().contains("bookmarkButton"))
         * { System.out.print("**** " + ((DOMEventTrace)episode.getSource()).getEventType() +
         * " * "); } System.out.println("---- " +
         * ((DOMEventTrace)episode.getSource()).getTargetElement()); } }
         */// TODO TODO TODO project specific for photo gallery. eliminate unwanted episodes
        story.removeUselessEpisodes();

        ss = story.getEpisodes();
        it2 = ss.iterator();
        System.out.println("hhhmmm2");

        while (it2.hasNext()) {
            System.out.println("--------");
            System.out.println(it2.next().getSource().getClass());
        }

        ArrayList<Episode> bookmarkEpisodes = new ArrayList<Episode>();

        for (int i = 0; i < story.getEpisodes().size(); i++) {
            Episode episode = story.getEpisodes().get(i);
            if (episode.getSource() instanceof DOMEventTrace) {
                DOMEventTrace source = (DOMEventTrace) episode.getSource();
                if (source.getTargetElement().contains("bookmarkButton")) {
                    bookmarkEpisodes.add(episode);
                    if (i + 1 < story.getEpisodes().size()) {
                        story.getEpisodes().get(i + 1).setIsBookmarked(true);
                        // story.getEpisodes().get(i).getSource().setIsBookmarked(true); // move
                        // isbookmarked to episode
                        System.out.println("* episode # " + (i + 1) + " bookmarked");
                    }
                }
            }

        }

        story.removeUselessEpisodes(bookmarkEpisodes);

        //    story.removeToolbarEpisodes();

        System.out.println("# of episodes after trimming: " + story.getEpisodes().size());

        DateFormat dateFormat = new SimpleDateFormat("EEE,d,MMM,HH-mm");
        Date date = new Date();
        System.out.println(dateFormat.format(date));
        // dateFormat.format(date).toString()
        theTime = new String(dateFormat.format(date).toString());
        System.out.println(theTime);

        // JavaScript episodes for JSUML2
        Helper.directoryCheck(outputFolder + "/sequence_diagrams/");
        PrintStream JSepisodes = new PrintStream(outputFolder + "/sequence_diagrams/allEpisodes.js");

        for (Episode e : story.getEpisodes()) {
            // Create pic files for each episode's sequence diagram
            designSequenceDiagram(e, JSepisodes);
        }

        // Once all episodes have been saved to JS file, close
        JSepisodes.close();

        // Create graph containing all episodes with embedded sequence diagrams
        EpisodeGraph eg = new EpisodeGraph(getOutputFolder(), story.getEpisodes());
        eg.createGraph();
        writeStoryToDisk();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:org.mayocat.application.AbstractService.java

protected void configureObjectMapper() {
    // Initialize our own object mapper. We don't want to use Dropwizard's one (environment.getObjectMapper) because
    // we don't have full control over its initialization, and we don't necessarily want mayocat's one to be
    // configured identically as the one used by DW.

    objectMapper = new ObjectMapper(new YAMLFactory());
    // Standard modules
    objectMapper.registerModule(new GuavaModule());
    objectMapper.registerModule(new JodaModule());
    objectMapper.registerModule(new AfterburnerModule());
    // Dropwizard modules
    objectMapper.registerModule(new GuavaExtrasModule());
    objectMapper.registerModule(new LogbackModule());
    // Mayocat modules
    objectMapper.registerModule(new TimeZoneModule());
    objectMapper.registerModule(new NIOModule());
    objectMapper.registerModule(new MayocatJodaModule());
    objectMapper.registerModule(new MayocatLocaleBCP47LanguageTagModule());
    objectMapper.registerModule(new MayocatGroovyModule());

    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}

From source file:com.aceevo.ursus.core.UrsusJerseyApplication.java

protected void registerJacksonSupport() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    mapper.registerModule(new GuavaModule());

    // create JsonProvider to provide custom ObjectMapper
    JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
    provider.setMapper(mapper);/*from  www. j a  v a2s . c o m*/

    register(provider);
}

From source file:lib.Global.java

private ObjectMapper buildObjectMapper() {
    return new ObjectMapper().registerModules(new GuavaModule(), new JodaModule())
            .setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES)
            .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES)
            .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
}

From source file:eu.trentorise.opendata.semtext.jackson.test.SemTextModuleTest.java

/**
 * Example with manual modules registration
 *//* w  w w.  ja v a  2s .  c  om*/
@Test
public void example1() throws JsonProcessingException, IOException {
    ObjectMapper om = new ObjectMapper();
    om.registerModule(new GuavaModule());
    om.registerModule(new OdtCommonsModule());
    om.registerModule(new SemTextModule());

    String json = om.writeValueAsString(SemText.of(Locale.ITALIAN, "ciao"));
    SemText reconstructedSemText = om.readValue(json, SemText.class);
}

From source file:io.mesosphere.mesos.frameworks.cassandra.framework.Main.java

private static int _main() throws UnknownHostException {
    final Optional<String> portOption = Env.option("PORT0");
    if (!portOption.isPresent()) {
        throw new SystemExitException("Environment variable PORT0 must be defined", 5);
    }/*from  w ww.  jav a2s.  com*/

    final int port0 = Integer.parseInt(portOption.get());
    final String host = Env.option("HOST").or("localhost");

    final Optional<String> clusterNameOpt = Env.option("CASSANDRA_CLUSTER_NAME");

    final int executorCount = Integer.parseInt(Env.option("CASSANDRA_NODE_COUNT").or("3"));
    final int seedCount = Integer.parseInt(Env.option("CASSANDRA_SEED_COUNT").or("2"));
    final double resourceCpuCores = Double.parseDouble(Env.option("CASSANDRA_RESOURCE_CPU_CORES").or("2.0"));
    final long resourceMemoryMegabytes = Long.parseLong(Env.option("CASSANDRA_RESOURCE_MEM_MB").or("2048"));
    final long resourceDiskMegabytes = Long.parseLong(Env.option("CASSANDRA_RESOURCE_DISK_MB").or("2048"));
    final long javaHeapMb = Long.parseLong(Env.option("CASSANDRA_RESOURCE_HEAP_MB").or("0"));
    final long healthCheckIntervalSec = Long
            .parseLong(Env.option("CASSANDRA_HEALTH_CHECK_INTERVAL_SECONDS").or("60"));
    final long bootstrapGraceTimeSec = Long
            .parseLong(Env.option("CASSANDRA_BOOTSTRAP_GRACE_TIME_SECONDS").or("120"));
    final String cassandraVersion = "2.1.4";
    final String clusterName = clusterNameOpt.or("cassandra");
    final String frameworkName = frameworkName(clusterNameOpt);
    final String zkUrl = Env.option("CASSANDRA_ZK").or("zk://localhost:2181/cassandra-mesos");
    final long zkTimeoutMs = Long.parseLong(Env.option("CASSANDRA_ZK_TIMEOUT_MS").or("10000"));
    final String mesosMasterZkUrl = Env.option("MESOS_ZK").or("zk://localhost:2181/mesos");
    final String mesosUser = Env.option("MESOS_USER").or("");
    final long failoverTimeout = Long.parseLong(Env.option("CASSANDRA_FAILOVER_TIMEOUT_SECONDS")
            .or(String.valueOf(Period.days(7).toStandardSeconds().getSeconds())));
    final String mesosRole = Env.option("CASSANDRA_FRAMEWORK_MESOS_ROLE").or("*");
    final String dataDirectory = Env.option("CASSANDRA_DATA_DIRECTORY").or(DEFAULT_DATA_DIRECTORY); // TODO: Temporary. Will be removed when MESOS-1554 is released
    final String backupDirectory = Env.option("CASSANDRA_BACKUP_DIRECTORY").or(DEFAULT_BACKUP_DIRECTORY);
    final boolean jmxLocal = Boolean.parseBoolean(Env.option("CASSANDRA_JMX_LOCAL").or("true"));
    final boolean jmxNoAuthentication = Boolean
            .parseBoolean(Env.option("CASSANDRA_JMX_NO_AUTHENTICATION").or("false"));
    final String defaultRack = Env.option("CASSANDRA_DEFAULT_RACK").or("RAC1");
    final String defaultDc = Env.option("CASSANDRA_DEFAULT_DC").or("DC1");

    final List<ExternalDc> externalDcs = getExternalDcs(Env.filterStartsWith("CASSANDRA_EXTERNAL_DC_", true));
    final Matcher matcher = validateZkUrl(zkUrl);

    final State state = new ZooKeeperState(matcher.group(1), zkTimeoutMs, TimeUnit.MILLISECONDS,
            matcher.group(2));

    if (seedCount > executorCount || seedCount <= 0 || executorCount <= 0) {
        throw new IllegalArgumentException(
                "number of nodes (" + executorCount + ") and/or number of seeds (" + seedCount + ") invalid");
    }

    final PersistedCassandraFrameworkConfiguration configuration = new PersistedCassandraFrameworkConfiguration(
            state, frameworkName, healthCheckIntervalSec, bootstrapGraceTimeSec, cassandraVersion,
            resourceCpuCores, resourceDiskMegabytes, resourceMemoryMegabytes, javaHeapMb, executorCount,
            seedCount, mesosRole, backupDirectory, dataDirectory, jmxLocal, jmxNoAuthentication, defaultRack,
            defaultDc, externalDcs, clusterName);

    final FrameworkInfo.Builder frameworkBuilder = FrameworkInfo.newBuilder()
            .setFailoverTimeout(failoverTimeout).setUser(mesosUser).setName(frameworkName).setRole(mesosRole)
            .setCheckpoint(true);

    final Optional<String> frameworkId = configuration.frameworkId();
    if (frameworkId.isPresent()) {
        frameworkBuilder.setId(frameworkId(frameworkId.get()));
    }

    final URI httpServerBaseUri = URI.create("http://" + host + ":" + port0 + "/");

    final Clock clock = new SystemClock();
    final PersistedCassandraClusterHealthCheckHistory healthCheckHistory = new PersistedCassandraClusterHealthCheckHistory(
            state);
    final PersistedCassandraClusterState clusterState = new PersistedCassandraClusterState(state);
    final SeedManager seedManager = new SeedManager(configuration, new ObjectMapper(), new SystemClock());
    final CassandraCluster cassandraCluster = new CassandraCluster(clock, httpServerBaseUri.toString(),
            new ExecutorCounter(state, 0L), clusterState, healthCheckHistory,
            new PersistedCassandraClusterJobs(state), configuration, seedManager);
    final HealthReportService healthReportService = new HealthReportService(clusterState, configuration,
            healthCheckHistory, clock);
    final Scheduler scheduler = new CassandraScheduler(configuration, cassandraCluster, clock);

    final JsonFactory factory = new JsonFactory();
    final ObjectMapper objectMapper = new ObjectMapper(factory);
    objectMapper.registerModule(new GuavaModule());

    // create JsonProvider to provide custom ObjectMapper
    JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
    provider.setMapper(objectMapper);

    final ResourceConfig rc = new ResourceConfig().registerInstances(
            new FileResourceController(cassandraVersion), new ApiController(factory),
            new ClusterCleanupController(cassandraCluster, factory),
            new ClusterRepairController(cassandraCluster, factory),
            new ClusterRollingRestartController(cassandraCluster, factory),
            new ClusterBackupController(cassandraCluster, factory),
            new ClusterRestoreController(cassandraCluster, factory),
            new ConfigController(cassandraCluster, factory),
            new LiveEndpointsController(cassandraCluster, factory),
            new NodeController(cassandraCluster, factory), new HealthCheckController(healthReportService),
            new QaReportController(cassandraCluster, factory),
            new ScaleOutController(cassandraCluster, factory), provider);
    final HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(httpServerBaseUri, rc);

    final MesosSchedulerDriver driver;
    final Optional<Credential> credentials = getCredential();
    if (credentials.isPresent()) {
        frameworkBuilder.setPrincipal(credentials.get().getPrincipal());
        driver = new MesosSchedulerDriver(scheduler, frameworkBuilder.build(), mesosMasterZkUrl,
                credentials.get());
    } else {
        frameworkBuilder.setPrincipal("cassandra-framework");
        driver = new MesosSchedulerDriver(scheduler, frameworkBuilder.build(), mesosMasterZkUrl);
    }

    seedManager.startSyncingSeeds(60);

    final int status;
    switch (driver.run()) {
    case DRIVER_STOPPED:
        status = 0;
        break;
    case DRIVER_ABORTED:
        status = 1;
        break;
    case DRIVER_NOT_STARTED:
        status = 2;
        break;
    default:
        status = 3;
        break;
    }

    httpServer.shutdownNow();
    // Ensure that the driver process terminates.
    driver.stop(true);
    return status;
}

From source file:org.mayocat.configuration.internal.DefaultConfigurationService.java

public ObjectMapper getObjectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new GuavaModule());
    mapper.registerModule(new JodaModule());
    mapper.registerModule(new GuavaExtrasModule());
    mapper.registerModule(new TimeZoneModule());

    return mapper;
}

From source file:com.proteus.jsmodify.JSExecutionTracer.java

/**
 * This method parses the JSON file containing the trace objects and extracts the objects
 *///w w  w. j  a  v  a  2 s.c o m
public static void extraxtTraceObjects() {
    try {
        ObjectMapper mapper = new ObjectMapper();
        // Register the module that serializes the Guava Multimap
        mapper.registerModule(new GuavaModule());

        File traceFile = new File("clematis-output/ftrace/function.trace");
        //            File traceFile = new File("function-traces/same-game.function.trace");
        //            File traceFile = new File("function-traces/ghostbusters.function.trace");
        //            File traceFile = new File("function-traces/mojule.function.trace");
        //            File traceFile = new File("function-traces/listo.function.trace");
        //            File traceFile = new File("function-traces/doctored.function.trace");
        //            File traceFile = new File("function-traces/jointlondon.function.trace");
        //            File traceFile = new File("function-traces/607.space.mahjon.function.trace");

        Multimap<String, TraceObject> traceMap = mapper.<Multimap<String, TraceObject>>readValue(traceFile,
                new TypeReference<TreeMultimap<String, TraceObject>>() {
                });
        /**
                    Collection<TraceObject> timingTraces = traceMap.get("TimingTrace");
        **/
        Collection<TraceObject> domEventTraces = traceMap.get("DOMEventTrace");
        /**            Collection<TraceObject> XHRTraces = traceMap.get("XHRTrace");
        **/
        Collection<TraceObject> functionTraces = traceMap.get("FunctionTrace");

        // TODO TODO TODO TODO TODO
        InteractionGraph.getInstance().handleDynamicCallGraph(functionTraces);
        InteractionGraph.getInstance().handleDomEvents(domEventTraces);
        // TODO TODO TODO TODO TODO

        ///////            createDynamicCallGraph(functionTraces);

        /**            Iterator<TraceObject> it3 = domEventTraces.iterator();
                    TraceObject next2;
                    ArrayList<TraceObject> removeus = new ArrayList<TraceObject>();
                    while (it3.hasNext()) {
        next2 = it3.next();
                
        if (next2 instanceof DOMEventTrace
                && (((DOMEventTrace) next2).getEventType().equals("mouseover") 
                        || (((DOMEventTrace) next2).getEventType().equals("mousemove"))
                        || (((DOMEventTrace) next2).getEventType().equals("mouseout"))
                        || (((DOMEventTrace) next2).getEventType().equals("mousedown"))
                        || (((DOMEventTrace) next2).getEventType().equals("mouseup")))) {
            removeus.add(next2);
                
        }
                    }
                    domEventTraces.removeAll(removeus);
                
                    story = new Story(domEventTraces, functionTraces, timingTraces, XHRTraces);
                    story.setOrderedTraceList(sortTraceObjects());
                
                
                    System.out.println(timingTraces.size());
                    Iterator<TraceObject> it = timingTraces.iterator();
                    TraceObject next;
                
                    while (it.hasNext()) {
        next = it.next();
        System.out.println("=======");
        System.out.println( next.getCounter());
                    }
        **/

        /*
         * ArrayList<TraceObject> bookmarkTraceObjects = new ArrayList<TraceObject>(); for
         * (TraceObject to : story.getOrderedTraceList()) { if (to instanceof DOMEventTrace) {
         * if (((DOMEventTrace)to).getEventType().equals("_BOOKMARK_")) {
         * bookmarkTraceObjects.add(to);
         * System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); } } }
         */
        /**
                    story.setEpisodes(buildEpisodes());
                
                    ArrayList<Episode> ss = story.getEpisodes();
                    Iterator<Episode> it2 = ss.iterator();
                    System.out.println("hhhmmm");
                
                    while (it2.hasNext()) {
        System.out.println("--------");
        System.out.println(it2.next().getSource().getClass());
                    }
                
                
                
                    System.out.println("# of trace objects: " + story.getOrderedTraceList().size());
                    System.out.println("# of episodes: " + story.getEpisodes().size());
        **/ /*
             * for (int i = 0; i < story.getEpisodes().size(); i ++) { Episode episode =
             * story.getEpisodes().get(i); if (episode.getSource() instanceof DOMEventTrace) {
             * DOMEventTrace source = (DOMEventTrace)episode.getSource();
             * if(source.getTargetElement().contains("bookmarkButton")) {
             * System.out.println("***********"); if (i + 1 < story.getEpisodes().size()) {
             * story.getEpisodes().get(i).getSource().setIsBookmarked(true); // move isbookmarked to
             * episode System.out.println("* " + story.getEpisodes().get(i).getSource().toString());
             * } } } }
             */
        /*
         * for (int i = 0; i < story.getEpisodes().size(); i ++) { Episode episode =
         * story.getEpisodes().get(i); ArrayList<TraceObject> bookmarkObjects = new
         * ArrayList<TraceObject>(); for (int j = 0; j < episode.getTrace().getTrace().size(); j
         * ++) { if (episode.getTrace().getTrace().get(j) instanceof DOMEventTrace) {
         * DOMEventTrace domEventTrace = (DOMEventTrace)episode.getTrace().getTrace().get(j); if
         * (domEventTrace.getEventType().equals("_BOOKMARK_")) {
         * bookmarkObjects.add(domEventTrace); System.out.println("bookmark"); if (i + 1 <
         * story.getEpisodes().size()) { story.getEpisodes().get(i +
         * 1).getSource().setIsBookmarked(true); } } } }
         * episode.getTrace().getTrace().removeAll(bookmarkObjects); } for (Episode e :
         * story.getEpisodes()) { boolean bookmarkNextEpisode = false; // if
         * (e.getSource().getIsBookmarked()) System.out.println("============ " +
         * e.getSource().getIsBookmarked()); for (TraceObject to : e.getTrace().getTrace()) { if
         * (to instanceof DOMEventTrace) { if
         * (((DOMEventTrace)to).getEventType().equals("_BOOKMARK_"))
         * System.out.println("bookmark"); } } }
         */
        /*
         * for (Episode episode : story.getEpisodes()) { if (episode.getSource() instanceof
         * DOMEventTrace) { if
         * (((DOMEventTrace)episode.getSource()).getTargetElement().contains("bookmarkButton"))
         * { System.out.print("**** " + ((DOMEventTrace)episode.getSource()).getEventType() +
         * " * "); } System.out.println("---- " +
         * ((DOMEventTrace)episode.getSource()).getTargetElement()); } }
         */// TODO TODO TODO project specific for photo gallery. eliminate unwanted episodes
        /**
        story.removeUselessEpisodes();
                
        ss = story.getEpisodes();
        it2 = ss.iterator();
        System.out.println("hhhmmm2");
                
        while (it2.hasNext()) {
        System.out.println("--------");
        System.out.println(it2.next().getSource().getClass());
        }
                
        ArrayList<Episode> bookmarkEpisodes = new ArrayList<Episode>();
                
        for (int i = 0; i < story.getEpisodes().size(); i++) {
        Episode episode = story.getEpisodes().get(i);
        if (episode.getSource() instanceof DOMEventTrace) {
            DOMEventTrace source = (DOMEventTrace) episode.getSource();
            if (source.getTargetElement().contains("bookmarkButton")) {
                bookmarkEpisodes.add(episode);
                if (i + 1 < story.getEpisodes().size()) {
                    story.getEpisodes().get(i + 1).setIsBookmarked(true);
                    // story.getEpisodes().get(i).getSource().setIsBookmarked(true); // move
                    // isbookmarked to episode
                    System.out.println("* episode # " + (i + 1) + " bookmarked");
                }
            }
        }
                
        }
                
        story.removeUselessEpisodes(bookmarkEpisodes);
                
        //    story.removeToolbarEpisodes();
                
        System.out.println("# of episodes after trimming: " + story.getEpisodes().size());
                
        DateFormat dateFormat = new SimpleDateFormat("EEE,d,MMM,HH-mm");
        Date date = new Date();
        System.out.println(dateFormat.format(date));
        // dateFormat.format(date).toString()
        theTime = new String(dateFormat.format(date).toString());
        System.out.println(theTime);
                
        // JavaScript episodes for JSUML2
        Helper.directoryCheck(outputFolder + "/sequence_diagrams/");
        PrintStream JSepisodes =
            new PrintStream(outputFolder + "/sequence_diagrams/allEpisodes.js");
                
        for (Episode e : story.getEpisodes()) {
        // Create pic files for each episode's sequence diagram
        designSequenceDiagram(e, JSepisodes);
        }
                
        // Once all episodes have been saved to JS file, close
        JSepisodes.close();
        **/
        // Create graph containing all episodes with embedded sequence diagrams
        /**            EpisodeGraph eg = new EpisodeGraph(getOutputFolder(), story.getEpisodes());
                    eg.createGraph();
                    writeStoryToDisk();
        **/
    } catch (Exception e) {
        e.printStackTrace();
    }
}