2017-02-28 1 views
0

J'ai un rendez-vous "toute la journée" dans le calendrier Lotus Domino (version 8.5.1) qui est prévu du 23/02/2017 au 03/01/2017. J'utilise NCSO.jar et j'essaie d'obtenir ce rendez-vous de Lotus Domino de cette manière:Retour rendez-vous "toute la journée" dans le calendrier Lotus Domino (version 8.5.1)

lotus.domino.Session s = null; 
s = DominoSessionInfo.sessionInfo.getSession(); 
lotus.domino.Database maildb = getMailDb(sessionInfo); 
lotus.domino.DateRange dr = s.createDateRange(startDate, endDate); 
lotus.domino.View calview = maildb.getView("($Calendar)"); 
lotus.domino.ViewEntryCollection docColl = calview.getAllEntriesByKey(dr); 

avec

public static lotus.domino.Database getMailDb(DominoSessionInfo sessionInfo) throws NotesException, NamingException{ 

lotus.domino.Session s = DominoSessionInfo.sessionInfo.getSession(); 
log.info("Open DB on: " + s.getServerName() + " with mail server *" + 
     sessionInfo.getProfileInfo().getMailServer() + "* and mail file *" + 
     sessionInfo.getProfileInfo().getMailFile()); 
    lotus.domino.Database maildb = s.getDatabase(sessionInfo.getProfileInfo().getMailServer(), 
     sessionInfo.getProfileInfo().getMailFile()); 
if (! maildb.isOpen()){ 
    maildb.open(); 
} 
return maildb; 
} 

Quand dr.getText(): 27/02/2017 12:00: 00:00 CET - 03/06/2017 12:00:00 CET (c.-à-d. Débutdate: 02/27/2017 12:00:00 CET et finDate: 03/06/2017 12:00:00 CET) ce code ne retourne pas ce rendez-vous pendant que dr.getText(): 20/02/2017 00:00:00 CET - 02/27/2017 12:00:00 CET (c.-à-d. startDate: 20/02/2017 12: 00:00 AM CET et finDate: 02/27/2017 12:00:00 CET) ce code renvoie ce rendez-vous.

Comment puis-je modifier le code afin de renvoyer ce rendez-vous lorsque les valeurs de startDate et endDate sont, respectivement, 02/27/2017 12:00:00 AM CET et 03/06/2017 12:00:00 AM CET?

Merci d'avance.

Image: Appointment Lotus Notes screenshoot

+0

Avez-vous examiné les valeurs de l'élément CalendarDateTime dans le document de rendez-vous et vérifié le composant heure? –

+0

Salut Richard, la valeur de l'élément CalendarDateTime dans le rendez-vous est la suivante; doc.getItemValue ("CalendarDateTime"): [02/23/2017 12:00:00 AM CET] – Edoardo

+0

Il n'y a qu'une seule valeur dans CalendarDateTime? Il n'y a pas une liste montrant tous les jours du 2/23 au 3/1? –

Répondre

0

Enfin j'ai pu résoudre ce problème! Au lieu de ce code:

lotus.domino.DateRange dr = s.createDateRange(startDate, endDate); 
lotus.domino.View calview = maildb.getView("($Calendar)"); 
lotus.domino.ViewEntryCollection docColl = calview.getAllEntriesByKey(dr); 

je ceci:

String strDateFormat; 
// Get the date separator used on the Domino server, e.g./or - 
String dateSep = s.getInternational().getDateSep(); 
// Determine if the server date format is DMY, YMD, or MDY 
if (s.getInternational().isDateDMY()) { 
    strDateFormat = "dd" + dateSep + "MM" + dateSep + "yyyy";     
} 
else if (s.getInternational().isDateYMD()) { 
    strDateFormat = "yyyy" + dateSep + "MM" + dateSep + "dd"; 
} 
else { 
    strDateFormat = "MM" + dateSep + "dd" + dateSep + "yyyy"; 
} 
DateFormat dateFormat = new SimpleDateFormat(strDateFormat); 

String calendarQuery = "SELECT (@IsAvailable(CalendarDateTime) & @IsAvailable(EndDateTime) & (@Explode(CalendarDateTime) *<= @Explode(@TextToTime(\"" + dateFormat.format(endDate) + "\"))) (@Explode(EndDateTime) *>= @Explode(@TextToTime(\"" + dateFormat.format(startDate) + "\"))))"; 

lotus.domino.DocumentCollection queryResults = maildb.search(calendarQuery); 

Ce faisant, j'ai pu retourner le rendez-vous "toute la journée" (prévue du 23/02/2017 au 03/01/2017) pour tout intervalle de temps contenant au moins un jour dans lequel le rendez-vous est planifié.