/*
 * Copyright 2005 Jeremias Maerki
 *
 * 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.
 */
package sandbox;

import javax.print.DocFlavor;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.StreamPrintServiceFactory;

/**
 * @author Jeremias Maerki
 */
public class JPSEnum {

    public static void enumJPS() {
        System.out.println("*** PrintServices ***");
        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        if (services.length == 0) {
            System.out.println("No result");
        } 
        for (int i = 0; i < services.length; i++) {
            System.out.println(services[i].getName() + " - " + services[i].getClass().getName());
            DocFlavor[] supported = services[i].getSupportedDocFlavors();
            for (int j = 0; j < supported.length; j++) {
                System.out.println("-->" + supported[j]);
            }
        }
        
        System.out.println("*** StreamPrintServiceFactories ***");
        StreamPrintServiceFactory[] factories = 
            StreamPrintServiceFactory.lookupStreamPrintServiceFactories(
                //DocFlavor.SERVICE_FORMATTED.PRINTABLE, "application/postscript");
                //DocFlavor.SERVICE_FORMATTED.PRINTABLE, "application/pdf");
                //DocFlavor.SERVICE_FORMATTED.PRINTABLE, null);
                null, null);
        if (factories.length == 0) {
            System.out.println("No result");
        } 
        for (int i = 0; i < factories.length; i++) {
            System.out.println(factories[i].getOutputFormat() + " " + factories[i].getClass().getName());
            DocFlavor[] supported = factories[i].getSupportedDocFlavors();
            for (int j=0; j<supported.length; j++) {
                System.out.println("-->" + supported[j]);
            }
        }
    }
    
    public static void main(String[] args) {
        try {
            System.out.println(System.getProperty("os.name") + " " + System.getProperty("os.version"));
            System.out.println(System.getProperty("java.runtime.name"));
            System.out.println(System.getProperty("java.runtime.version"));
            enumJPS();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
