Java 类javax.print.attribute.standard.CopiesSupported 实例源码

项目:javify    文件:IppPrintService.java   
/**
 * @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()]);
}
项目:javify    文件:IppPrintService.java   
/**
 * Called to handle the supported attribute values response for the given
 * category. This might be overridden by subclasses with different requirements
 * for parsing/handling the response from the GetPrinterAttributes.
 *
 * @param response the response of the GetPrinterAttributes IPP request
 * @param category the category for which the supported values are requested
 * @return A object indicating the supported values for the given attribute
 * category, or <code>null</code> if this print service doesn't support the
 * given attribute category at all.
 *
 * @see #getSupportedAttributeValues(Class, DocFlavor, AttributeSet)
 */
protected Object handleSupportedAttributeValuesResponse(IppResponse response,
                                                        Class<? extends Attribute> category)
{
  List<Map<Class<? extends Attribute>, Set<Attribute>>> printerAtts =
    response.getPrinterAttributes();

  // only one will be returned
  Map<Class<? extends Attribute>, Set<Attribute>> printerAttribute = printerAtts.get(0);
  Class<? extends Attribute> suppCategory = IppUtilities.getSupportedCategory(category);
  Set<Attribute> attr = printerAttribute.get(suppCategory);

  // We sometime assume its a single instance with arbritrary value just indicating
  // support or an array which is returned. This is because I sometimes just choosed
  // what sounds right to me - as I have yet to find a printer which supports every
  // special category in the SUN implementation to see what they return :-)

  //  Map whats in the JSP API
  if (suppCategory.equals(JobPrioritySupported.class))
    return (JobPrioritySupported) attr.iterator().next();
  if (suppCategory.equals(JobHoldUntilSupported.class))
    return new JobHoldUntil(new Date());
  if (suppCategory.equals(JobSheetsSupported.class))
    return JobSheetsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MultipleDocumentHandlingSupported.class))
    return MultipleDocumentHandlingSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CopiesSupported.class))
    return (CopiesSupported) attr.iterator().next();
  if (suppCategory.equals(FinishingsSupported.class))
    return FinishingsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PageRangesSupported.class))
    return new PageRanges[] { new PageRanges(1, Integer.MAX_VALUE) };
  if (suppCategory.equals(OrientationRequestedSupported.class))
    return OrientationRequestedSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MediaSupported.class))
    return MediaSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrinterResolutionSupported.class))
    return PrinterResolutionSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrintQualitySupported.class))
    return PrintQualitySupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CompressionSupported.class))
    return CompressionSupported.getAssociatedAttributeArray(attr);
  // Special handling as it might also be in range of integers
  if (suppCategory.equals(NumberUpSupported.class))
    {
      if (attr.size() == 1) // number-up maybe in rangeofintegers
        return attr.iterator().next();

      int[][] members = new int[attr.size()][2];
      Iterator<Attribute> it = attr.iterator();
      for (int j = 0; j < attr.size(); j++)
        {
          int value = ((NumberUpSupported) it.next()).getMembers()[0][0];
          members[j] = new int[] { value, value };
        }

      NumberUpSupported supported = new NumberUpSupported(members);
      return supported;
    }

  return null;
}
项目:javify    文件:IppPrintService.java   
/**
 * @see PrintService#isAttributeValueSupported(Attribute, DocFlavor, AttributeSet)
 */
public boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor,
                                         AttributeSet attributes)
{
  // just redirect to getSupportedAttributeValues
  Object values = getSupportedAttributeValues(attrval.getCategory(),
                                              flavor, attributes);
  // null means none supported
  if (values == null)
    return false;

  // object may be an array
  if (values.getClass().isArray())
    return Arrays.asList((Object[]) values).contains(attrval);

  // may be a single instance of the category (value is irrelevant)
  if (values.getClass().equals(attrval.getCategory()))
    return true;

  // a single instance of another class to give the bounds
  // copies
  if (values.getClass().equals(CopiesSupported.class))
    return ((CopiesSupported) values).contains((IntegerSyntax) attrval);
  // number up
  if (values.getClass().equals(NumberUpSupported.class))
    return ((NumberUpSupported) values).contains((IntegerSyntax) attrval);
  // job priority
  if (values.getClass().equals(JobPrioritySupported.class))
    {
      JobPriority priority = (JobPriority) attrval;
      JobPrioritySupported maxSupported = (JobPrioritySupported) values;
      if (priority.getValue() < maxSupported.getValue())
        return true;
    }

  // I am unsure if these might also show up - not yet found a printer where
  // Suns implementation supports them:
  // JobImpressionsSupported, JobKOctetsSupported, JobMediaSheetsSupported

  return false;
}
项目:jvm-stm    文件:IppPrintService.java   
/**
 * @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()]);
}
项目:jvm-stm    文件:IppPrintService.java   
/**
 * Called to handle the supported attribute values response for the given
 * category. This might be overridden by subclasses with different requirements
 * for parsing/handling the response from the GetPrinterAttributes.
 * 
 * @param response the response of the GetPrinterAttributes IPP request
 * @param category the category for which the supported values are requested
 * @return A object indicating the supported values for the given attribute 
 * category, or <code>null</code> if this print service doesn't support the 
 * given attribute category at all.
 * 
 * @see #getSupportedAttributeValues(Class, DocFlavor, AttributeSet)
 */
protected Object handleSupportedAttributeValuesResponse(IppResponse response, 
  Class category)
{
  List printerAtts = response.getPrinterAttributes();

  // only one will be returned
  Map printerAttribute = (Map) printerAtts.get(0);
  Class suppCategory = IppUtilities.getSupportedCategory(category);
  Set attr = (Set) printerAttribute.get(suppCategory);

  // We sometime assume its a single instance with arbritrary value just indicating 
  // support or an array which is returned. This is because I sometimes just choosed
  // what sounds right to me - as I have yet to find a printer which supports every 
  // special category in the SUN implementation to see what they return :-)

  //  Map whats in the JSP API
  if (suppCategory.equals(JobPrioritySupported.class))
    return (JobPrioritySupported) attr.toArray(new JobPrioritySupported[1])[0];
  if (suppCategory.equals(JobHoldUntilSupported.class))
    return new JobHoldUntil(new Date());
  if (suppCategory.equals(JobSheetsSupported.class))
    return JobSheetsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MultipleDocumentHandlingSupported.class))
    return MultipleDocumentHandlingSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CopiesSupported.class))
    return (CopiesSupported) attr.toArray(new CopiesSupported[1])[0];
  if (suppCategory.equals(FinishingsSupported.class))
    return FinishingsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PageRangesSupported.class))
    return new PageRanges[] { new PageRanges(1, Integer.MAX_VALUE) };    
  if (suppCategory.equals(OrientationRequestedSupported.class))
    return OrientationRequestedSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MediaSupported.class))
    return MediaSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrinterResolutionSupported.class))
    return PrinterResolutionSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrintQualitySupported.class))
    return PrintQualitySupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CompressionSupported.class))
    return CompressionSupported.getAssociatedAttributeArray(attr);
  // Special handling as it might also be in range of integers
  if (suppCategory.equals(NumberUpSupported.class))
    {
      NumberUpSupported[] tmp = (NumberUpSupported[]) 
        attr.toArray(new NumberUpSupported[attr.size()]);

      if (attr.size() == 1) // number-up maybe in rangeofintegers
        return tmp[0];

      int[][] members = new int[attr.size()][2];
      for (int j = 0; j < attr.size(); j++)
        {
          int value = tmp[j].getMembers()[0][0];
          members[j] = new int[] { value, value };
        }

      NumberUpSupported supported = new NumberUpSupported(members);
      return supported;
    }

  return null;
}
项目:jvm-stm    文件:IppPrintService.java   
/**
 * @see PrintService#isAttributeValueSupported(Attribute, DocFlavor, AttributeSet)
 */
public boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor,
                                         AttributeSet attributes)
{
  // just redirect to getSupportedAttributeValues    
  Object values = getSupportedAttributeValues(attrval.getCategory(), 
                                              flavor, attributes);    
  // null means none supported
  if (values == null)
    return false;

  // object may be an array
  if (values.getClass().isArray())
    return Arrays.asList((Object[]) values).contains(attrval);

  // may be a single instance of the category (value is irrelevant)
  if (values.getClass().equals(attrval.getCategory()))
    return true;

  // a single instance of another class to give the bounds    
  // copies
  if (values.getClass().equals(CopiesSupported.class))
    return ((CopiesSupported) values).contains((IntegerSyntax) attrval);    
  // number up
  if (values.getClass().equals(NumberUpSupported.class))
    return ((NumberUpSupported) values).contains((IntegerSyntax) attrval);    
  // job priority
  if (values.getClass().equals(JobPrioritySupported.class))
    {
      JobPriority priority = (JobPriority) attrval;
      JobPrioritySupported maxSupported = (JobPrioritySupported) values;
      if (priority.getValue() < maxSupported.getValue())
        return true;
    }

  // I am unsure if these might also show up - not yet found a printer where 
  // Suns implementation supports them: 
  // JobImpressionsSupported, JobKOctetsSupported, JobMediaSheetsSupported

  return false;
}
项目:cn1    文件:WinPrintService.java   
public Object getSupportedAttributeValues(
                final Class<? extends Attribute> category,
                final DocFlavor flavor, final AttributeSet attributes) {
    checkArgs(category, flavor);

    try {
        if (OrientationRequested.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedOrientations(getPrinterHandle());
        } else if (Media.class.equals(category)
                        || MediaSizeName.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedMediaSizeNames(getPrinterHandle());
        } else if (MediaSize.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedMediaSizes(getPrinterHandle());
        } else if (CopiesSupported.class.equals(category)) {
            final int max = WinPrinterFactory
                            .getMaxNumberOfCopies(getPrinterHandle());
            return max > 1 ? new CopiesSupported(1, max)
                            : new CopiesSupported(1);
        } else if (PrintQuality.class.equals(category)) {
            return new PrintQuality[] { PrintQuality.HIGH,
                            PrintQuality.NORMAL, PrintQuality.DRAFT };
        } else if (Sides.class.equals(category)) {
            return WinPrinterFactory.isDuplexSupported(getPrinterHandle())
                            ? new Sides[] { Sides.ONE_SIDED,
                                            Sides.TWO_SIDED_SHORT_EDGE,
                                            Sides.TWO_SIDED_LONG_EDGE }
                            : new Sides[] { Sides.ONE_SIDED };
        } else if (SheetCollate.class.equals(category)) {
            return WinPrinterFactory.isDuplexSupported(getPrinterHandle())
                            ? new SheetCollate[] { SheetCollate.COLLATED,
                                            SheetCollate.UNCOLLATED }
                            : new SheetCollate[] { SheetCollate.UNCOLLATED };
        } else if (Chromaticity.class.equals(category)) {
            return WinPrinterFactory
                            .isColorPrintingSupported(getPrinterHandle())
                            ? new Chromaticity[] { Chromaticity.MONOCHROME,
                                            Chromaticity.COLOR }
                            : new Chromaticity[] { Chromaticity.MONOCHROME };
        } else if (PrinterResolution.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedPrinterResolutions(getPrinterHandle());
        } else if (PrintQuality.class.equals(category)) {
            return new PrintQuality[] { PrintQuality.HIGH,
                            PrintQuality.NORMAL, PrintQuality.DRAFT };
        }
    } catch (final PrintException ex) {
        throw new RuntimeException(ex);
    }

    return null;
}
项目:cn1    文件:GDIClient.java   
public Object getSupportedAttributeValues(Class category, DocFlavor flavor,
        AttributeSet attributes) {
    if (flavor != null &&
        (flavor.equals(DocFlavor.INPUT_STREAM.AUTOSENSE) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.AUTOSENSE) ||
         flavor.equals(DocFlavor.URL.AUTOSENSE) ||
         flavor.equals(DocFlavor.INPUT_STREAM.POSTSCRIPT) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.POSTSCRIPT) ||
         flavor.equals(DocFlavor.URL.POSTSCRIPT))) {
        return null;
    }
    if (category.equals(Copies.class)) {
        int copies = getCopiesSupported(serviceName);
        if (copies == 1) {
            return new CopiesSupported(1);
        } else if (copies > 1) {
            return new CopiesSupported(1, copies);
        }
    } else if (category.equals(Sides.class)) {
        if (getSidesSupported(serviceName)) {
            return new Sides[] {Sides.ONE_SIDED,
                                Sides.TWO_SIDED_SHORT_EDGE,
                                Sides.TWO_SIDED_LONG_EDGE,
                                Sides.DUPLEX,
                                Sides.TUMBLE};
        }
    } else if (category.equals(Media.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(MediaSizeName.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(Chromaticity.class)) {
        if (getColorSupported(serviceName)) {
            return new Chromaticity[] { Chromaticity.MONOCHROME,
                                        Chromaticity.COLOR };
        } else {
            return new Chromaticity[] { Chromaticity.MONOCHROME };
        }
    } else if (category.equals(OrientationRequested.class)) {
        if (getOrientationSupported(serviceName)) {
            return new OrientationRequested[]
                { OrientationRequested.PORTRAIT,
                  OrientationRequested.LANDSCAPE };
        }
    } else if (category.equals(PrinterResolution.class)) {
        int[] resolutions = getResolutionsSupported(serviceName);
        if (resolutions != null && resolutions.length > 1) {
            PrinterResolution[] res =
                new PrinterResolution[resolutions.length / 2];
            for (int i = 0; i < resolutions.length / 2; i++) {
                res[i] = new PrinterResolution(resolutions[i * 2],
                        resolutions[i * 2 + 1], PrinterResolution.DPI);
            }
            return res;
        }
    } else if (category.equals(SheetCollate.class)) {
        if (getCollateSupported(serviceName)) {
            return new SheetCollate[] { SheetCollate.COLLATED,
                                        SheetCollate.UNCOLLATED };
        }
    }
    return null;
}
项目:JamVM-PH    文件:IppPrintService.java   
/**
 * @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()]);
}
项目:JamVM-PH    文件:IppPrintService.java   
/**
 * Called to handle the supported attribute values response for the given
 * category. This might be overridden by subclasses with different requirements
 * for parsing/handling the response from the GetPrinterAttributes.
 * 
 * @param response the response of the GetPrinterAttributes IPP request
 * @param category the category for which the supported values are requested
 * @return A object indicating the supported values for the given attribute 
 * category, or <code>null</code> if this print service doesn't support the 
 * given attribute category at all.
 * 
 * @see #getSupportedAttributeValues(Class, DocFlavor, AttributeSet)
 */
protected Object handleSupportedAttributeValuesResponse(IppResponse response, 
  Class category)
{
  List printerAtts = response.getPrinterAttributes();

  // only one will be returned
  Map printerAttribute = (Map) printerAtts.get(0);
  Class suppCategory = IppUtilities.getSupportedCategory(category);
  Set attr = (Set) printerAttribute.get(suppCategory);

  // We sometime assume its a single instance with arbritrary value just indicating 
  // support or an array which is returned. This is because I sometimes just choosed
  // what sounds right to me - as I have yet to find a printer which supports every 
  // special category in the SUN implementation to see what they return :-)

  //  Map whats in the JSP API
  if (suppCategory.equals(JobPrioritySupported.class))
    return (JobPrioritySupported) attr.toArray(new JobPrioritySupported[1])[0];
  if (suppCategory.equals(JobHoldUntilSupported.class))
    return new JobHoldUntil(new Date());
  if (suppCategory.equals(JobSheetsSupported.class))
    return JobSheetsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MultipleDocumentHandlingSupported.class))
    return MultipleDocumentHandlingSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CopiesSupported.class))
    return (CopiesSupported) attr.toArray(new CopiesSupported[1])[0];
  if (suppCategory.equals(FinishingsSupported.class))
    return FinishingsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PageRangesSupported.class))
    return new PageRanges[] { new PageRanges(1, Integer.MAX_VALUE) };    
  if (suppCategory.equals(OrientationRequestedSupported.class))
    return OrientationRequestedSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MediaSupported.class))
    return MediaSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrinterResolutionSupported.class))
    return PrinterResolutionSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrintQualitySupported.class))
    return PrintQualitySupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CompressionSupported.class))
    return CompressionSupported.getAssociatedAttributeArray(attr);
  // Special handling as it might also be in range of integers
  if (suppCategory.equals(NumberUpSupported.class))
    {
      NumberUpSupported[] tmp = (NumberUpSupported[]) 
        attr.toArray(new NumberUpSupported[attr.size()]);

      if (attr.size() == 1) // number-up maybe in rangeofintegers
        return tmp[0];

      int[][] members = new int[attr.size()][2];
      for (int j = 0; j < attr.size(); j++)
        {
          int value = tmp[j].getMembers()[0][0];
          members[j] = new int[] { value, value };
        }

      NumberUpSupported supported = new NumberUpSupported(members);
      return supported;
    }

  return null;
}
项目:JamVM-PH    文件:IppPrintService.java   
/**
 * @see PrintService#isAttributeValueSupported(Attribute, DocFlavor, AttributeSet)
 */
public boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor,
                                         AttributeSet attributes)
{
  // just redirect to getSupportedAttributeValues    
  Object values = getSupportedAttributeValues(attrval.getCategory(), 
                                              flavor, attributes);    
  // null means none supported
  if (values == null)
    return false;

  // object may be an array
  if (values.getClass().isArray())
    return Arrays.asList((Object[]) values).contains(attrval);

  // may be a single instance of the category (value is irrelevant)
  if (values.getClass().equals(attrval.getCategory()))
    return true;

  // a single instance of another class to give the bounds    
  // copies
  if (values.getClass().equals(CopiesSupported.class))
    return ((CopiesSupported) values).contains((IntegerSyntax) attrval);    
  // number up
  if (values.getClass().equals(NumberUpSupported.class))
    return ((NumberUpSupported) values).contains((IntegerSyntax) attrval);    
  // job priority
  if (values.getClass().equals(JobPrioritySupported.class))
    {
      JobPriority priority = (JobPriority) attrval;
      JobPrioritySupported maxSupported = (JobPrioritySupported) values;
      if (priority.getValue() < maxSupported.getValue())
        return true;
    }

  // I am unsure if these might also show up - not yet found a printer where 
  // Suns implementation supports them: 
  // JobImpressionsSupported, JobKOctetsSupported, JobMediaSheetsSupported

  return false;
}
项目:classpath    文件:IppPrintService.java   
/**
 * @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()]);
}
项目:classpath    文件:IppPrintService.java   
/**
 * Called to handle the supported attribute values response for the given
 * category. This might be overridden by subclasses with different requirements
 * for parsing/handling the response from the GetPrinterAttributes.
 *
 * @param response the response of the GetPrinterAttributes IPP request
 * @param category the category for which the supported values are requested
 * @return A object indicating the supported values for the given attribute
 * category, or <code>null</code> if this print service doesn't support the
 * given attribute category at all.
 *
 * @see #getSupportedAttributeValues(Class, DocFlavor, AttributeSet)
 */
