2015-08-13 1 views
2

Je souhaite interroger RTC avec la date de modification. Ma requête est de vérifier la date de modification est la même que la date et l'heure, mais la réponse que je reçois est basée sur la date donnée et il ignore l'heure.Comment obtenir un workitem en fonction de la date et de l'heure modifiées à l'aide de l'API Java RTC

Réponse:

Date d'Interrogé: 08/07/2015 15:44:09

Id: 2583 Date de modification: 07/08/2015 14: 43: 19,157

Id : 2582 Date de modification: 2015-08-07 14: 43: 19.419

Idéalement, les deux enregistrements ne doivent pas être reçus en réponse comme ils l'étaient avant l'heure donnée.

Ci-dessous mon code:

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"); 
} 

Puis-je obtenir le résultat non seulement en fonction de la date, mais aussi sur le temps?

Je pense fortement que la logique dorsale de RTC ignore complètement l'heure et interroge la base de données uniquement en fonction de la date.

Répondre

0

J'ai exactement le même problème. Je pensais que les résultats étaient peut-être cachés quelque part, mais ce n'était pas ça.

Je n'ai pas trouvé un moyen de le faire via une requête RTC, mais il devrait être possible de filtrer ces enregistrements dans votre code après que la requête RTC est retournée. Enregistrez le temps que vous avez utilisé pour effectuer la recherche, puis utilisez que pour sauter tous les enregistrements en faisant:

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

Je sais que ce n'est pas idéal, mais au moins il y a un moyen d'obtenir l'ensemble souhaité travailler avec.