Writers.java

package org.cugos.wkg;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

/**
 * Get a list of Writers or find a Writer by name.
 * Writers uses the Service Provider Interface (SPI) to look up registered Writers
 * @author Jared Erickson
 */
public class Writers {

    /**
     * Get a list of all registered Writers
     * @return A List of Writers
     */
    public static List<Writer> list() {
        List<Writer> writers = new ArrayList<>();
        ServiceLoader<Writer> serviceLoader = ServiceLoader.load(Writer.class);
        Iterator<Writer> iterator = serviceLoader.iterator();
        while(iterator.hasNext()) {
            writers.add(iterator.next());
        }
        return writers;
    }

    /**
     * Find a Writer by name or return null
     * @param name The name
     * @return A Writer or null
     */
    public static Writer find(String name) {
        List<Writer> writers = list();
        for(Writer writer : writers) {
            if (writer.getName().equalsIgnoreCase(name)) {
                return writer;
            }
        }
        return null;
    }

}