225 * @param severity Severity level. 226 * 227 * @return Set view of the individual {@link PrinterStateReason 228 * PrinterStateReason} attributes at the given {@link Severity 229 * Severity} level. 230 * 231 * @exception NullPointerException 232 * (unchecked exception) Thrown if <CODE>severity</CODE> is null. 233 */ 234 public Set<PrinterStateReason> printerStateReasonSet(Severity severity) { 235 if (severity == null) { 236 throw new NullPointerException("severity is null"); 237 } 238 return new PrinterStateReasonSet (severity, entrySet()); 239 } 240 241 private class PrinterStateReasonSet 242 extends AbstractSet<PrinterStateReason> 243 { 244 private Severity mySeverity; 245 private Set myEntrySet; 246 247 public PrinterStateReasonSet(Severity severity, Set entrySet) { 248 mySeverity = severity; 249 myEntrySet = entrySet; 250 } 251 252 public int size() { 253 int result = 0; 254 Iterator iter = iterator(); 255 while (iter.hasNext()) { 256 iter.next(); 257 ++ result; 258 } 259 return result; 260 } 261 262 public Iterator iterator() { 263 return new PrinterStateReasonSetIterator(mySeverity, 264 myEntrySet.iterator()); 265 } 266 } 267 268 private class PrinterStateReasonSetIterator implements Iterator { 269 private Severity mySeverity; 270 private Iterator myIterator; 271 private Map.Entry myEntry; 272 273 public PrinterStateReasonSetIterator(Severity severity, 274 Iterator iterator) { 275 mySeverity = severity; 276 myIterator = iterator; 277 goToNext(); 278 } 279 280 private void goToNext() { 281 myEntry = null; 282 while (myEntry == null && myIterator.hasNext()) { 283 myEntry = (Map.Entry) myIterator.next(); 284 if ((Severity) myEntry.getValue() != mySeverity) { 285 myEntry = null; 286 } 287 } 288 } 289 290 public boolean hasNext() { 291 return myEntry != null; 292 } 293 294 public Object next() { 295 if (myEntry == null) { 296 throw new NoSuchElementException(); 297 } 298 Object result = myEntry.getKey(); 299 goToNext(); 300 return result; 301 } 302 303 public void remove() { 304 throw new UnsupportedOperationException(); 305 } 306 } 307 308 } | 225 * @param severity Severity level. 226 * 227 * @return Set view of the individual {@link PrinterStateReason 228 * PrinterStateReason} attributes at the given {@link Severity 229 * Severity} level. 230 * 231 * @exception NullPointerException 232 * (unchecked exception) Thrown if <CODE>severity</CODE> is null. 233 */ 234 public Set<PrinterStateReason> printerStateReasonSet(Severity severity) { 235 if (severity == null) { 236 throw new NullPointerException("severity is null"); 237 } 238 return new PrinterStateReasonSet (severity, entrySet()); 239 } 240 241 private class PrinterStateReasonSet 242 extends AbstractSet<PrinterStateReason> 243 { 244 private Severity mySeverity; 245 // 246 private Set<Map.Entry<PrinterStateReason, Severity>> myEntrySet; 247 248 public PrinterStateReasonSet(Severity severity, 249 Set<Map.Entry<PrinterStateReason, Severity>> entrySet) { 250 mySeverity = severity; 251 myEntrySet = entrySet; 252 } 253 254 public int size() { 255 int result = 0; 256 Iterator<?> iter = iterator(); 257 while (iter.hasNext()) { 258 iter.next(); 259 ++ result; 260 } 261 return result; 262 } 263 264 public Iterator<PrinterStateReason> iterator() { 265 return new PrinterStateReasonSetIterator(mySeverity, 266 myEntrySet.iterator()); 267 } 268 } 269 270 private class PrinterStateReasonSetIterator implements Iterator<PrinterStateReason> { 271 private Severity mySeverity; 272 private Iterator<Map.Entry<PrinterStateReason, Severity>> myIterator; 273 private Map.Entry<PrinterStateReason, Severity> myEntry; 274 275 public PrinterStateReasonSetIterator(Severity severity, 276 Iterator<Map.Entry<PrinterStateReason, Severity>> iterator) { 277 mySeverity = severity; 278 myIterator = iterator; 279 goToNext(); 280 } 281 282 private void goToNext() { 283 myEntry = null; 284 while (myEntry == null && myIterator.hasNext()) { 285 myEntry = myIterator.next(); 286 if (myEntry.getValue() != mySeverity) { 287 myEntry = null; 288 } 289 } 290 } 291 292 public boolean hasNext() { 293 return myEntry != null; 294 } 295 296 public PrinterStateReason next() { 297 if (myEntry == null) { 298 throw new NoSuchElementException(); 299 } 300 PrinterStateReason result = myEntry.getKey(); 301 goToNext(); 302 return result; 303 } 304 305 public void remove() { 306 throw new UnsupportedOperationException(); 307 } 308 } 309 310 } |