⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transinterface.pas

📁 一个很好的学习例子,有需要的请下载研究,
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{
********************************************************************************
*                                                                              * 
*             (c) China Systems 1999 - 2003                                    *   
*                                                                              * 
*               Prexim Imaging development team.                               * 
*                                                                              * 
********************************************************************************
*
* Unit Name: TransInterface.pas
* Author:    Licwing
* Purpose:   Provides two components to operate communication between client and
             server, they don't care how to implement.
********************************************************************************
}
unit TransInterface;
//==============================================================================
{* |<PRE>
 Unit name: TransInterface.pas
 Author:    Licwing
 Purpose:   Provides two components to operate communication between client and
            server independent of a special protocol.

            How to transfer an error message from server to client?
              If an error occurs while processing an event at server, changed FLAG
            to FALSE and assigned the error message to ERRORMSG.

 Develop Platform: Win2K pro & sp3 + delphi6 & patch2
 Test Platform: 
 History:
   08-21-2003  V1.0  by Licwing
     -> first version
   08-26-2003  V1.0  by Licwing
     -> Transfer error messag from server to client
   08-27-2003  V1.1  by Licwing
     -> Pass username into Event on server while command is Send, Resend, Create,
        Reject or Release.
   08-28-2003  V1.2  by Licwing
     -> manage interface added
|</PRE>}         
//==============================================================================

interface
uses
  Classes, SysUtils,
  // PrExim Modules
  PrEximFileUtils, PrEximClasses, PrEximTrans, ScanClasses;

type
//==============================================================================
// Commands definition
//==============================================================================
  TMethodDefine = (mdSendFolder, mdSendTransaction,
    mdSaveTransaction, mdSaveFolder,
    mdResendFolder, mdResendTransaction,
    mdDeleteFolder, mdDeleteTransaction, mdDeleteDocument, mdDeletePage,
    mdCreateFolder, mdCreateTransaction, mdCreateDocument,
    mdReleaseFolder, mdReleaseTransaction, mdRejectFolder, mdRejectTransaction,
    mdGetAllFolders, mdGetAllTransaction, mdGetAllFaxes,
    mdGetTransaction, mdGetPage,
    mdGetAllRejectedFolder, mdGetAllReleaseFolder,
    mdMoveFax,
    mdGetUsers, mdGetUser, mdAddUser, mdUpdateUser, mdDeleteUser,
    mdGetFolderTypes, mdAddFolderType, mdDeleteFolderType,
    mdGetTransactionTypes, mdAddTransactionType, mdDeleteTransactionType,
    mdGetDocumentTypes, mdAddDocumentType, mdDeleteDocumentType,
    mdGetSubTransactionTypes, mdGetSubDocumentTypes,
    mdAddTxnTypeToFldType, mdAddDocTypeToTxnType,
    mdDeleteTxnTypeToFldType, mdDeleteDocTypeToTxnType,
    mdGetFldParameters, mdGetTxnParameters, mdGetDocParameters,
    mdGetFldParameter, mdGetTxnParameter, mdGetDocParameter,
    mdAddFldParameter, mdAddTxnParameter, mdAddDocParameter,
    mdUpdateFldParameter, mdUpdateTxnParameter, mdUpdateDocParameter,
    mdDeleteFldParameter, mdDeleteTxnParameter, mdDeleteDocParameter,
    mdGetListValuePairs, mdAddListValuePair,
    mdDeleteListValuePair, mdDeleteListValuePairDef,
    mdSetBranchID, mdGetBranchID, mdSetReleaserCount, mdGetReleaserCount,
    mdChangePassword, mdGetPassword);

