如何使用RTC Java API基于修改的日期和时间获取工作项

时间:2015-08-13 10:33:08

标签: java date rtc jazz ibm-jazz

我想用修改日期查询RTC。 我的查询是检查修改日期与给定日期和时间相同,但我得到的响应是基于给定日期而忽略时间。

响应:

  

查询日期:08/07/2015 15:44:09

     

Id:2583修改日期:2015-08-07 14:43:19.157

     

身份证号:2582修改日期:2015-08-07 14:43:19.419

理想情况下,两个记录都不应该在给定时间之前收到回应。

以下是我的代码:

IQueryableAttributeFactory factory = QueryableAttributes.getFactory( IWorkItem.ITEM_TYPE ); 

IQueryableAttribute recAttr1 = factory.findAttribute(projectArea, IItem.MODIFIED_PROPERTY, auditableClient, null ); 
IQueryableAttribute recAttr2 = factory.findAttribute(projectArea, IWorkItem.TYPE_PROPERTY, auditableClient, null );     

Date date = new Date();
date.setDate(date.getDate()-6);
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String reportDate = df.format(date);
System.out.println("Date: "+reportDate);
Timestamp timeStamp = new Timestamp(date.getTime()); 

AttributeExpression recExpr1 = new AttributeExpression(recAttr1, AttributeOperation.EQUALS, timeStamp ); 

Term term= new Term(Operator.AND); 
term.add(recExpr1); 

IQueryClient queryClient = (IQueryClient) teamRepository.getClientLibrary(IQueryClient.class); 
IQueryResult<IResolvedResult<IWorkItem>> result = queryClient.getResolvedExpressionResults(projectArea, (Expression)term, IWorkItem.FULL_PROFILE); 
System.out.println("This is total number: "+result.getResultSize(monitor).getTotal()+"\n");                 

while(result.hasNext(null)){ 
    IResolvedResult<IWorkItem> resolvedWorkItem = result.next(null); 
    IWorkItem workItem = resolvedWorkItem.getItem();
    Date date1 = resolvedWorkItem.getItem().modified(); 
    System.out.println("Id: "+workItem.getId());
    System.out.println("Modified date :"+date1.toString()+"\n"); 
}   

我可以不仅根据日期而且还能按时获得结果吗?

我强烈认为RTC的后端逻辑完全忽略了时间,只根据日期查询数据库。

1 个答案:

答案 0 :(得分:0)

我有完全相同的问题。我想也许结果会被缓存到某个地方,但那不是它。

我还没有找到通过RTC查询执行此操作的方法,但应该可以在返回RTC查询后在代码中过滤掉这些记录。节省用于执行搜索的时间,然后通过执行以下操作来跳过任何记录:

if (workItem.modified().getTime() < lastModified)
  continue;

我知道这不太理想,但至少有办法让所需的设置与之合作。