For reference, see this method too:
er.extensions.eof.ERXEOControlUtilities.refreshObject(EOEnterpriseObject)
On Sep 14, 2011, at 10:51 AM, Pascal Robert wrote:
> I have a question about EO refresh. I have a component where I show the list
> of running and completed jobs (reports) and since some jobs might be running,
> I want to use AjaxPing to refresh the page every 5 seconds so that users
> don't have to click on a link or button to refresh the page.
>
> The list is built with:
>
> public NSArray<ReportTask> reportsForCurrentUser() {
> return ReportTask.fetchReportTasks(editingContext(),
> ReportTask.USER.eq(((Session)session()).user()),
> ReportTask.START_TIME.descs());
> }
>
> The editing context have a 1 second timestamp:
>
> protected EOEditingContext editingContext() {
> if (_editingContext == null) {
> _editingContext = ERXEC.newEditingContext();
> _editingContext.setFetchTimestamp(1000);
> }
> return _editingContext;
> }
>
> And I have a method, countOfRunningJobs, that fetch the list of currently
> running or pending jobs. I use that method to return the number of running
> jobs and use it as the "cacheKey" binding for AjaxPing.
>
> public int countOfRunningJobs() {
> EOQualifier qualifier =
> ReportTask.USER.eq(((Session)session()).user()).and(ReportTask.STATUS.notIn(new
> NSArray<ReportTaskStatus>(new ReportTaskStatus[] {
> ReportTaskStatus.COMPLETED, ReportTaskStatus.STOPPED } )));
> NSArray<ReportTask> runningTasks =
> ReportTask.fetchReportTasks(editingContext(), qualifier, null);
> for (ReportTask task: runningTasks) {
> editingContext().refreshObject(task);
> NSLog.out.appendln(task.status());
> }
> return ReportTask.fetchReportTasks(editingContext(), qualifier,
> null).count();
> }
>
> That logic is ok, if I print the integer in the component, the value is ok
> (eg, if I have a running job, count is 1, when the job is completed, count is
> 0). But the "task" EO is NOT updated after the refresh, even if in the
> database, the status was changed to "COMPLETED", the NSLog call returns
> "RUNNING". I do see a SELECT being done to fetch the task details, so it look
> it's EOF who doesn't want to refresh the object, even if the timestamp is low.
>
> What I'm doing wrong?
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/kelleherk%40gmail.com
>
> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]