All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.tink.model.TinkProcessor Maven / Gradle / Ivy

/**
 * Copyright 2008,2009 Ivan SZKIBA
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License 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.
 * under the License.
 */

package net.sourceforge.tink.model;

import java.io.File;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.ServiceLoader;
import java.util.Set;

public abstract class TinkProcessor
{
    private Config config;
    private Output output;

    public abstract void execute() throws TinkException;

    public static TinkProcessor newInstance()
    {
        return ServiceLoader.load(TinkProcessor.class, TinkProcessor.class.getClassLoader()).iterator().next();
    }

    public static TinkProcessor newInstance(Output output)
    {
        return newInstance(output, null);
    }

    public static TinkProcessor newInstance(Output output, Config config)
    {
        TinkProcessor instance = newInstance();

        instance.setOutput(output);
        if (config != null)
        {
            instance.setConfig(config);
        }

        return instance;
    }

    public Config getConfig()
    {
        return config;
    }

    public void setConfig(Config value)
    {
        this.config = value;
    }

    public Output getOutput()
    {
        return output;
    }

    public void setOutput(Output value)
    {
        output = value;
    }

    public static interface Config
    {
        FileObject getData();

        File getOutputDirectory();

        FileObject getTemplate();

        Iterable listInput() throws TinkException;
    }

    public static class SimpleConfig implements Config
    {
        private FileObject data;
        private File inputDirectory;
        private final Collection inputFiles = new ArrayList();
        private File outputDirectory;
        private FileObject template;

        @Override public FileObject getData()
        {
            return data;
        }

        public void setData(FileObject value)
        {
            data = value;
        }

        public File getInputDirectory()
        {
            return inputDirectory;
        }

        public void setInputDirectory(File value)
        {
            this.inputDirectory = value;
        }

        public Collection getInputFiles()
        {
            return inputFiles;
        }

        @Override public File getOutputDirectory()
        {
            return outputDirectory;
        }

        public void setOutputDirectory(File value)
        {
            this.outputDirectory = value;
        }

        @Override public FileObject getTemplate()
        {
            return template;
        }

        public void setTemplate(FileObject value)
        {
            template = value;
        }

        @Override public Iterable listInput() throws TinkException
        {
            Set files = new HashSet();

            for (String name : inputFiles)
            {
                files.add(new FileObject(getInputDirectory(), name));
            }

            return files;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy