Package com.mozilla.grouperfish.batch.handlers

Source Code of com.mozilla.grouperfish.batch.handlers.FetchHandler

package com.mozilla.grouperfish.batch.handlers;

import static com.mozilla.grouperfish.batch.scheduling.Helpers.inputFilename;
import static com.mozilla.grouperfish.batch.scheduling.Helpers.parametersFilename;
import static com.mozilla.grouperfish.batch.scheduling.Helpers.writer;

import java.io.Writer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.mozilla.grouperfish.base.Assert;
import com.mozilla.grouperfish.base.json.TsvJsonWriter;
import com.mozilla.grouperfish.batch.scheduling.Helpers;
import com.mozilla.grouperfish.model.Document;
import com.mozilla.grouperfish.model.Fail;
import com.mozilla.grouperfish.model.Task;
import com.mozilla.grouperfish.model.Type;
import com.mozilla.grouperfish.services.api.FileSystem;
import com.mozilla.grouperfish.services.api.Index;
import com.mozilla.grouperfish.services.api.IndexProvider;

public class FetchHandler implements TaskHandler {

    private static final Logger log = LoggerFactory.getLogger(FetchHandler.class);

    private final IndexProvider indexes;
    private final FileSystem fs;

    public FetchHandler(final FileSystem fs, final IndexProvider index) {
        this.fs = fs;
        this.indexes = index;
    }

    @Override
    public Task handle(final Task task) throws Fail {
        Index index = indexes.index(task.namespace().bucket(Type.DOCUMENT));
        Assert.nonNull(task);
        try {
            final TsvJsonWriter tsvWriter = new TsvJsonWriter(writer(fs, task, inputFilename(task)));
            for (final Document doc : index.find(task.query())) tsvWriter.write(doc);
            tsvWriter.close();

            final Writer parametersWriter = writer(fs, task, parametersFilename(task));
            parametersWriter.write(task.transform().parametersJson());
            parametersWriter.close();
        }
        catch (final Exception e) {
            final String message = String.format(
                    "Failed writing doc to %s", Helpers.inputFilename(task));
            log.error("Exception", e);
            throw Fail.hard(task, message, e);
        }
        return task;
    }

}
TOP

Related Classes of com.mozilla.grouperfish.batch.handlers.FetchHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.