$PBExportHeader$eaf_n_cst_gateway.sru forward global type eaf_n_cst_gateway from n_cst_baseservice end type end forward global type eaf_n_cst_gateway from n_cst_baseservice descriptor "PB_ObjectCodeAssistants" = "{BB0DD54A-B36E-11D1-BB47-000086095DDA}" descriptor "PS_JaguarProject" = "" event activate pbm_component_activate event deactivate pbm_component_deactivate end type global eaf_n_cst_gateway eaf_n_cst_gateway type variables datasetdata datasetdata Protected: n_cst_argumentservice inv_argument end variables forward prototypes protected function string addcdata (string content) protected function s_mimerequest convertrequest (request request) protected function boolean isbinary (string mimetype) public function response generate (request request) protected function string removecdata (string content) public function s_mimeresponse interfaceservice (s_mimerequest astr_mimerequest) protected function integer initialize (s_mimerequest astr_mimerequest) protected function response convertresponse (s_mimeresponse astr_mimeresponse) end prototypes event deactivate;//Reset the argument service instance inv_argument.reset() sqlca.transactiondisconnect( ) end event protected function string addcdata (string content);String CDATA_BEGIN = "<![CDATA[" String CDATA_END = "]]>" return CDATA_BEGIN + content + CDATA_END end function protected function s_mimerequest convertrequest (request request);s_mimerequest mimeRequest Long dataSetIndex, ll_rowcount mimeRequest.messages = request.arguments ll_rowcount = UpperBound(request.datasets) for dataSetIndex = 1 to ll_rowcount mimeRequest.datasets[dataSetIndex].name = request.datasets[dataSetIndex].name mimeRequest.datasets[dataSetIndex].arguments = request.datasets[dataSetIndex].arguments mimeRequest.datasets[dataSetIndex].mimetype = request.datasets[dataSetIndex].mimeType mimeRequest.datasets[dataSetIndex].data.binary = Blob(request.datasets[dataSetIndex].binarydata) next return mimeRequest end function protected function boolean isbinary (string mimetype);String METHOD_NAME = "isBinary( String mimeType )" Long ll_row String mimeTypeList[13]= {"application/octet-stream", "text/plain", "text/html", "application/pdf" ,& "application/vnd.ms-excel", "image/gif", "image/jpeg", "application/rtf" ,& "application/zip", "application/msword", "application/mspowerpoint", "text/xml", "application/datawindow"} boolean mimeTypeisbinary[13] = {true, false, false, true, & true, true, true, false, & true, true, true, false, true} for ll_row = 1 to UpperBound(mimeTypeList) if mimetype = mimeTypeList[ll_row] then return mimeTypeisbinary[ll_row] end if next return false end function public function response generate (request request);constant string METHOD_NAME = "generate (request )" response lstr_response s_mimerequest mimeRequestHolder s_mimeresponse mimeResponseHolder //Conver request object mimeRequestHolder = convertRequest(request) mimeResponseHolder = InterfaceService(mimeRequestHolder) //Convert response lstr_response = convertResponse(mimeResponseHolder) return lstr_response end function protected function string removecdata (string content);String CDATA_BEGIN = "<![CDATA[" String CDATA_END = "]]>" String newContent newContent = Trim(content) newContent = Mid(newContent, 10) newContent = Left(newContent, Len(newContent) - 3) return newContent end function public function s_mimeresponse interfaceservice (s_mimerequest astr_mimerequest);constant string METHOD_NAME = "InterfaceService (s_mimerequest )" Long ll_ret, ll_row String ls_runtimeerror, ls_characterset, ls_requesttype, ls_str, ls_InterfaceManagerClasName s_mimeresponse lstr_ret n_svc_zlib lnv_z Blob lb_compressed, lb_expand, lb_source, lb_ret Boolean lb_enablecompress n_cst_InterfaceManager lnvo_interfaceManager n_cst_updatemanager lnvo_update try ll_ret = 1 if initialize(astr_mimerequest) = -1 then ll_ret = -2 if ll_ret = 1 then //Get compress Parameters inv_argument.getArgument( inv_constants.EAF_ENABLE_COMPRESS_ARGUMENT_NAME, ls_str) if Lower(ls_str) = "true" or Lower(ls_str) = "y" then lb_enablecompress = true else lb_enablecompress = false end if // Uncompress if lb_enablecompress then lnv_z = create n_svc_zlib for ll_row = 1 to UpperBound(astr_mimerequest.datasets) lb_compressed = astr_mimerequest.datasets[ll_row].data.binary lnv_z.of_uncompress(lb_expand, lb_compressed) astr_mimerequest.datasets[ll_row].data.binary = lb_expand next destroy lnv_z end if //Get interfacemanager class name ls_str = "" inv_argument.getArgument( inv_constants.EAF_INTERFACEMANAGER_CLASS_ARGUMENT_NAME, ls_InterfaceManagerClasName) if ls_InterfaceManagerClasName = "" then ls_InterfaceManagerClasName = "n_cst_InterfaceManager" end if lnvo_interfaceManager = create using ls_InterfaceManagerClasName //Get requesttype Parameters inv_argument.getArgument( inv_constants.REQUESTTYPE_ARGUMENT_NAME, ls_requesttype) choose case Upper(ls_requesttype) case "RETRIEVE" ll_ret = lnvo_interfaceManager.retrieve(astr_mimerequest) case "UPDATE" ll_ret = lnvo_interfaceManager.update(astr_mimerequest) case "ITEMCHANGED" ll_ret = lnvo_interfaceManager.itemchanged(astr_mimerequest) case "MASTERCONFIRM" ll_ret = lnvo_interfaceManager.masterconfirm(astr_mimerequest) case "COMMIT", "ROLLBACK", "CLOSE", "CLOSEROLLBACK", "EXECUTESERVICE", "EXECUTEFUNCTION" ll_ret = lnvo_interfaceManager.executeservice(astr_mimerequest) case else addError(METHOD_NAME, "Invalid request type: " + ls_requesttype ) ll_ret = -2 end choose lstr_ret.messages = astr_mimerequest.messages end if catch ( RuntimeError re ) ls_runtimeerror = "Runtime Error:" + inv_constants.CRLF + inv_constants.CRLF ls_runtimeerror += "Error Code: " + string(re.number) + inv_constants.CRLF ls_runtimeerror += "Object: " + re.objectName + inv_constants.CRLF ls_runtimeerror += "Class: " + re.class + inv_constants.CRLF ls_runtimeerror += "Function/Event: " + re.routineName + inv_constants.CRLF ls_runtimeerror += "Line: " + string(re.line) + inv_constants.CRLF ls_runtimeerror += "Message: " + re.getMessage() + inv_constants.CRLF addError(METHOD_NAME, ls_runtimeerror) ll_ret = -2 finally if SQLCA.dbms <> "" then if ll_ret = 1 then commit ; elseif ll_ret = -1 then rollback ; end if end if for ll_row = 1 to UpperBound(astr_mimerequest.datasets) lstr_ret.datasets[ll_row].name = astr_mimerequest.datasets[ll_row].name lstr_ret.datasets[ll_row].mimeType = astr_mimerequest.datasets[ll_row].mimetype lstr_ret.datasets[ll_row].messages = astr_mimerequest.datasets[ll_row].messages if ll_ret = 1 then // Compress if lb_enablecompress then lnv_z = create n_svc_zlib for ll_row = 1 to UpperBound(astr_mimerequest.datasets) // for webservice deploy bug astr_mimerequest.datasets[ll_row].data.binary = Blob(String(astr_mimerequest.datasets[ll_row].data.binary)) lb_source = astr_mimerequest.datasets[ll_row].data.binary lnv_z.of_compress(lb_ret, lb_source) astr_mimerequest.datasets[ll_row].data.binary = lb_ret next destroy lnv_z end if lstr_ret.datasets[ll_row].data.binary = astr_mimerequest.datasets[ll_row].data.binary lstr_ret.datasets[ll_row].data.text = astr_mimerequest.datasets[ll_row].data.text end if next if ll_ret = -2 then //Get the Character Set inv_argument.getArgument( inv_constants.EAF_CHARACTER_SET_ARGUMENT_NAME, ls_characterset ) //Put the InterfaceManager messages into the messages holder on the structure inv_messaging.toXML( ls_characterset, lstr_ret.messages ) ll_ret = -1 end if lstr_ret.returncode = ll_ret if IsValid(lnvo_interfaceManager) then destroy lnvo_interfaceManager end if end try return lstr_ret end function protected function integer initialize (s_mimerequest astr_mimerequest);constant string METHOD_NAME = "initialize " string ls_str, ls_datasource[] Boolean lb_autocommit n_cst_stringservice lnv_string // Validate arguments If IsNull(astr_mimerequest) Then addError( METHOD_NAME, "Invalid astr_mimerequest object" ) Return -1 End If //Initialize the ArgumentService with the XML Arguments inv_argument.reset() if inv_argument.initialize( astr_mimerequest.messages ) = -1 then addError( METHOD_NAME, "Error initializing argument service" ) return -1 end if //Get DataSource Parameters inv_argument.getArgument( inv_constants.EAF_DATASOURCEPARAMETERS_ARGUMENT_NAME, ls_str) if ls_str <> "" then lnv_string = create n_cst_stringservice lnv_string.Parsestringtoarray( ls_str, "|", ls_datasource) destroy lnv_string if UpperBound(ls_datasource) <> 10 then addError( METHOD_NAME, "Invalid DataSource Parameters setting format" ) Return -1 end if if Upper(ls_datasource[10]) = "TRUE" then lb_autocommit = true else lb_autocommit = false end if SQLCA.initialize (ls_datasource[1], ls_datasource[2], ls_datasource[3], ls_datasource[4], ls_datasource[5], ls_datasource[6], ls_datasource[7], ls_datasource[8], ls_datasource[9], lb_autocommit) end if return 1 end function protected function response convertresponse (s_mimeresponse astr_mimeresponse);constant string METHOD_NAME = "convertResponse (s_mimeresponse) " Response lstr_response Long dataSetIndex lstr_response.messages = astr_mimeresponse.messages lstr_response.returncode = astr_mimeresponse.returncode for dataSetIndex = 1 to UpperBound(astr_mimeresponse.datasets) lstr_response.datasets[dataSetIndex].name = astr_mimeresponse.datasets[dataSetIndex].name lstr_response.datasets[dataSetIndex].messages = astr_mimeresponse.datasets[dataSetIndex].messages lstr_response.datasets[dataSetIndex].mimeType = astr_mimeresponse.datasets[dataSetIndex].mimetype //Determine the type of data if isBinary(lstr_response.datasets[dataSetIndex].mimeType) then lstr_response.datasets[dataSetIndex].binarydata = GetByteArray(astr_mimeresponse.datasets[dataSetIndex].data.binary) lstr_response.datasets[dataSetIndex].isBinary = true else lstr_response.datasets[dataSetIndex].textdata = astr_mimeresponse.datasets[dataSetIndex].data.text end if next return lstr_response end function on eaf_n_cst_gateway.create call super::create end on on eaf_n_cst_gateway.destroy call super::destroy end on event destructor;constant string METHOD_NAME = "destructor" if isValid( inv_argument ) then destroy inv_argument end if if IsValid(sqlca) then sqlca.transactiondisconnect( ) end if end event event constructor;call super::constructor;constant string METHOD_NAME = "constructor " //Create the instance services inv_argument = create n_cst_argumentservice //Propagate log settings to services inv_log.propagateSettings( inv_argument ) end event
- Sources
- EAF.NET
- eaf_gateway
- eaf_n_cst_gateway.sru
File: eaf_n_cst_gateway.sru
Size: 11307
Date: Tue, 22 Jan 2008 23:40:25 +0100
Size: 11307
Date: Tue, 22 Jan 2008 23:40:25 +0100
- n_cst_baseservice descriptor "PB_ObjectCodeAssistants" = "{BB0DD54A-B36E-11D1-BB47-000086095DDA}" descriptor "PS_JaguarProject" = "" eaf_n_cst_gateway(sru)
- addcdata (string content) returns string
- convertrequest (request request) returns s_mimerequest
- convertresponse (s_mimeresponse astr_mimeresponse) returns response
- generate (request request) returns response
- initialize (s_mimerequest astr_mimerequest) returns integer
- interfaceservice (s_mimerequest astr_mimerequest) returns s_mimeresponse
- isbinary (string mimetype) returns boolean
- removecdata (string content) returns string