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]
