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

com.google.code.appengine.awt.JobAttributes Maven / Gradle / Ivy

The newest version!
/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You 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.
 */
/**
 * @author Igor A. Pyankov
 */

package com.google.code.appengine.awt;

import org.apache.harmony.awt.internal.nls.Messages;

public final class JobAttributes implements Cloneable {

    private int copies;
    private int fromPage;
    private int maxPage;
    private int minPage;
    private int pageRanges[][];
    private int firstPage;
    private int lastPage;
    private int toPage;
    private String fileName;
    private String printer;
    private DefaultSelectionType defaultSelection;
    private DestinationType destination;
    private MultipleDocumentHandlingType multiDocHandling;
    private DialogType dialog;
    private SidesType sides;


    /* section of the nested classes */
    public static final class DefaultSelectionType {
        public static final DefaultSelectionType ALL
                                    = new DefaultSelectionType(0);
        public static final DefaultSelectionType RANGE
                                    = new DefaultSelectionType(1);
        public static final DefaultSelectionType SELECTION
                                    = new DefaultSelectionType(2);

        private DefaultSelectionType(int i){
            super();
        }

        private DefaultSelectionType(){
            this(0);
        }
    }

    public static final class DestinationType {
        public static final DestinationType FILE = new DestinationType(0);
        public static final DestinationType PRINTER = new DestinationType(1);

        private DestinationType(int i) {
            super();
        }
        private DestinationType() {
            this(0);
        }
    }

    public static final class DialogType{
        public static final DialogType COMMON = new DialogType(0);
        public static final DialogType NATIVE = new DialogType(1);
        public static final DialogType NONE = new DialogType(2);

        private DialogType(int i){
            super();
        }
        private DialogType(){
            this(0);
        }

    }

    public static final class MultipleDocumentHandlingType {
        public static final MultipleDocumentHandlingType
                            SEPARATE_DOCUMENTS_COLLATED_COPIES
                                = new MultipleDocumentHandlingType(0);
        public static final MultipleDocumentHandlingType
                            SEPARATE_DOCUMENTS_UNCOLLATED_COPIES
                            = new MultipleDocumentHandlingType(1);

        private MultipleDocumentHandlingType(int i){
            super();
        }

        private MultipleDocumentHandlingType(){
            this(0);
        }
    }

    public static final class SidesType{
        public static final SidesType ONE_SIDED = new SidesType(0);
        public static final SidesType TWO_SIDED_LONG_EDGE  = new SidesType(1);
        public static final SidesType TWO_SIDED_SHORT_EDGE = new SidesType(2);

        private SidesType(int i){
            super();
        }

        private SidesType(){
            this(0);
        }
    }
    /* end of the nested classes */

    public JobAttributes() {
        setDefaultSelection(DefaultSelectionType.ALL);
        setDestination(DestinationType.PRINTER);
        setDialog(DialogType.NATIVE);
        setMultipleDocumentHandlingToDefault();
        setSidesToDefault();
        setCopiesToDefault();
        setMaxPage(0x7fffffff);
        setMinPage(1);
    }

    public JobAttributes(JobAttributes obj){
            set(obj);
    }

    public JobAttributes(int copies,
            JobAttributes.DefaultSelectionType defaultSelection,
            JobAttributes.DestinationType destination,
            JobAttributes.DialogType dialog,
            String fileName,
            int maxPage,
            int minPage,
            JobAttributes.MultipleDocumentHandlingType multipleDocumentHandling,
            int[][] pageRanges,
            String printer,
            JobAttributes.SidesType sides){

        setCopies(copies);
        setDefaultSelection(defaultSelection);
        setDestination(destination);
        setDialog(dialog);
        setFileName(fileName);
        setMinPage(minPage);
        setMaxPage(maxPage);
        setMultipleDocumentHandling(multipleDocumentHandling);
        setPageRanges(pageRanges);
        setPrinter(printer);
        setSides(sides);
    }

    public void setCopiesToDefault() {
        setCopies(1);
    }

    public void setMultipleDocumentHandlingToDefault() {
        setMultipleDocumentHandling
           (MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES);
    }

    public void setSidesToDefault(){
        setSides(SidesType.ONE_SIDED);
    }

    public int getCopies(){
        return copies;
    }

    public void setCopies(int copies) {
        if(copies <= 0) {
            // awt.152=Invalid number of copies
            throw new IllegalArgumentException(Messages.getString("awt.152")); //$NON-NLS-1$
        }
        this.copies = copies;
    }

    public int getMaxPage(){
        return maxPage;
    }

    public void setMaxPage(int imaxPage) {
        if (imaxPage <= 0 || imaxPage < minPage) {
            // awt.153=Invalid value for maxPage
            throw new IllegalArgumentException(Messages.getString("awt.153")); //$NON-NLS-1$
        }
        maxPage = imaxPage;
    }

