com.amazon.feeds.SampleFeedGenerator.java Source code

Java tutorial

Introduction

Here is the source code for com.amazon.feeds.SampleFeedGenerator.java

Source

/**
 * Copyright 2015-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 * http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package com.amazon.feeds;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.util.DefaultIndenter;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;

/**
 * This is a class for generating sample feeds given a format specification class.
 */
public class SampleFeedGenerator {

    // default directory for output files
    private final String SAMPLE_PATH = "samples/feeds/";

    /**
     * The method for generating sample feeds.
     *
     * @param format The class containing the format specifications.
     * @param items The number of items to generate.
     * @param ext File extension.
     */
    public void createSampleFeed(IFeedFormat format, int items, String ext) throws Exception {

        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        mapper.getFactory().setCharacterEscapes(format.getEscapeRules());

        // create output file
        String out = format.getFeedFormat() + "-" + items + "." + ext;
        // TODO: add XML support

        File outFile = new File(SAMPLE_PATH, out);
        if (!outFile.exists()) {
            outFile.getParentFile().mkdirs();
        }

        // populate sample feed
        System.out.println("Generating " + items + (items == 1 ? " item" : " items") + " for "
                + format.getProvider() + " feed at " + outFile.getAbsolutePath());
        format.populate(items);

        // write JSON to file
        if (format.usePrettyPrint()) {

            DefaultPrettyPrinter.Indenter indenter = new DefaultIndenter("   ", DefaultIndenter.SYS_LF);
            DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
            printer.indentObjectsWith(indenter);
            printer.indentArraysWith(indenter);
            mapper.writer(printer).writeValue(outFile, format);
        } else {
            mapper.writeValue(outFile, format);
        }
    }

    /**
     * The method for generating sample feeds. Uses JSON as default format.
     *
     * @param format The class containing the format specifications.
     * @param items The number of items to generate.
     */
    public void createSampleFeed(IFeedFormat format, int items) throws Exception {
        createSampleFeed(format, items, "json");
    }
}