package uk.co.mmscomputing.device.twain; import uk.co.mmscomputing.device.scanner.*; public class TwainFailureException extends TwainResultException{ /* Condition Codes: Application gets these by doing DG_CONTROL DAT_STATUS MSG_GET. */ /* #define TWCC_CUSTOMBASE 0x8000 #define TWCC_SUCCESS 0 // It worked! #define TWCC_BUMMER 1 // Failure due to unknown causes #define TWCC_LOWMEMORY 2 // Not enough memory to perform operation #define TWCC_NODS 3 // No Data Source #define TWCC_MAXCONNECTIONS 4 // DS is connected to max possible applications #define TWCC_OPERATIONERROR 5 // DS or DSM reported error, application shouldn't #define TWCC_BADCAP 6 // Unknown capability #define TWCC_BADPROTOCOL 9 // Unrecognized MSG DG DAT combination #define TWCC_BADVALUE 10 // Data parameter out of range #define TWCC_SEQERROR 11 // DG DAT MSG out of expected sequence #define TWCC_BADDEST 12 // Unknown destination Application/Source in DSM_Entry #define TWCC_CAPUNSUPPORTED 13 // Capability not supported by source #define TWCC_CAPBADOPERATION 14 // Operation not supported by capability #define TWCC_CAPSEQERROR 15 // Capability has dependancy on other capability */ private int cc; public TwainFailureException(int cc){ super(createMessage("Failed during call to twain source.",cc),TwainConstants.TWRC_FAILURE); } public TwainFailureException(String msg,int cc){ super(createMessage(msg,cc),TwainConstants.TWRC_FAILURE); } public int getConditionCode(){return cc;} static private String createMessage(String msg,int cc){ try{ return msg+"\n\tcc="+TwainConstants.info[cc]; }catch(Exception e){ return msg+"\n\tcc=0x"+Integer.toHexString(cc); } } static public TwainFailureException create(int cc){ switch(cc){ case TWCC_BADCAP: return new TwainFailureException.BadCap(); case TWCC_CAPUNSUPPORTED: return new TwainFailureException.CapUnsupported(); } return new TwainFailureException(cc); } static public class BadCap extends TwainFailureException{ public BadCap(){super(TWCC_BADCAP);} } static public class CapUnsupported extends TwainFailureException{ public CapUnsupported(){super(TWCC_CAPUNSUPPORTED);} } }