    public int getMinPage(){
        return minPage;
    }

    public void setMinPage(int iminPage) {
        if (iminPage <= 0 || iminPage > maxPage) {
            // awt.154=Invalid value for minPage
            throw new IllegalArgumentException(Messages.getString("awt.154")); //$NON-NLS-1$
        }
        minPage = iminPage;
    }

    public int getFromPage() {
        if (fromPage != 0) {
            return fromPage;
        }
        if (toPage != 0) {
            return getMinPage();
        }
        if (pageRanges != null) {
            return firstPage;
        }
        return getMinPage();
    }

    public void setFromPage(int ifromPage) {
        if (ifromPage <= 0 || ifromPage > toPage
                || ifromPage < minPage || ifromPage > maxPage) {
            // awt.155=Invalid value for fromPage
            throw new IllegalArgumentException(Messages.getString("awt.155")); //$NON-NLS-1$
        }
        fromPage = ifromPage;
    }

    public int getToPage() {
        if (toPage != 0) {
            return toPage;
        }
        if (fromPage != 0) {
            return fromPage;
        }
        if (pageRanges != null) {
            return lastPage;
        }
        return getMinPage();
    }

    public void setToPage(int itoPage) {
        if (itoPage <= 0 || itoPage < fromPage
                || itoPage < minPage
                || itoPage > maxPage) {
            // awt.156=Invalid value for toPage
            throw new IllegalArgumentException(Messages.getString("awt.156")); //$NON-NLS-1$
        }
        toPage = itoPage;
    }

    public String getPrinter(){
        return printer;
    }

