updated control access

This commit is contained in:
Quality System Admin
2025-10-16 02:36:32 +03:00
parent 50c791e242
commit c96039542d
266 changed files with 32656 additions and 9 deletions

View File

@@ -0,0 +1,155 @@
package qz.printer.status.job;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import qz.printer.status.NativeStatus;
import java.util.Locale;
import java.util.SortedMap;
import java.util.TreeMap;
import static qz.printer.status.job.CupsJobStatusMap.CupsJobStatusType.*;
/**
* Created by Tres on 12/23/2020
*/
public enum CupsJobStatusMap implements NativeStatus.NativeMap {
// job-state
PENDING(STATE, NativeJobStatus.SPOOLING), // pending
PENDING_HELD(STATE, NativeJobStatus.PAUSED), // pending-held
PROCESSING(STATE, NativeJobStatus.SPOOLING), // processing
PROCESSING_STOPPED(STATE, NativeJobStatus.PAUSED), // processing-stopped
CANCELED(STATE, NativeJobStatus.CANCELED), // canceled
ABORTED(STATE, NativeJobStatus.ABORTED), // aborted
COMPLETED(STATE, NativeJobStatus.COMPLETE), // completed
// job-state-reasons. NativeJobStatus.UNMAPPED will fallback to the job-state instead
ABORTED_BY_SYSTEM(REASON, NativeJobStatus.ABORTED), // aborted-by-system
ACCOUNT_AUTHORIZATION_FAILED(REASON, NativeJobStatus.UNMAPPED), // account-authorization-failed
ACCOUNT_CLOSED(REASON, NativeJobStatus.UNMAPPED), // account-closed
ACCOUNT_INFO_NEEDED(REASON, NativeJobStatus.USER_INTERVENTION), // account-info-needed
ACCOUNT_LIMIT_REACHED(REASON, NativeJobStatus.UNMAPPED), // account-limit-reached
COMPRESSION_ERROR(REASON, NativeJobStatus.UNMAPPED), // compression-error
CONFLICTING_ATTRIBUTES(REASON, NativeJobStatus.UNMAPPED), // conflicting-attributes
CONNECTED_TO_DESTINATION(REASON, NativeJobStatus.UNMAPPED), // connected-to-destination
CONNECTING_TO_DESTINATION(REASON, NativeJobStatus.UNMAPPED), // connecting-to-destination
DESTINATION_URI_FAILED(REASON, NativeJobStatus.UNMAPPED), // destination-uri-failed
DIGITAL_SIGNATURE_DID_NOT_VERIFY(REASON, NativeJobStatus.UNMAPPED), // digital-signature-did-not-verify
DIGITAL_SIGNATURE_TYPE_NOT_SUPPORTED(REASON, NativeJobStatus.UNMAPPED), // digital-signature-type-not-supported
DOCUMENT_ACCESS_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-access-error
DOCUMENT_FORMAT_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-format-error
DOCUMENT_PASSWORD_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-password-error
DOCUMENT_PERMISSION_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-permission-error
DOCUMENT_SECURITY_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-security-error
DOCUMENT_UNPRINTABLE_ERROR(REASON, NativeJobStatus.UNMAPPED), // document-unprintable-error
ERRORS_DETECTED(REASON, NativeJobStatus.UNMAPPED), // errors-detected
JOB_CANCELED_AT_DEVICE(REASON, NativeJobStatus.CANCELED), // job-canceled-at-device
JOB_CANCELED_BY_OPERATOR(REASON, NativeJobStatus.CANCELED), // job-canceled-by-operator
JOB_CANCELED_BY_USER(REASON, NativeJobStatus.CANCELED), // job-canceled-by-user
JOB_COMPLETED_SUCCESSFULLY(REASON, NativeJobStatus.COMPLETE), // job-completed-successfully
JOB_COMPLETED_WITH_ERRORS(REASON, NativeJobStatus.COMPLETE), // job-completed-with-errors
JOB_COMPLETED_WITH_WARNINGS(REASON, NativeJobStatus.COMPLETE), // job-completed-with-warnings
JOB_DATA_INSUFFICIENT(REASON, NativeJobStatus.UNMAPPED), // job-data-insufficient
JOB_DELAY_OUTPUT_UNTIL_SPECIFIED(REASON, NativeJobStatus.SCHEDULED), // job-delay-output-until-specified
JOB_DIGITAL_SIGNATURE_WAIT(REASON, NativeJobStatus.UNMAPPED), // job-digital-signature-wait
JOB_FETCHABLE(REASON, NativeJobStatus.UNMAPPED), // job-fetchable
JOB_HELD_FOR_REVIEW(REASON, NativeJobStatus.SPOOLING), // job-held-for-review
JOB_HOLD_UNTIL_SPECIFIED(REASON, NativeJobStatus.PAUSED), // job-hold-until-specified
JOB_INCOMING(REASON, NativeJobStatus.UNMAPPED), // job-incoming
JOB_INTERPRETING(REASON, NativeJobStatus.UNMAPPED), // job-interpreting
JOB_OUTGOING(REASON, NativeJobStatus.UNMAPPED), // job-outgoing
JOB_PASSWORD_WAIT(REASON, NativeJobStatus.USER_INTERVENTION), // job-password-wait
JOB_PRINTED_SUCCESSFULLY(REASON, NativeJobStatus.COMPLETE), // job-printed-successfully
JOB_PRINTED_WITH_ERRORS(REASON, NativeJobStatus.COMPLETE), // job-printed-with-errors
JOB_PRINTED_WITH_WARNINGS(REASON, NativeJobStatus.COMPLETE), // job-printed-with-warnings
JOB_PRINTING(REASON, NativeJobStatus.PRINTING), // job-printing
JOB_QUEUED(REASON, NativeJobStatus.SPOOLING), // job-queued
JOB_QUEUED_FOR_MARKER(REASON, NativeJobStatus.SPOOLING), // job-queued-for-marker
JOB_RELEASE_WAIT(REASON, NativeJobStatus.UNMAPPED), // job-release-wait
JOB_RESTARTABLE(REASON, NativeJobStatus.UNMAPPED), // job-restartable
JOB_RESUMING(REASON, NativeJobStatus.SPOOLING), // job-resuming
JOB_SAVED_SUCCESSFULLY(REASON, NativeJobStatus.RETAINED), // job-saved-successfully
JOB_SAVED_WITH_ERRORS(REASON, NativeJobStatus.RETAINED), // job-saved-with-errors
JOB_SAVED_WITH_WARNINGS(REASON, NativeJobStatus.RETAINED), // job-saved-with-warnings
JOB_SAVING(REASON, NativeJobStatus.UNMAPPED), // job-saving
JOB_SPOOLING(REASON, NativeJobStatus.UNMAPPED), // job-spooling
JOB_STREAMING(REASON, NativeJobStatus.UNMAPPED), // job-streaming
JOB_SUSPENDED(REASON, NativeJobStatus.PAUSED), // job-suspended
JOB_SUSPENDED_BY_OPERATOR(REASON, NativeJobStatus.PAUSED), // job-suspended-by-operator
JOB_SUSPENDED_BY_SYSTEM(REASON, NativeJobStatus.PAUSED), // job-suspended-by-system
JOB_SUSPENDED_BY_USER(REASON, NativeJobStatus.PAUSED), // job-suspended-by-user
JOB_SUSPENDING(REASON, NativeJobStatus.UNMAPPED), // job-suspending
JOB_TRANSFERRING(REASON, NativeJobStatus.UNMAPPED), // job-transferring
JOB_TRANSFORMING(REASON, NativeJobStatus.UNMAPPED), // job-transforming
PRINTER_STOPPED(REASON, NativeJobStatus.PAUSED), // printer-stopped
PRINTER_STOPPED_PARTLY(REASON, NativeJobStatus.UNMAPPED), // printer-stopped-partly
PROCESSING_TO_STOP_POINT(REASON, NativeJobStatus.UNMAPPED), // processing-to-stop-point
QUEUED_IN_DEVICE(REASON, NativeJobStatus.UNMAPPED), // queued-in-device
RESOURCES_ARE_NOT_READY(REASON, NativeJobStatus.UNMAPPED), // resources-are-not-ready
RESOURCES_ARE_NOT_SUPPORTED(REASON, NativeJobStatus.UNMAPPED), // resources-are-not-supported
SERVICE_OFF_LINE(REASON, NativeJobStatus.UNMAPPED), // service-off-line
SUBMISSION_INTERRUPTED(REASON, NativeJobStatus.UNMAPPED), // submission-interrupted
UNSUPPORTED_ATTRIBUTES_OR_VALUES(REASON, NativeJobStatus.UNMAPPED), // unsupported-attributes-or-values
UNSUPPORTED_COMPRESSION(REASON, NativeJobStatus.UNMAPPED), // unsupported-compression
UNSUPPORTED_DOCUMENT_FORMAT(REASON, NativeJobStatus.UNMAPPED), // unsupported-document-format
WAITING_FOR_USER_ACTION(REASON, NativeJobStatus.USER_INTERVENTION), // waiting-for-user-action
WARNINGS_DETECTED(REASON, NativeJobStatus.UNKNOWN); // warnings-detected
private static final Logger log = LogManager.getLogger(CupsJobStatusMap.class);
private static SortedMap<String,NativeJobStatus> sortedReasonLookupTable;
private static SortedMap<String,NativeJobStatus> sortedStateLookupTable;
private final NativeJobStatus parent;
private final CupsJobStatusType type;
enum CupsJobStatusType {
STATE,
REASON;
}
CupsJobStatusMap(CupsJobStatusType type, NativeJobStatus parent) {
this.type = type;
this.parent = parent;
}
public static NativeJobStatus matchReason(String code) {
// Initialize a sorted map to speed up lookups
if(sortedReasonLookupTable == null) {
sortedReasonLookupTable = new TreeMap<>();
for(CupsJobStatusMap value : values()) {
if(value.type == REASON) {
sortedReasonLookupTable.put(value.name().toLowerCase(Locale.ENGLISH).replace("_", "-"), value.parent);
}
}
}
NativeJobStatus status = sortedReasonLookupTable.get(code);
if(status == null && !code.equalsIgnoreCase("none")) {
// Don't warn for "none"
log.warn("Printer job state-reason \"{}\" was not found", code);
}
return status;
}
public static NativeJobStatus matchState(String state) {
// Initialize a sorted map to speed up lookups
if(sortedStateLookupTable == null) {
sortedStateLookupTable = new TreeMap<>();
for(CupsJobStatusMap value : values()) {
if(value.type == STATE) {
sortedStateLookupTable.put(value.name().toLowerCase(Locale.ENGLISH).replace("_", "-"), value.parent);
}
}
}
return sortedStateLookupTable.getOrDefault(state, NativeJobStatus.UNKNOWN);
}
@Override
public NativeJobStatus getParent() {
return parent;
}
@Override
public Object getRawCode() {
return name().toLowerCase(Locale.ENGLISH).replace("_", "-");
}
}

View File

@@ -0,0 +1,45 @@
package qz.printer.status.job;
import org.apache.logging.log4j.Level;
import qz.printer.status.NativeStatus;
/**
* Created by kyle on 7/7/17.
*/
public enum NativeJobStatus implements NativeStatus {
ABORTED(Level.ERROR),
CANCELED(Level.WARN),
COMPLETE(Level.INFO),
DELETED(Level.INFO),
DELETING(Level.INFO),
ERROR(Level.ERROR),
OFFLINE(Level.ERROR),
PRINTING(Level.INFO),
SPOOLING(Level.INFO),
SCHEDULED(Level.INFO),
PAPEROUT(Level.WARN),
RETAINED(Level.INFO),
PAUSED(Level.WARN),
SENT(Level.INFO),
RESTART(Level.WARN),
RENDERING_LOCALLY(Level.INFO),
USER_INTERVENTION(Level.WARN),
UNMAPPED(Level.FATAL), // should never make it to the user
UNKNOWN(Level.INFO);
private Level level;
NativeJobStatus(Level level) {
this.level = level;
}
@Override
public Level getLevel() {
return level;
}
@Override
public NativeStatus getDefault() {
return UNKNOWN;
}
}

View File

@@ -0,0 +1,60 @@
package qz.printer.status.job;
import qz.printer.status.NativeStatus;
import java.util.SortedMap;
import java.util.TreeMap;
/**
* Created by tresf on 12/10/2020
*/
public enum WmiJobStatusMap implements NativeStatus.NativeMap {
EMPTY(NativeJobStatus.UNKNOWN, -0x00000001), // Fallback for a no-status message
PAUSED(NativeJobStatus.PAUSED, 0x00000001), // Job is paused
ERROR(NativeJobStatus.ERROR, 0x00000002), // An error is associated with the job
DELETING(NativeJobStatus.DELETING, 0x00000004), // Job is being deleted
SPOOLING(NativeJobStatus.SPOOLING, 0x00000008), // Job is spooling
PRINTING(NativeJobStatus.PRINTING, 0x00000010), // Job is printing
OFFLINE(NativeJobStatus.OFFLINE, 0x00000020), // Job is printing
PAPEROUT(NativeJobStatus.PAPEROUT, 0x00000040), // Printer is out of paper
PRINTED(NativeJobStatus.COMPLETE, 0x00000080), // Job has printed
DELETED(NativeJobStatus.DELETED, 0x00000100), // Job has been deleted
BLOCKED_DEVQ(NativeJobStatus.ABORTED, 0x00000200), // The driver cannot print the job
RESTART(NativeJobStatus.RESTART, 0x00000800), // Job has been restarted
COMPLETE(NativeJobStatus.SENT, 0x00001000), // Windows XP and later: Job is sent to the printer, but the job may not be printed yet
RETAINED(NativeJobStatus.RETAINED, 0x00002000), // Windows Vista and later: Job has been retained in the print queue and cannot be deleted (Edit: it actually can https://github.com/qzind/tray/issues/1305)
RENDERING_LOCALLY(NativeJobStatus.RENDERING_LOCALLY, 0x00004000), // Job rendering locally on the client
USER_INTERVENTION(NativeJobStatus.USER_INTERVENTION, 0x40000000); // Printer has an error that requires the user to do something
private static SortedMap<Integer,NativeJobStatus> sortedLookupTable;
private final NativeJobStatus parent;
private final int rawCode;
WmiJobStatusMap(NativeJobStatus parent, int rawCode) {
this.parent = parent;
this.rawCode = rawCode;
}
public static NativeJobStatus match(int code) {
// Initialize a sorted map to speed up lookups
if(sortedLookupTable == null) {
sortedLookupTable = new TreeMap<>();
for(WmiJobStatusMap value : values()) {
sortedLookupTable.put(value.rawCode, value.parent);
}
}
return sortedLookupTable.get(code);
}
@Override
public NativeStatus getParent() {
return parent;
}
@Override
public Object getRawCode() {
return rawCode;
}
}