I think you need to call setRefreshesRefetchedObjects(true) on the fetch
specification.

John

On Wed, Sep 14, 2011 at 9:51 AM, Pascal Robert <[email protected]> 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(newNSArray<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/johnthuss%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]

Reply via email to