Using a real timestamp + ERXEOControlUtilities.refreshObject = happy man.
> 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]