project BLF > class Persistence (Progress) > method CleanupState

Description

Clears all records form the database that hold state information


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program1/progress.p)

if not (valid-handle(vhInstanceQuery) and
        viInstanceUID = vhInstanceQuery:unique-id)
then do:
    create buffer vhInstanceBuffer for table "fcInstance":U in widget-pool "persistent".
    create query vhInstanceQuery in widget-pool "persistent".
    vhInstanceQuery:forward-only = yes.
    vhInstanceQuery:set-buffers(vhInstanceBuffer).
    vhInstanceQuery:private-data = "Persistent".    /* do not ever delete this query */
    viInstanceUID = vhInstanceQuery:unique-id.
end.

vhInstanceQuery:query-prepare ("for each fcInstance":U).
vhInstanceQuery:query-open().
repeat transaction on error undo, throw:
    vhInstanceQuery:get-next(exclusive-lock).
    if vhInstanceQuery:query-off-end
    then leave.
    vhInstanceBuffer:buffer-delete().
end.
vhInstanceQuery:query-close().

if not (valid-handle(vhDraftQuery) and
        viDraftUID = vhDraftQuery:unique-id)
then do:
    create buffer vhDraftBuffer for table "fcDraftInstance":U in widget-pool "persistent".
    create query vhDraftQuery in widget-pool "persistent".
    vhDraftQuery:forward-only = yes.
    vhDraftQuery:set-buffers(vhDraftBuffer).
    vhDraftQuery:private-data = "Persistent".    /* do not ever delete this query */
    viDraftUID = vhDraftQuery:unique-id.
    
    create buffer vhDraftDataBuffer for table "fcDraftInstanceData":U in widget-pool "persistent".
    create query vhDraftDataQuery in widget-pool "persistent".
    vhDraftDataQuery:forward-only = yes.
    vhDraftDataQuery:set-buffers(vhDraftDataBuffer).
    vhDraftDataQuery:private-data = "Persistent".    /* do not ever delete this query */
end.

vhDraftQuery:query-prepare ("for each fcDraftInstance where fcDraftInstance.IsInUse = true":U).
vhDraftQuery:query-open().
repeat transaction on error undo, throw:
    vhDraftQuery:get-next(exclusive-lock).
    if vhDraftQuery:query-off-end
    then leave.
    vhDraftBuffer::IsInUse = false.
end.
vhDraftQuery:query-close().

if vcStateDirectory <> ""
then do:
    input stream statedir from os-dir(vcStateDirectory) no-attr-list.
    repeat:
        import stream statedir vcFile.
        if vcFile matches "*~.lob" then os-delete value(vcFile).
    end.
    input stream statedir close.
end.