protected Object handleSupportedAttributeValuesResponse(IppResponse response,
                                                        Class<? extends Attribute> category)
{
  List<Map<Class<? extends Attribute>, Set<Attribute>>> printerAtts =
    response.getPrinterAttributes();

  // only one will be returned
  Map<Class<? extends Attribute>, Set<Attribute>> printerAttribute = printerAtts.get(0);
  Class<? extends Attribute> suppCategory = IppUtilities.getSupportedCategory(category);
  Set<Attribute> attr = printerAttribute.get(suppCategory);

  // We sometime assume its a single instance with arbritrary value just indicating
  // support or an array which is returned. This is because I sometimes just choosed
  // what sounds right to me - as I have yet to find a printer which supports every
  // special category in the SUN implementation to see what they return :-)

  //  Map whats in the JSP API
  if (suppCategory.equals(JobPrioritySupported.class))
    return (JobPrioritySupported) attr.iterator().next();
  if (suppCategory.equals(JobHoldUntilSupported.class))
    return new JobHoldUntil(new Date());
  if (suppCategory.equals(JobSheetsSupported.class))
    return JobSheetsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MultipleDocumentHandlingSupported.class))
    return MultipleDocumentHandlingSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CopiesSupported.class))
    return (CopiesSupported) attr.iterator().next();
  if (suppCategory.equals(FinishingsSupported.class))
    return FinishingsSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PageRangesSupported.class))
    return new PageRanges[] { new PageRanges(1, Integer.MAX_VALUE) };
  if (suppCategory.equals(OrientationRequestedSupported.class))
    return OrientationRequestedSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(MediaSupported.class))
    return MediaSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrinterResolutionSupported.class))
    return PrinterResolutionSupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(PrintQualitySupported.class))
    return PrintQualitySupported.getAssociatedAttributeArray(attr);
  if (suppCategory.equals(CompressionSupported.class))
    return CompressionSupported.getAssociatedAttributeArray(attr);
  // Special handling as it might also be in range of integers
  if (suppCategory.equals(NumberUpSupported.class))
    {
      if (attr.size() == 1) // number-up maybe in rangeofintegers
        return attr.iterator().next();

      int[][] members = new int[attr.size()][2];
      Iterator<Attribute> it = attr.iterator();
      for (int j = 0; j < attr.size(); j++)
        {
          int value = ((NumberUpSupported) it.next()).getMembers()[0][0];
          members[j] = new int[] { value, value };
        }

      NumberUpSupported supported = new NumberUpSupported(members);
      return supported;
    }

  return null;
}
项目:classpath    文件:IppPrintService.java   
/**
 * @see PrintService#isAttributeValueSupported(Attribute, DocFlavor, AttributeSet)
 */
public boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor,
                                         AttributeSet attributes)
{
  // just redirect to getSupportedAttributeValues
  Object values = getSupportedAttributeValues(attrval.getCategory(),
                                              flavor, attributes);
  // null means none supported
  if (values == null)
    return false;

  // object may be an array
  if (values.getClass().isArray())
    return Arrays.asList((Object[]) values).contains(attrval);

  // may be a single instance of the category (value is irrelevant)
  if (values.getClass().equals(attrval.getCategory()))
    return true;

  // a single instance of another class to give the bounds
  // copies
  if (values.getClass().equals(CopiesSupported.class))
    return ((CopiesSupported) values).contains((IntegerSyntax) attrval);
  // number up
  if (values.getClass().equals(NumberUpSupported.class))
    return ((NumberUpSupported) values).contains((IntegerSyntax) attrval);
  // job priority
  if (values.getClass().equals(JobPrioritySupported.class))
    {
      JobPriority priority = (JobPriority) attrval;
      JobPrioritySupported maxSupported = (JobPrioritySupported) values;
      if (priority.getValue() < maxSupported.getValue())
        return true;
    }

  // I am unsure if these might also show up - not yet found a printer where
  // Suns implementation supports them:
  // JobImpressionsSupported, JobKOctetsSupported, JobMediaSheetsSupported

  return false;
}
项目:freeVM    文件:GDIClient.java   
public Object getSupportedAttributeValues(Class category, DocFlavor flavor,
        AttributeSet attributes) {
    if (flavor != null &&
        (flavor.equals(DocFlavor.INPUT_STREAM.AUTOSENSE) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.AUTOSENSE) ||
         flavor.equals(DocFlavor.URL.AUTOSENSE) ||
         flavor.equals(DocFlavor.INPUT_STREAM.POSTSCRIPT) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.POSTSCRIPT) ||
         flavor.equals(DocFlavor.URL.POSTSCRIPT))) {
        return null;
    }
    if (category.equals(Copies.class)) {
        int copies = getCopiesSupported(serviceName);
        if (copies == 1) {
            return new CopiesSupported(1);
        } else if (copies > 1) {
            return new CopiesSupported(1, copies);
        }
    } else if (category.equals(Sides.class)) {
        if (getSidesSupported(serviceName)) {
            return new Sides[] {Sides.ONE_SIDED,
                                Sides.TWO_SIDED_SHORT_EDGE,
                                Sides.TWO_SIDED_LONG_EDGE,
                                Sides.DUPLEX,
                                Sides.TUMBLE};
        }
    } else if (category.equals(Media.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(MediaSizeName.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(Chromaticity.class)) {
        if (getColorSupported(serviceName)) {
            return new Chromaticity[] { Chromaticity.MONOCHROME,
                                        Chromaticity.COLOR };
        } else {
            return new Chromaticity[] { Chromaticity.MONOCHROME };
        }
    } else if (category.equals(OrientationRequested.class)) {
        if (getOrientationSupported(serviceName)) {
            return new OrientationRequested[]
                { OrientationRequested.PORTRAIT,
                  OrientationRequested.LANDSCAPE };
        }
    } else if (category.equals(PrinterResolution.class)) {
        int[] resolutions = getResolutionsSupported(serviceName);
        if (resolutions != null && resolutions.length > 1) {
            PrinterResolution[] res =
                new PrinterResolution[resolutions.length / 2];
            for (int i = 0; i < resolutions.length / 2; i++) {
                res[i] = new PrinterResolution(resolutions[i * 2],
                        resolutions[i * 2 + 1], PrinterResolution.DPI);
            }
            return res;
        }
    } else if (category.equals(SheetCollate.class)) {
        if (getCollateSupported(serviceName)) {
            return new SheetCollate[] { SheetCollate.COLLATED,
                                        SheetCollate.UNCOLLATED };
        }
    }
    return null;
}
项目:freeVM    文件:WinPrintService.java   
public Object getSupportedAttributeValues(
                final Class<? extends Attribute> category,
                final DocFlavor flavor, final AttributeSet attributes) {
    checkArgs(category, flavor);

    try {
        if (OrientationRequested.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedOrientations(getPrinterHandle());
        } else if (Media.class.equals(category)
                        || MediaSizeName.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedMediaSizeNames(getPrinterHandle());
        } else if (MediaSize.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedMediaSizes(getPrinterHandle());
        } else if (CopiesSupported.class.equals(category)) {
            final int max = WinPrinterFactory
                            .getMaxNumberOfCopies(getPrinterHandle());
            return max > 1 ? new CopiesSupported(1, max)
                            : new CopiesSupported(1);
        } else if (PrintQuality.class.equals(category)) {
            return new PrintQuality[] { PrintQuality.HIGH,
                            PrintQuality.NORMAL, PrintQuality.DRAFT };
        } else if (Sides.class.equals(category)) {
            return WinPrinterFactory.isDuplexSupported(getPrinterHandle())
                            ? new Sides[] { Sides.ONE_SIDED,
                                            Sides.TWO_SIDED_SHORT_EDGE,
                                            Sides.TWO_SIDED_LONG_EDGE }
                            : new Sides[] { Sides.ONE_SIDED };
        } else if (SheetCollate.class.equals(category)) {
            return WinPrinterFactory.isDuplexSupported(getPrinterHandle())
                            ? new SheetCollate[] { SheetCollate.COLLATED,
                                            SheetCollate.UNCOLLATED }
                            : new SheetCollate[] { SheetCollate.UNCOLLATED };
        } else if (Chromaticity.class.equals(category)) {
            return WinPrinterFactory
                            .isColorPrintingSupported(getPrinterHandle())
                            ? new Chromaticity[] { Chromaticity.MONOCHROME,
                                            Chromaticity.COLOR }
                            : new Chromaticity[] { Chromaticity.MONOCHROME };
        } else if (PrinterResolution.class.equals(category)) {
            return WinPrinterFactory
                            .getSupportedPrinterResolutions(getPrinterHandle());
        } else if (PrintQuality.class.equals(category)) {
            return new PrintQuality[] { PrintQuality.HIGH,
                            PrintQuality.NORMAL, PrintQuality.DRAFT };
        }
    } catch (final PrintException ex) {
        throw new RuntimeException(ex);
    }

    return null;
}
项目:freeVM    文件:GDIClient.java   
public Object getSupportedAttributeValues(Class category, DocFlavor flavor,
        AttributeSet attributes) {
    if (flavor != null &&
        (flavor.equals(DocFlavor.INPUT_STREAM.AUTOSENSE) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.AUTOSENSE) ||
         flavor.equals(DocFlavor.URL.AUTOSENSE) ||
         flavor.equals(DocFlavor.INPUT_STREAM.POSTSCRIPT) ||
         flavor.equals(DocFlavor.BYTE_ARRAY.POSTSCRIPT) ||
         flavor.equals(DocFlavor.URL.POSTSCRIPT))) {
        return null;
    }
    if (category.equals(Copies.class)) {
        int copies = getCopiesSupported(serviceName);
        if (copies == 1) {
            return new CopiesSupported(1);
        } else if (copies > 1) {
            return new CopiesSupported(1, copies);
        }
    } else if (category.equals(Sides.class)) {
        if (getSidesSupported(serviceName)) {
            return new Sides[] {Sides.ONE_SIDED,
                                Sides.TWO_SIDED_SHORT_EDGE,
                                Sides.TWO_SIDED_LONG_EDGE,
                                Sides.DUPLEX,
                                Sides.TUMBLE};
        }
    } else if (category.equals(Media.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(MediaSizeName.class)) {
        return getSupportedMediaSizeNames();
    } else if (category.equals(Chromaticity.class)) {
        if (getColorSupported(serviceName)) {
            return new Chromaticity[] { Chromaticity.MONOCHROME,
                                        Chromaticity.COLOR };
        } else {
            return new Chromaticity[] { Chromaticity.MONOCHROME };
        }
    } else if (category.equals(OrientationRequested.class)) {
        if (getOrientationSupported(serviceName)) {
            return new OrientationRequested[]
                { OrientationRequested.PORTRAIT,
                  OrientationRequested.LANDSCAPE };
        }
    } else if (category.equals(PrinterResolution.class)) {
        int[] resolutions = getResolutionsSupported(serviceName);
        if (resolutions != null && resolutions.length > 1) {
            PrinterResolution[] res =
                new PrinterResolution[resolutions.length / 2];
            for (int i = 0; i < resolutions.length / 2; i++) {
                res[i] = new PrinterResolution(resolutions[i * 2],
                        resolutions[i * 2 + 1], PrinterResolution.DPI);
            }
            return res;
        }
    } else if (category.equals(SheetCollate.class)) {
        if (getCollateSupported(serviceName)) {
            return new SheetCollate[] { SheetCollate.COLLATED,
                                        SheetCollate.UNCOLLATED };
        }
    }
    return null;
}