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

项目: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;
}
项目: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;
}