@ -39,14 +39,15 @@ public class VREQueryRetriever implements Callable<List<Item>> {
private Credentials credentials ;
private Item vreFolder ;
Map < String , Long > cachedMap = new HashMap < > ( CACHE_DIMENSION ) ;
long higherTimestamp = Long . MAX_VALUE ;
long lastTimestamp = 0 ;
long doTime = 0 ;
boolean underRedo = false ;
Node2ItemConverter node2Item ;
private static int TIME_MEASURE = Calendar . MINUTE ;
private static int VALUE_TIME_BEFORE = 10 ;
public VREQueryRetriever ( Repository repository , Credentials credentials , Node2ItemConverter node2Item , Item vreFolder ) {
@ -62,7 +63,7 @@ public class VREQueryRetriever implements Callable<List<Item>> {
try {
ses = repository . login ( credentials ) ;
Calendar now = Calendar . getInstance ( ) ;
now . add ( Calendar. HOUR_OF_DAY , - 1 ) ;
now . add ( TIME_MEASURE, - 1 * Math . abs ( VALUE_TIME_BEFORE ) ) ;
if ( doTime > now . getTimeInMillis ( ) | | underRedo ) {
logger . debug ( "executing recents task for {} (cahced result)" , vreFolder . getTitle ( ) ) ;
@ -86,7 +87,7 @@ public class VREQueryRetriever implements Callable<List<Item>> {
public synchronized List < Item > redo ( Session ses ) {
underRedo = true ;
try {
Map < String , Long > tempCachedMap = new HashMap < > ( CACHE_DIMENSION ) ;
Map < String , Long > tempCachedMap = new HashMap < > ( cachedMap ) ;
if ( cachedMap . isEmpty ( ) )
init ( ses , tempCachedMap ) ;
else {
@ -131,12 +132,11 @@ public class VREQueryRetriever implements Callable<List<Item>> {
}
private void insertItemInTheRightPlace ( Item item , Map < String , Long > tempCachedMap ) {
long lastModifiedTime = item . getLastModificationTime ( ) . getTime ( ) . getTime ( ) ;
long lastModifiedTime = item . getLastModificationTime ( ) . getTime InMillis ( ) ;
if ( ! ( lastModifiedTime > higherTimestamp & & tempCachedMap . size ( ) > CACHE_DIMENSION ) ) {
if ( tempCachedMap . size ( ) < CACHE_DIMENSION | | lastModifiedTime > Collections . min ( tempCachedMap . values ( ) ) )
tempCachedMap . put ( item . getId ( ) , lastModifiedTime ) ;
if ( lastModifiedTime > higherTimestamp ) higherTimestamp = lastModifiedTime ;
}
}
@ -185,6 +185,8 @@ public class VREQueryRetriever implements Callable<List<Item>> {
Item item = node2Item . getItem ( nodeAdded , Excludes . ALL ) ;
if ( tempCachedMap . get ( event . getIdentifier ( ) ) ! = null )
tempCachedMap . remove ( event . getIdentifier ( ) ) ;
if ( item . isHidden ( ) )
break ;
insertItemInTheRightPlace ( item , tempCachedMap ) ;
}
}
@ -198,6 +200,8 @@ public class VREQueryRetriever implements Callable<List<Item>> {
String identifier = property . getParent ( ) . getIdentifier ( ) ;
tempCachedMap . remove ( identifier ) ;
Item item = node2Item . getItem ( property . getParent ( ) , Excludes . ALL ) ;
if ( item . isHidden ( ) )
break ;
insertItemInTheRightPlace ( item , tempCachedMap ) ;
}
}