/** * Constructs an array from a set of -supported attributes. * @param set set to process * @return The constructed array. * * @see #getAssociatedAttribute() */ public static Finishings[] getAssociatedAttributeArray(Set<Attribute> set) { Finishings[] result = new Finishings[set.size()]; int j = 0; for (Attribute tmp : set) { result[j] = ((FinishingsSupported) tmp).getAssociatedAttribute(); j++; } return result; }
/** * Writes an attribute in EnumSyntax into the stream. * @param attribute the attribute * @throws IOException if thrown by the stream */ private void write(EnumSyntax attribute) throws IOException { // in JPS API enum syntax is used for enums, keyword and boolean types String name = ((Attribute) attribute).getName(); // the enum value types if (attribute instanceof Finishings || attribute instanceof OrientationRequested || attribute instanceof PrintQuality) { out.writeByte(IppValueTag.ENUM); out.writeShort(name.length()); out.write(name.getBytes()); out.writeShort(4); // length, enum is 4 bytes out.writeInt(attribute.getValue()); } // the boolean value type else if (attribute instanceof Fidelity) { out.writeByte(IppValueTag.BOOLEAN); out.writeShort(name.length()); out.write(name.getBytes()); out.writeShort(1); // length, boolean is 1 bytes out.writeByte(attribute.getValue() == 0 ? 0x00 : 0x01); } // the keyword value types else { String keyword = attribute.toString(); out.writeByte(IppValueTag.KEYWORD); out.writeShort(name.length()); out.write(name.getBytes()); out.writeShort(keyword.length()); out.write(keyword.getBytes()); } }
/** * Constructs an array from a set of -supported attributes. * @param set set to process * @return The constructed array. * * @see #getAssociatedAttribute() */ public static Finishings[] getAssociatedAttributeArray(Set set) { FinishingsSupported tmp; Finishings[] result = new Finishings[set.size()]; Iterator it = set.iterator(); int j = 0; while (it.hasNext()) { tmp = (FinishingsSupported) it.next(); result[j] = tmp.getAssociatedAttribute(); j++; } return result; }
/** * @see javax.print.PrintService#getDefaultAttributeValue(java.lang.Class) */ public Object getDefaultAttributeValue(Class<? extends Attribute> category) { // required attributes if (category.equals(Fidelity.class)) return Fidelity.FIDELITY_FALSE; if (category.equals(JobName.class)) return JOB_NAME; if (category.equals(RequestingUserName.class)) return REQUESTING_USER_NAME; // optional attributes if (category.equals(JobPriority.class) && printerAttr.containsKey(JobPriorityDefault.class)) return getPrinterDefaultAttribute(JobPriorityDefault.class); if (category.equals(JobHoldUntil.class) && printerAttr.containsKey(JobHoldUntilDefault.class)) return getPrinterDefaultAttribute(JobHoldUntilDefault.class); if (category.equals(JobSheets.class) && printerAttr.containsKey(JobSheetsDefault.class)) return getPrinterDefaultAttribute(JobSheetsDefault .class); if (category.equals(MultipleDocumentHandling.class) && printerAttr.containsKey(MultipleDocumentHandlingDefault.class)) return getPrinterDefaultAttribute(MultipleDocumentHandlingDefault.class); if (category.equals(Copies.class) && printerAttr.containsKey(CopiesDefault.class)) return getPrinterDefaultAttribute(CopiesDefault.class); if (category.equals(Finishings.class) && printerAttr.containsKey(FinishingsDefault.class)) return getPrinterDefaultAttribute(FinishingsDefault.class); if (category.equals(Sides.class) && printerAttr.containsKey(SidesDefault.class)) return getPrinterDefaultAttribute(SidesDefault.class); if (category.equals(NumberUp.class) && printerAttr.containsKey(NumberUpDefault.class)) return getPrinterDefaultAttribute(NumberUpDefault.class); if (category.equals(OrientationRequested.class) && printerAttr.containsKey(OrientationRequestedDefault.class)) return getPrinterDefaultAttribute(OrientationRequestedDefault.class); if (category.equals(Media.class) && printerAttr.containsKey(MediaDefault.class)) return getPrinterDefaultAttribute(MediaDefault.class); if (category.equals(PrinterResolution.class) && printerAttr.containsKey(PrinterResolutionDefault.class)) return getPrinterDefaultAttribute(PrinterResolutionDefault.class); if (category.equals(PrintQuality.class) && printerAttr.containsKey(PrintQualityDefault.class)) return getPrinterDefaultAttribute(PrintQualityDefault.class); if (category.equals(Compression.class) && printerAttr.containsKey(CompressionSupported.class)) return Compression.NONE; if (category.equals(PageRanges.class)) return new PageRanges(1, Integer.MAX_VALUE); return null; }
/** * @see javax.print.PrintService#getSupportedAttributeCategories() */ public Class<?>[] getSupportedAttributeCategories() { Set<Class<? extends Attribute>> categories = new HashSet<Class<? extends Attribute>>(); // Should only be job template attributes as of section 4.2 if (printerAttr.containsKey(JobPrioritySupported.class)) categories.add(JobPriority.class); if (printerAttr.containsKey(JobHoldUntilSupported.class)) categories.add(JobHoldUntil.class); if (printerAttr.containsKey(JobSheetsSupported.class)) categories.add(JobSheets.class); if (printerAttr.containsKey(MultipleDocumentHandlingSupported.class)) categories.add(MultipleDocumentHandling.class); if (printerAttr.containsKey(CopiesSupported.class)) categories.add(Copies.class); if (printerAttr.containsKey(FinishingsSupported.class)) { // if only none finishing is supported - it does not count as supported Set<FinishingsSupported> set = getPrinterAttributeSet(FinishingsSupported.class); if (! (set.size() == 1 && set.contains(FinishingsSupported.NONE))) categories.add(Finishings.class); } if (printerAttr.containsKey(PageRangesSupported.class)) categories.add(PageRanges.class); if (printerAttr.containsKey(SidesSupported.class)) categories.add(Sides.class); if (printerAttr.containsKey(NumberUpSupported.class)) categories.add(NumberUp.class); if (printerAttr.containsKey(OrientationRequestedSupported.class)) categories.add(OrientationRequested.class); if (printerAttr.containsKey(MediaSupported.class)) categories.add(Media.class); if (printerAttr.containsKey(PrinterResolutionSupported.class)) categories.add(PrinterResolution.class); if (printerAttr.containsKey(PrintQualitySupported.class)) categories.add(PrintQuality.class); // Chromaticity, Destination, MediaPrintableArea, // SheetCollate, PresentationDirection - not IPP attributes // attributes outside section 4.2 if (printerAttr.containsKey(CompressionSupported.class)) categories.add(Compression.class); if (printerAttr.containsKey(JobImpressionsSupported.class)) categories.add(JobImpressions.class); if (printerAttr.containsKey(JobKOctetsSupported.class)) categories.add(JobKOctets.class); if (printerAttr.containsKey(JobMediaSheetsSupported.class)) categories.add(JobMediaSheets.class); // always supported as required by IPP specification categories.add(Fidelity.class); categories.add(JobName.class); categories.add(RequestingUserName.class); return categories.toArray(new Class[categories.size()]); }
/** * @see javax.print.PrintService#getDefaultAttributeValue(java.lang.Class) */ public Object getDefaultAttributeValue(Class category) { // required attributes if (category.equals(Fidelity.class)) return Fidelity.FIDELITY_FALSE; if (category.equals(JobName.class)) return JOB_NAME; if (category.equals(RequestingUserName.class)) return REQUESTING_USER_NAME; // optional attributes if (category.equals(JobPriority.class) && printerAttr.containsKey(JobPriorityDefault.class)) return getPrinterDefaultAttribute(JobPriorityDefault.class); if (category.equals(JobHoldUntil.class) && printerAttr.containsKey(JobHoldUntilDefault.class)) return getPrinterDefaultAttribute(JobHoldUntilDefault.class); if (category.equals(JobSheets.class) && printerAttr.containsKey(JobSheetsDefault.class)) return getPrinterDefaultAttribute(JobSheetsDefault .class); if (category.equals(MultipleDocumentHandling.class) && printerAttr.containsKey(MultipleDocumentHandlingDefault.class)) return getPrinterDefaultAttribute(MultipleDocumentHandlingDefault.class); if (category.equals(Copies.class) && printerAttr.containsKey(CopiesDefault.class)) return getPrinterDefaultAttribute(CopiesDefault.class); if (category.equals(Finishings.class) && printerAttr.containsKey(FinishingsDefault.class)) return getPrinterDefaultAttribute(FinishingsDefault.class); if (category.equals(Sides.class) && printerAttr.containsKey(SidesDefault.class)) return getPrinterDefaultAttribute(SidesDefault.class); if (category.equals(NumberUp.class) && printerAttr.containsKey(NumberUpDefault.class)) return getPrinterDefaultAttribute(NumberUpDefault.class); if (category.equals(OrientationRequested.class) && printerAttr.containsKey(OrientationRequestedDefault.class)) return getPrinterDefaultAttribute(OrientationRequestedDefault.class); if (category.equals(Media.class) && printerAttr.containsKey(MediaDefault.class)) return getPrinterDefaultAttribute(MediaDefault.class); if (category.equals(PrinterResolution.class) && printerAttr.containsKey(PrinterResolutionDefault.class)) return getPrinterDefaultAttribute(PrinterResolutionDefault.class); if (category.equals(PrintQuality.class) && printerAttr.containsKey(PrintQualityDefault.class)) return getPrinterDefaultAttribute(PrintQualityDefault.class); if (category.equals(Compression.class) && printerAttr.containsKey(CompressionSupported.class)) return Compression.NONE; if (category.equals(PageRanges.class)) return new PageRanges(1, Integer.MAX_VALUE); return null; }
/** * @see javax.print.PrintService#getSupportedAttributeCategories() */ public Class[] getSupportedAttributeCategories() { Set categories = new HashSet(); // Should only be job template attributes as of section 4.2 if (printerAttr.containsKey(JobPrioritySupported.class)) categories.add(JobPriority.class); if (printerAttr.containsKey(JobHoldUntilSupported.class)) categories.add(JobHoldUntil.class); if (printerAttr.containsKey(JobSheetsSupported.class)) categories.add(JobSheets.class); if (printerAttr.containsKey(MultipleDocumentHandlingSupported.class)) categories.add(MultipleDocumentHandling.class); if (printerAttr.containsKey(CopiesSupported.class)) categories.add(Copies.class); if (printerAttr.containsKey(FinishingsSupported.class)) { // if only none finishing is supported - it does not count as supported Set set = getPrinterAttributeSet(FinishingsSupported.class); if (! (set.size() == 1 && set.contains(FinishingsSupported.NONE))) categories.add(Finishings.class); } if (printerAttr.containsKey(PageRangesSupported.class)) categories.add(PageRanges.class); if (printerAttr.containsKey(SidesSupported.class)) categories.add(Sides.class); if (printerAttr.containsKey(NumberUpSupported.class)) categories.add(NumberUp.class); if (printerAttr.containsKey(OrientationRequestedSupported.class)) categories.add(OrientationRequested.class); if (printerAttr.containsKey(MediaSupported.class)) categories.add(Media.class); if (printerAttr.containsKey(PrinterResolutionSupported.class)) categories.add(PrinterResolution.class); if (printerAttr.containsKey(PrintQualitySupported.class)) categories.add(PrintQuality.class); // Chromaticity, Destination, MediaPrintableArea, // SheetCollate, PresentationDirection - not IPP attributes // attributes outside section 4.2 if (printerAttr.containsKey(CompressionSupported.class)) categories.add(Compression.class); if (printerAttr.containsKey(JobImpressionsSupported.class)) categories.add(JobImpressions.class); if (printerAttr.containsKey(JobKOctetsSupported.class)) categories.add(JobKOctets.class); if (printerAttr.containsKey(JobMediaSheetsSupported.class)) categories.add(JobMediaSheets.class); // always supported as required by IPP specification categories.add(Fidelity.class); categories.add(JobName.class); categories.add(RequestingUserName.class); return (Class[]) categories.toArray(new Class[categories.size()]); }
public void testGetSupportedAttributeValues() { System.out .println("============= START testGetSupportedAttributeValues ================"); PrintService[] services; DocFlavor[] flavors = new DocFlavor[] { DocFlavor.INPUT_STREAM.GIF, DocFlavor.INPUT_STREAM.POSTSCRIPT, DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII }; services = PrintServiceLookup.lookupPrintServices(null, null); TestUtil.checkServices(services); for (int i = 0, ii = services.length; i < ii; i++) { System.out.println("\n----------- " + services[i].getName() + "----------"); Class[] cats = services[i].getSupportedAttributeCategories(); HashAttributeSet aset = new HashAttributeSet(); aset.add(MediaSizeName.ISO_A0); aset.add(OrientationRequested.LANDSCAPE); aset.add(Finishings.SADDLE_STITCH); for (int l = 0, ll = flavors.length; l < ll; l++) { if (services[i].isDocFlavorSupported(flavors[l])) { System.out.println(" " + flavors[l]); for (int j = 0, jj = cats.length; j < jj; j++) { System.out.println(" " + cats[j]); Object obj = services[i].getSupportedAttributeValues( cats[j], flavors[l], aset); if (obj != null && obj.getClass().isArray()) { Object[] a = (Object[]) obj; for (int k = 0, kk = a.length; k < kk; k++) { System.out.println(" " + a[k]); } } else { System.out.println(" " + obj); } } } } } System.out .println("============= END testGetSupportedAttributeValues ================"); }
public void testIsAttributeValueSupported() throws Exception { System.out .println("============= START GetUnsupportedAttributesTest ================"); PrintService[] services; DocFlavor[] flavors = new DocFlavor[] { DocFlavor.INPUT_STREAM.GIF, DocFlavor.INPUT_STREAM.POSTSCRIPT, DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII }; services = PrintServiceLookup.lookupPrintServices(null, null); TestUtil.checkServices(services); if (services.length > 0) { for (int i = 0, ii = services.length; i < ii; i++) { System.out.println("----------- " + services[i].getName() + "----------"); URI uri = null; try { uri = new URI("file:///c:/no/such/dir/print.out"); //uri = File.createTempFile("xxx", null).toURI(); } catch (URISyntaxException e) { fail(); } AttributeSet attrs = new HashAttributeSet(); attrs.add(Finishings.EDGE_STITCH); attrs.add(MediaSizeName.JAPANESE_DOUBLE_POSTCARD); attrs.add(new Destination(uri)); attrs.add(new DocumentName("Doc X", Locale.US)); attrs.add(new JobName("Job Y", Locale.US)); attrs.add(new RequestingUserName("User Z", Locale.US)); for (int j = 0; j < flavors.length; j++) { if (services[i].isDocFlavorSupported(flavors[j])) { AttributeSet aset = services[i] .getUnsupportedAttributes(flavors[j], attrs); if (aset == null) { fail("At least one attribute is unsupported"); } if (aset != null) { Attribute[] aarr = aset.toArray(); System.out .println("Usupported attributes fo DocFlavor " + flavors[j]); for (int k = 0, kk = aarr.length; k < kk; k++) { System.out.println("\t" + aarr[k]); } } } } } } System.out .println("============= END GetUnsupportedAttributesTest ================"); }
/** * Returns the equally enum of the standard attribute class * of this SupportedValuesAttribute enum. * * @return The enum of the standard attribute class. */ public Finishings getAssociatedAttribute() { return (Finishings) IppUtilities.getEnumAttribute( "finishings", new Integer(getValue())); }