USING Progress.Lang.*.
USING Consultingwerk.Exceptions.Exception FROM PROPATH.
BLOCK-LEVEL ON ERROR UNDO, THROW.
CLASS Akioma.Swat.Samples.DynamicBusinessEntity.SampleSwatDynamicBusinessEntity
INHERITS Akioma.Swat.OERA.Dynamic.SwatDynamicBusinessEntity:
CONSTRUCTOR PUBLIC SampleSwatDynamicBusinessEntity(pcEntityIdentifier AS CHARACTER):
SUPER(pcEntityIdentifier).
END CONSTRUCTOR.
METHOD PUBLIC OVERRIDE VOID FetchData (poFetchDataRequest AS Consultingwerk.OERA.IFetchDataRequest):
// your code
END METHOD.
METHOD PUBLIC OVERRIDE VOID SaveChanges ():
// your code
END METHOD.
END CLASS.
USING Progress.Lang.*.
USING Consultingwerk.Exceptions.Exception FROM PROPATH.
BLOCK-LEVEL ON ERROR UNDO, THROW.
CLASS Akioma.Swat.Samples.DynamicBusinessEntity.SampleSwatDynamicBusinessEntity
INHERITS Akioma.Swat.OERA.Dynamic.SwatDynamicBusinessEntity:
CONSTRUCTOR PUBLIC SampleSwatDynamicBusinessEntity(pcEntityIdentifier AS CHARACTER):
SUPER(pcEntityIdentifier).
END CONSTRUCTOR.
METHOD PUBLIC OVERRIDE VOID FetchData (poFetchDataRequest AS Consultingwerk.OERA.IFetchDataRequest):
DEFINE VARIABLE hDataset AS HANDLE NO-UNDO.
DEFINE VARIABLE iBufferCount AS INTEGER NO-UNDO.
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE hField AS HANDLE NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
SUPER:FetchData(poFetchDataRequest).
hDataset = THIS-OBJECT:DatasetHandle.
DO iBufferCount = 1 TO hDataset:NUM-BUFFERS
ON ERROR UNDO, THROW:
ASSIGN
hBuffer = hDataset:GET-BUFFER-HANDLE(iBufferCount)
hQuery = Consultingwerk.Util.QueryHelper:CreatePreparedQuery(hBuffer)
.
//Adding the custom field to every record
DO WHILE NOT hQuery:QUERY-OFF-END ON ERROR UNDO, THROW:
hField = hBuffer:BUFFER-FIELD("CustomField").
IF VALID-HANDLE(hField) THEN
hField:BUFFER-VALUE = "Override from backend on read.".
FINALLY:
hQuery:GET-NEXT().
END FINALLY.
END.
FINALLY:
Consultingwerk.Util.GarbageCollectorHelper:DeleteObject(hBuffer).
Consultingwerk.Util.GarbageCollectorHelper:DeleteObject(hQuery).
END FINALLY.
END.
END METHOD.
METHOD PUBLIC OVERRIDE VOID SaveChanges ():
DEFINE VARIABLE hDataset AS HANDLE NO-UNDO.
DEFINE VARIABLE iBufferCount AS INTEGER NO-UNDO.
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE hField AS HANDLE NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
hDataset = THIS-OBJECT:DatasetHandle.
Consultingwerk.Util.DatasetHelper:SetTrackingChanges(hDataset, TRUE).
DO iBufferCount = 1 TO hDataset:NUM-BUFFERS
ON ERROR UNDO, THROW:
ASSIGN
hBuffer = hDataset:GET-BUFFER-HANDLE(iBufferCount)
hQuery = Consultingwerk.Util.QueryHelper:CreatePreparedQuery(hBuffer)
.
DO WHILE NOT hQuery:QUERY-OFF-END ON ERROR UNDO, THROW:
hField = hBuffer:BUFFER-FIELD("SelfDesc").
IF VALID-HANDLE(hField) THEN
DO:
CASE hBuffer:ROW-STATE:
WHEN ROW-MODIFIED THEN
hField:BUFFER-VALUE = SUBSTITUTE("Updated on &1 - Override on save", TODAY).
END CASE.
END.
FINALLY:
hQuery:GET-NEXT().
END FINALLY.
END.
FINALLY:
Consultingwerk.Util.GarbageCollectorHelper:DeleteObject(hBuffer).
Consultingwerk.Util.GarbageCollectorHelper:DeleteObject(hQuery).
END FINALLY.
END.
Consultingwerk.Util.DatasetHelper:SetTrackingChanges(hDataset, FALSE).
SUPER:SaveChanges().
END METHOD.
END CLASS.