type
//==============================================================================
// Events definition
//==============================================================================
  TOnFolderListEvent = procedure(AFolderList: TFolderList; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnFolderListExEvent = procedure(AFolderList: TFolderList;  const User: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnPageListEvent = procedure(APageList: TPageList; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnTransactionListEvent = procedure(ATransactionList: TTransactionList; var Flag: boolean;
        var ErrorMsg: string) of object;

  TOnFolderExEvent = procedure(AFolder: TFolder; const User: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnTransactionExEvent = procedure(ATransaction: TTransaction; const User: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnDocumentExEvent = procedure(ADocument: TDocument; const User: string;
        var Flag: boolean; var ErrorMsg: string) of object;


  TOnFolderEvent = procedure(AFolder: TFolder; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnTransactionEvent = procedure(ATransaction: TTransaction; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnDocumentEvent = procedure(ADocument: TDocument; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnPageEvent = procedure(APage: TPage; const User: string; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnPageIDEvent = procedure(APage: TPage; APageID: string; var Flag: boolean;
        var ErrorMsg: string) of object;



  TOnUserListEvent= procedure(AUserList: TUserList; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnUserEvent= procedure(AUser: TUser; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnUserExEvent= procedure(AUser: TUser; const Operator: string;
        var Flag: boolean; var ErrorMsg: string) of object;


  TOnTypeListEvent= procedure(ATypeList: TTypeList; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnSubTypeListEvent= procedure(AParentName: string; ATypeList: TTypeList;
        var Flag: boolean; var ErrorMsg: string) of object;

  TOnTypeEvent= procedure(AType: TType; const User: string; var Flag: boolean;
        var ErrorMsg: string) of object;
  TOnTypeExEvent= procedure(AType: TType; const Operator: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnSubTypeEvent= procedure(AParentTypeID: string; ASubTypeID: string;
        var Flag: boolean; var ErrorMsg: string) of object;

  TOnStringIDEvent= procedure(AID: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnGetStringEvent= procedure(var AID: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnStringIDExEvent= procedure(AID: string; User: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnGetPasswordEvent= procedure(var Password: string; User: string;
        var Flag: boolean; var ErrorMsg: string) of object;

  TOnDoubleStringIDEvent= procedure(AID: string; APairID: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnIntegerEvent= procedure(AValue: Integer; const User: string;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnGetIntegerEvent= procedure(var AValue: Integer;
        var Flag: boolean; var ErrorMsg: string) of object;


  TOnListValuePairsEvent= procedure(AID: string; APairList: TListValuePairList;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnListValuePairEvent= procedure(AParentID: string; APair: TListValuePair;
        var Flag: boolean; var ErrorMsg: string) of object;

  TOnParameterEvent= procedure(AParam: TParameter;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnParameterIDEvent= procedure(AID: string; AParam: TParameter;
        var Flag: boolean; var ErrorMsg: string) of object;
  TOnParameterListEvent= procedure(AParamList: TParameterList;
        var Flag: boolean; var ErrorMsg: string) of object;
        
//==============================================================================
// Interface definition
//==============================================================================

  TScanClient = class (TComponent)
  private
    FErrorCode: integer;
    FErrorMsg: string;
    fTransClient: TImageTransClient;
    procedure SetTransClient(const Value: TImageTransClient);

    function InternalGetTypes(const AObjectLevel: TStorageObjectLevel; ATypeList: TTypeList): boolean;
    function InternalAddType(const AObjectLevel: TStorageObjectLevel; AType: TType): boolean;
    function InternalDeleteType(const AObjectLevel: TStorageObjectLevel; ATypeID: string): boolean;

    function InternalGetSubTypes(const AParentLevel: TStorageObjectLevel; AName: string; ATypeList: TTypeList): boolean;
    function InternalAddSubType(const AParentLevel: TStorageObjectLevel; AParentTypeID: string; ASubTypeID: string): boolean;
    function InternalDeleteSubType(const AParentLevel: TStorageObjectLevel; AParentTypeID: string; ASubTypeID: string): boolean;

    function InternalGetParameters(const AObjectLevel: TStorageObjectLevel; AParamList: TParameterList): boolean;
    function InternalGetParameter(const AObjectLevel: TStorageObjectLevel; AID: String; AParameter: TParameter): boolean;
    function InternalAddParameter(const AObjectLevel: TStorageObjectLevel; AParameter: TParameter): boolean;
    function InternalUpdateParameter(const AObjectLevel: TStorageObjectLevel; AParameter: TParameter): boolean;
    function InternalDeleteParameter(const AObjectLevel: TStorageObjectLevel; AParamID: string): boolean;

    function InternalGetFolderList(ACmd: TMethodDefine; AFolders: TFolderList): boolean;
  protected
    procedure Notification(AComponent:TComponent;Operation:TOperation); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    function Login(const Username, Password: string; var UserRight: TUserRight): Boolean;
    procedure Logout;
    function GetUserProfile(Stream: TStream): boolean;

    function SendFolder(AFolder: TFolder): boolean;
    function SendTransaction(ATransaction: TTransaction): boolean;

    function ResendFolder(AFolder: TFolder): boolean;
    function ResendTransaction(ATransaction: TTransaction): boolean;

    function DeleteFolder(AFolder: TFolder): boolean;
    function DeleteTransaction(ATransaction: TTransaction): boolean;
    function DeleteDocument(ADocument: TDocument): boolean;
    function DeletePage(APage: TPage): boolean;

    function CreateFolder(AFolder: TFolder): boolean;
    function CreateTransaction(ATransaction: TTransaction): boolean;
    function CreateDocument(ADocument: TDocument): boolean;

    function ReleaseFolder(AFolder: TFolder): boolean;
    function ReleaseTransaction(ATransaction: TTransaction): boolean;
    function RejectFolder(AFolder: TFolder): boolean;
    function RejectTransaction(ATransaction: TTransaction): boolean;

    function GetAllFolders(AFolders: TFolderList): boolean;
    function GetAllTransaction(AFolder: TFolder): boolean;
    function GetAllFaxes(AFaxes: TPageList): boolean;
    function GetAllRejectedFolders(AFolders: TFolderList): boolean;
    function GetAllReleaseFolders(AFolders: TFolderList): boolean;

    function GetTransaction(ATransaction: TTransaction): boolean;
    function GetPage(APage: TPage): boolean;

    function MoveFax(AFax: TPage): boolean;

    function SaveTransaction(ATransaction: TTransaction): boolean;
    function SaveFolder(AFolder: TFolder): boolean;
    // User
    function GetUsers(AUserList: TUserList): boolean;
    function GetUser(AUserID: string; AUser: TUser): boolean;
    function AddUser(AUser: TUser): boolean;
    function UpdateUser(AUser: TUser): boolean;
    function DeleteUser(AUserID: string): boolean;

    // Folder, Transaction, Document types
    function GetFolderTypes(ATypeList: TTypeList): boolean;
    function AddFolderType(AType: TType): boolean;
    function DeleteFolderType(ATypeID: string): boolean;

    function GetTransactionTypes(ATypeList: TTypeList): boolean;
    function AddTransactionType(AType: TType): boolean;
    function DeleteTransactionType(ATypeID: string): boolean;

    function GetDocumentTypes(ATypeList: TTypeList): boolean;
    function AddDocumentType(AType: TType): boolean;
    function DeleteDocumentType(ATypeID: string): boolean;

    // Type relationships
    function GetSubTransactionTypes(AFolderName: string; ATypeList: TTypeList): boolean;
    function GetSubDocumentTypes(ATransactionName: string; ATypeList: TTypeList): boolean;
    function AddTransTypeToFolderType(AFolderTypeID, ATransactionTypeID: string): boolean;
    function AddDocTypeToTransType(ATransactionTypeID, ADocumentID: string): boolean;
    function DeleteTransTypeFromFolderType(AFolderTypeID, ATransactionTypeID: string): boolean;
    function DeleteDocTypeFromTransactionType(ATransactionTypeID, ADocumentID: string): boolean;

    //Parameters
    function GetFolderParameters(AParamList: TParameterList): boolean;
    function GetFolderParameter(AID: String; AParameter: TParameter): boolean;
    function AddFolderParameter(AParam: TParameter): boolean;
    function UpdateFolderParameter(AParam: TParameter): boolean;
    function DeleteFolderParameter(AID: String): boolean;

    function GetTransactionParameters(AParamList: TParameterList): boolean;
    function GetTransactionParameter(AID: String; AParameter: TParameter): boolean;
    function AddTransactionParameter(AParam: TParameter): boolean;
    function UpdateTransactionParameter(AParam: TParameter): boolean;
    function DeleteTransactionParameter(AID: String): boolean;

    function GetDocumentParameters(AParamList: TParameterList): boolean;
    function GetDocumentParameter(AID: String; AParameter: TParameter): boolean;
    function AddDocumentParameter(AParam: TParameter): boolean;
    function UpdateDocumentParameter(AParam: TParameter): boolean;
    function DeleteDocumentParameter(AID: String): boolean;

    //List type definition
    function GetListValuePairs(AID: string; APairList: TListValuePairList): boolean;
    function AddListValuePair(AID: string; APair: TListValuePair): boolean;
    function DeleteListValuePair(AParameterID, AListValuePairID: string): boolean;
    function DeleteListValuePairDef(AParameterID: string): boolean;

    //Utilities
    function SetBranchID(AID: string): boolean;
    function GetBranchID: string;
    function SetReleaserCount(ACount: integer): boolean;
    function GetReleaserCount: integer;

    function ChangePassword(ANewPassword: string): boolean;
    function GetPassword: string;

    function GetLastError: string;
    function LastErrorCode: integer;
  published
    property Transport: TImageTransClient read fTransClient write SetTransClient;
  end;

  TScanServer = class (TComponent)
  private
    FErrorCode: integer;
    FErrorMsg: string;
    fTransServer: TImageTransServer;

    FOnLogin: TOnLoginEvent;
    FOnLogout: TOnLogoutEvent;
    FOnGetUserProfile: TOnGetUserProfileEvent;

    FOnResendFolder: TOnFolderExEvent;
    FOnSendFolder: TOnFolderExEvent;
    FOnResendTransaction: TOnTransactionExEvent;
    FOnSendTransaction: TOnTransactionExEvent;

    FOnDeleteFolder: TOnFolderExEvent;
    FOnDeleteTransaction: TOnTransactionExEvent;
    FOnDeleteDocument: TOnDocumentExEvent;
    FOnDeletePage: TOnPageEvent;

    FOnCreateFolder: TOnFolderExEvent;
    FOnCreateTransaction: TOnTransactionExEvent;
    FOnCreateDocument: TOnDocumentExEvent;

    FOnReleaseFolder: TOnFolderExEvent;
    FOnReleaseTransaction: TOnTransactionExEvent;

    FOnRejectFolder: TOnFolderExEvent;
    FOnRejectTransaction: TOnTransactionExEvent;

    FOnGetAllFolders: TOnFolderListEvent;
    FOnGetAllTransaction: TOnFolderEvent;
    FOnGetAllFaxes: TOnPageListEvent;
    FOnGetAllRejectedFolders: TOnFolderListExEvent;
    FOnGetAllReleaseFolders: TOnFolderListExEvent;
    fOnGetTransaction: TOnTransactionEvent;
    FOnGetPage: TOnPageIDEvent;
    fOnSaveTransaction: TOnTransactionExEvent;
    fOnSaveFolder: TOnFolderExEvent;

    FOnMoveFax: TOnPageEvent;

    FOnGetUser: TOnUserEvent;
    FOnGetUserList: TOnUserListEvent;
    FOnAddUser: TOnUserExEvent;
    FOnUpdateUser: TOnUserExEvent;
    FOnDeleteUser: TOnUserExEvent;

    FOnDeleteFolderType: TOnTypeEvent;
    FOnDeleteTransactionType: TOnTypeEvent;
    FOnDeleteDocumentType: TOnTypeEvent;
    FOnAddFolderType: TOnTypeExEvent;
    FOnAddTransactionType: TOnTypeExEvent;
    FOnAddDocumentType: TOnTypeExEvent;
    FOnGetFolderTypeList: TOnTypeListEvent;
    FOnGetDocumentTypeList: TOnTypeListEvent;
    FOnGetTransactionTypeList: TOnTypeListEvent;

    FOnGetSubTransactionTypes: TOnSubTypeListEvent;
    FOnGetSubDocumentTypes: TOnSubTypeListEvent;
    FOnAddTransactionTypeToFolderType: TOnSubTypeEvent;
    FOnAddDocumentTypeToTransactionType: TOnSubTypeEvent;
    FOnDeleteDocumentTypeFromTransactionType: TOnSubTypeEvent;
    FOnDeleteTransactionTypeFromFolderType: TOnSubTypeEvent;

    FOnGetFolderParameters: TOnParameterListEvent;
    FOnGetTransactionParameters: TOnParameterListEvent;
    FOnGetDocumentParameters: TOnParameterListEvent;

    FOnGetFolderParameter: TOnParameterIDEvent;
    FOnGetTransactionParameter: TOnParameterIDEvent;
    FOnGetDocumentParameter: TOnParameterIDEvent;

    FOnAddFolderParameter: TOnParameterEvent;
    FOnAddTransactionParameter: TOnParameterEvent;
    FOnAddDocumentParameter: TOnParameterEvent;

    FOnUpdateFolderParameter: TOnParameterEvent;
    FOnUpdateTransactionParameter: TOnParameterEvent;
    FOnUpdateDocumentParameter: TOnParameterEvent;

    FOnDeleteFolderParameter: TOnParameterEvent;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -