// import java.io.*; import java.net.*; import java.util.*; public class CUPSPrinter { String printer_name; String printer_location; String printer_info; String printer_more_info; String[] printer_uri_supported; // Strings String[] uri_authentication_supported; // Strings String[] uri_security_supported; // Strings String attributes_charset; String attributes_natural_language; int printer_state; String printer_state_reasons; boolean printer_is_accepting_jobs; long printer_up_time; long printer_current_time; int queued_job_count; String[] pdl_override_supported; String[] ipp_versions_supported; int[] operations_supported; // Integers boolean multiple_document_jobs_supported; int multiple_operation_time_out; int[] multiple_document_handling_supported; // Integers String charset_configured; String natural_language_configured; String generated_natural_language_supported; String[] charset_supported; // Strings String document_format_default; String[] document_format_supported; // Strings String[] compression_supported; // Strings int job_priority_default; int job_priority_supported; int copies_default; int lower_copies_supported; int upper_copies_supported; boolean page_ranges_supported; int number_up_default; int[] number_up_supported; // integers int orientation_requested_default; int[] orientation_requested_supported; // Integers int job_quota_period; int job_k_limit; int job_page_limit; String job_sheets_default; // Should this be a list too? String[] job_sheets_supported; // Strings String device_uri; boolean color_supported; int pages_per_minute; String printer_make_and_model; String media_default; String[] media_supported; // Strings int finishings_default; int[] finishings_supported; // Integers int printer_type; // --------------------------------------------- // // Basic constructor. // public CUPSPrinter() { } // --------------------------------------------- // // Move the attributes from an ipp request // into a CUPSPrinter object. // public void updateAttribute( IPPAttribute a ) { IPPValue v; int i; if (a.name.compareTo("printer-name") == 0) { v = (IPPValue)a.values.get(0); printer_name = v.text; } else if (a.name.compareTo("printer-location") == 0) { v = (IPPValue)a.values.get(0); printer_location = v.text; } else if (a.name.compareTo("printer-info") == 0) { v = (IPPValue)a.values.get(0); printer_info = v.text; } else if (a.name.compareTo("printer-more-info") == 0) { v = (IPPValue)a.values.get(0); printer_more_info = v.text; } else if (a.name.compareTo("printer-uri-supported") == 0) { printer_uri_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); printer_uri_supported[i] = v.text; } } else if (a.name.compareTo("uri-authentication-supported") == 0) { uri_authentication_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); uri_authentication_supported[i] = v.text; } } else if (a.name.compareTo("uri-security-supported") == 0) { uri_security_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); uri_security_supported[i] = v.text; } } else if (a.name.compareTo("attributes-charset") == 0) { v = (IPPValue)a.values.get(0); attributes_charset = v.text; } else if (a.name.compareTo("attributes-natural-language") == 0) { v = (IPPValue)a.values.get(0); attributes_natural_language = v.text; } else if (a.name.compareTo("printer-state") == 0) { v = (IPPValue)a.values.get(0); printer_state = v.integer_value; } else if (a.name.compareTo("printer-state-reasons") == 0) { v = (IPPValue)a.values.get(0); printer_state_reasons = v.text; } else if (a.name.compareTo("printer-is-accepting-jobs") == 0) { v = (IPPValue)a.values.get(0); printer_is_accepting_jobs = v.boolean_value; } else if (a.name.compareTo("printer-up-time") == 0) { v = (IPPValue)a.values.get(0); printer_up_time = v.integer_value; } else if (a.name.compareTo("printer-current-time") == 0) { v = (IPPValue)a.values.get(0); printer_current_time = v.unix_time; // *** FIX *** } else if (a.name.compareTo("queue-job-count") == 0) { v = (IPPValue)a.values.get(0); queued_job_count = v.integer_value; } else if (a.name.compareTo("pdl-override-supported") == 0) { pdl_override_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); pdl_override_supported[i] = v.text; } } else if (a.name.compareTo("ipp-versions-supported") == 0) { ipp_versions_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); ipp_versions_supported[i] = v.text; } } else if (a.name.compareTo("operations-supported") == 0) { operations_supported = new int[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); operations_supported[i] = v.integer_value; } } else if (a.name.compareTo("multiple-document-jobs-supported") == 0) { v = (IPPValue)a.values.get(0); multiple_document_jobs_supported = v.boolean_value; } else if (a.name.compareTo("multiple-operation-time-out") == 0) { v = (IPPValue)a.values.get(0); multiple_operation_time_out = v.integer_value; } else if (a.name.compareTo("multiple-document-handling-supported") == 0) { multiple_document_handling_supported = new int[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); multiple_document_handling_supported[i] = v.integer_value; } } else if (a.name.compareTo("charset-configured") == 0) { v = (IPPValue)a.values.get(0); charset_configured = v.text; } else if (a.name.compareTo("natural-language-configured") == 0) { v = (IPPValue)a.values.get(0); natural_language_configured = v.text; } else if (a.name.compareTo("generated-natural-language-supported") == 0) { // *** Should this be a list too? v = (IPPValue)a.values.get(0); generated_natural_language_supported = v.text; } else if (a.name.compareTo("charset-supported") == 0) { charset_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); charset_supported[i] = v.text; } } else if (a.name.compareTo("document-format-default") == 0) { v = (IPPValue)a.values.get(0); document_format_default = v.text; } else if (a.name.compareTo("document-format-supported") == 0) { document_format_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); document_format_supported[i] = v.text; } } else if (a.name.compareTo("compression-supported") == 0) { compression_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); compression_supported[i] = v.text; } } else if (a.name.compareTo("job-priority-default") == 0) { v = (IPPValue)a.values.get(0); job_priority_default = v.integer_value; } else if (a.name.compareTo("job-priority-supported") == 0) { // *** Should be a list? *** v = (IPPValue)a.values.get(0); job_priority_supported = v.integer_value; } else if (a.name.compareTo("copies-default") == 0) { v = (IPPValue)a.values.get(0); copies_default = v.integer_value; } else if (a.name.compareTo("copies-supported") == 0) { v = (IPPValue)a.values.get(0); lower_copies_supported = v.lower; upper_copies_supported = v.upper; } else if (a.name.compareTo("page-ranges-supported") == 0) { v = (IPPValue)a.values.get(0); page_ranges_supported = v.boolean_value; } else if (a.name.compareTo("number-up-default") == 0) { v = (IPPValue)a.values.get(0); number_up_default = v.integer_value; } else if (a.name.compareTo("number-up-supported") == 0) { number_up_supported = new int[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); number_up_supported[i] = v.integer_value; } } else if (a.name.compareTo("orientation-requested-default") == 0) { v = (IPPValue)a.values.get(0); orientation_requested_default = v.integer_value; } else if (a.name.compareTo("orientation-requested-supported") == 0) { orientation_requested_supported = new int[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); orientation_requested_supported[i] = v.integer_value; } } else if (a.name.compareTo("job-quota-period") == 0) { v = (IPPValue)a.values.get(0); job_quota_period = v.integer_value; } else if (a.name.compareTo("job-k-limit") == 0) { v = (IPPValue)a.values.get(0); job_k_limit = v.integer_value; } else if (a.name.compareTo("job-page-limit") == 0) { v = (IPPValue)a.values.get(0); job_page_limit = v.integer_value; } else if (a.name.compareTo("job-sheets-default") == 0) { v = (IPPValue)a.values.get(0); job_sheets_default = v.text; } else if (a.name.compareTo("job-sheets-supported") == 0) { job_sheets_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); job_sheets_supported[i] = v.text; } } else if (a.name.compareTo("device-uri") == 0) { v = (IPPValue)a.values.get(0); device_uri = v.text; } else if (a.name.compareTo("color-supported") == 0) { v = (IPPValue)a.values.get(0); color_supported = v.boolean_value; } else if (a.name.compareTo("pages-per-minute") == 0) { v = (IPPValue)a.values.get(0); pages_per_minute = v.integer_value; } else if (a.name.compareTo("printer-make-and-model") == 0) { v = (IPPValue)a.values.get(0); printer_make_and_model = v.text; } else if (a.name.compareTo("media-default") == 0) { v = (IPPValue)a.values.get(0); media_default = v.text; } else if (a.name.compareTo("media-supported") == 0) { media_supported = new String[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); media_supported[i] = v.text; } } else if (a.name.compareTo("finishings-default") == 0) { v = (IPPValue)a.values.get(0); finishings_default = v.integer_value; } else if (a.name.compareTo("finishings-supported") == 0) { finishings_supported = new int[a.values.size()]; for (i=0; i < a.values.size(); i++) { v = (IPPValue)a.values.get(i); finishings_supported[i] = v.integer_value; } } else if (a.name.compareTo("printer-type") == 0) { v = (IPPValue)a.values.get(0); printer_type = v.integer_value; } } // End of updateAttribute() } // End of CUPSPrinter class