    public void setPrinter(String printer){
        this.printer = printer;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getFileName() {
        return fileName;
    }

    public int[][] getPageRanges() {
        int prl = pageRanges.length;
        int pr[][];
        if (pageRanges != null) {
            pr = new int[prl][2];
            for (int i = 0; i < prl; i++) {
                pr[i][0] = pageRanges[i][0];
                pr[i][1] = pageRanges[i][1];
            }
            return pr;
        }
        pr = new int[1][2];
        if (fromPage != 0 || toPage != 0) {
            pr[0][0] = fromPage;
            pr[0][1] = toPage;
        } else {
            pr[0][0] = minPage;
            pr[0][1] = minPage;
        }
        return pr;
    }

    public void setPageRanges(int[][] pr) {
        // awt.157=Invalid value for pageRanges
        String msg = Messages.getString("awt.157"); //$NON-NLS-1$

        if(pr == null) {
            throw new IllegalArgumentException(msg);
        }
        
        int n1 = 0;
        int n2 = 0;
        int prl = pr.length;

        for(int k = 0; k < prl; k++) {
            if(pr[k] == null || pr[k].length != 2
                    || pr[k][0] <= n2 || pr[k][1] < pr[k][0]) {
                throw new IllegalArgumentException(msg);
            }

            n2 = pr[k][1];
            if(n1 == 0) {
                n1 = pr[k][0];
            }
        }

        if(n1 < minPage || n2 > maxPage) {
            throw new IllegalArgumentException(msg);
        }

        pageRanges = new int[prl][2];

        for(int k = 0; k < prl; k++) {
            pageRanges[k][0] = pr[k][0];
            pageRanges[k][1] = pr[k][1];
        }
        firstPage = n1;
        lastPage = n2;
    }

    public DestinationType getDestination() {
        return destination;
    }

    public void setDestination(JobAttributes.DestinationType destination) {
        if(destination == null){
            // awt.158=Invalid value for destination
            throw new IllegalArgumentException(Messages.getString("awt.158")); //$NON-NLS-1$
        }
        this.destination = destination;
    }

    public DialogType getDialog() {
        return dialog;
    }

    public void setDialog(JobAttributes.DialogType dialog) {
        if(dialog == null) {
            // awt.159=Invalid value for dialog
            throw new IllegalArgumentException(Messages.getString("awt.159")); //$NON-NLS-1$
        }
        this.dialog = dialog;
    }


    public JobAttributes.DefaultSelectionType getDefaultSelection() {
        return defaultSelection;
    }

    public void setDefaultSelection(
            JobAttributes.DefaultSelectionType a_defaultSelection) {
        if (a_defaultSelection == null) {
            // awt.15A=Invalid value for defaultSelection
            throw new IllegalArgumentException(Messages.getString("awt.15A")); //$NON-NLS-1$
        }
        this.defaultSelection = a_defaultSelection;
    }

    public JobAttributes.MultipleDocumentHandlingType
            getMultipleDocumentHandling(){
        return multiDocHandling;
    }

    public void setMultipleDocumentHandling
        (JobAttributes.MultipleDocumentHandlingType multipleDocumentHandling){

        if(multipleDocumentHandling == null) {
            // awt.15B=Invalid value for multipleDocumentHandling
            throw new IllegalArgumentException(Messages.getString("awt.15B")); //$NON-NLS-1$
        }
        multiDocHandling = multipleDocumentHandling;
    }

    public JobAttributes.SidesType getSides(){
        return sides;
    }

    public void setSides(JobAttributes.SidesType sides){

        if(sides == null) {
            // awt.15C=Invalid value for attribute sides
            throw new IllegalArgumentException(Messages.getString("awt.15C")); //$NON-NLS-1$
        }
        this.sides = sides;
    }

    public void set(JobAttributes obj) {
        copies = obj.copies;
        defaultSelection = obj.defaultSelection;
        destination = obj.destination;
        dialog = obj.dialog;
        fileName = obj.fileName;
        printer = obj.printer;
        multiDocHandling = obj.multiDocHandling;
        firstPage = obj.firstPage;
        lastPage = obj.lastPage;
        sides = obj.sides;
        fromPage = obj.fromPage;
        toPage = obj.toPage;
        maxPage = obj.maxPage;
        minPage = obj.minPage;
        if (obj.pageRanges == null) {
            pageRanges = null;
        } else {
            setPageRanges(obj.pageRanges);
        }
    }

    @Override
    public String toString(){
        /* The format is based on 1.5 release behavior 
         * which can be revealed by the following code:
         * System.out.println(new JobAttributes());
         */

        String s = "Page-ranges ["; //$NON-NLS-1$
        int k = pageRanges.length-1;
        for(int i = 0; i <= k ; i++)            {
            s += pageRanges[i][0] + "-" //$NON-NLS-1$
               + pageRanges[i][1] + ((i < k)? ",": ""); //$NON-NLS-1$ //$NON-NLS-2$
        }
        s += "], copies=" + getCopies() //$NON-NLS-1$
            + ",defSelection=" + getDefaultSelection() //$NON-NLS-1$
            + ",dest=" + getDestination() //$NON-NLS-1$
            + ",fromPg=" + getFromPage() //$NON-NLS-1$
            + ",toPg=" + getToPage() //$NON-NLS-1$
            + ",minPg=" + getMinPage() //$NON-NLS-1$
            + ",maxPg=" + getMaxPage() //$NON-NLS-1$
            + ",multiple-document-handling=" //$NON-NLS-1$
            + getMultipleDocumentHandling()
            + ",fileName=" + getFileName() //$NON-NLS-1$
            + ",printer=" + getPrinter() //$NON-NLS-1$
            + ",dialog=" + getDialog() //$NON-NLS-1$
            + ",sides=" + getSides(); //$NON-NLS-1$
        return s;
    }

    @Override
    public int hashCode() {
        int hash = this.toString().hashCode();
        return hash;
    }

    @Override
    public Object clone() {
        JobAttributes ja = new JobAttributes(this);
        return ja;
    }

    @Override
    public boolean equals(Object obj){
        if(!(obj instanceof JobAttributes)){
            return false;
        }
        JobAttributes ja = (JobAttributes)obj;

        if(fileName == null){
            if(ja.fileName != null) {
                return false;
            }
        } else {
            if(!fileName.equals(ja.fileName)) {
                return false;
            }
        }

        if(printer == null) {
            if(ja.printer != null){
                return false;
            }
        } else {
            if(!printer.equals(ja.printer)){
                return false;
            }
        }

        if(pageRanges == null) {
            if(ja.pageRanges != null) {
                return false;
            }
        } else {
            if(ja.pageRanges == null){
                return false;
            }
            if(pageRanges.length != ja.pageRanges.length){
                return false;
            }
            for (int[] element : pageRanges) {
                if(element[0] != element[0]
                || element[1] != element[1]){
                    return false;
                }
            }
        }
        if(copies != ja.copies){
            return false;
        }
        if(defaultSelection != ja.defaultSelection){
            return false;
        }
        if(destination != ja.destination){
            return false;
        }
        if(dialog != ja.dialog){
            return false;
        }
        if(maxPage != ja.maxPage){
            return false;
        }
        if(minPage != ja.minPage){
            return false;
        }
        if(multiDocHandling != ja.multiDocHandling){
            return false;
        }
        if(firstPage != ja.firstPage){
            return false;
        }
        if(lastPage != ja.lastPage){
            return false;
        }
        if(sides != ja.sides){
            return false;
        }
        if(toPage != ja.toPage){
            return false;
        }
        if(fromPage != ja.fromPage){
            return false;
        }
        return true;
    }
}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy