public Content load ( LogTarget logTarget , String dataRoot , String key , String mediaType , long _timeCheck ) throws IOException { long timeCheck = _timeCheck ; if ( timeCheck < 0 ) { timeCheck = checkInterval ; // if time < 0, then use default } String fileName = dataRoot + ' ' + key ; Content c = content . get ( key ) ; long systime = System . currentTimeMillis ( ) ; File f = null ; if ( c != null ) { // Don't check every hit... only after certain time value if ( c . date < systime + timeCheck ) { f = new File ( fileName ) ; if ( f . lastModified ( ) > c . date ) { c = null ; } } } if ( c == null ) { if ( logTarget != null ) { logTarget . log ( "File Read: " , key ) ; } if ( f == null ) { f = new File ( fileName ) ; } boolean cacheMe ; if ( f . exists ( ) ) { if ( f . length ( ) > maxItemSize ) { c = new DirectFileContent ( f ) ; cacheMe = false ; } else { c = new CachedContent ( f ) ; cacheMe = checkInterval > 0 ; } if ( mediaType == null ) { // determine from file Ending int idx = key . lastIndexOf ( ' ' ) ; String subkey = key . substring ( ++ idx ) ; if ( ( c . contentType = idx < 0 ? null : typeMap . get ( subkey ) ) == null ) { // if nothing else, just set to default type... c . contentType = "application/octet-stream" ; } c . attachmentOnly = attachOnly . contains ( subkey ) ; } else { c . contentType = mediaType ; c . attachmentOnly = false ; } c . date = f . lastModified ( ) ; if ( cacheMe ) { content . put ( key , c ) ; } } else { c = NULL ; } } else { if ( logTarget != null ) logTarget . log ( "Cache Read: " , key ) ; } // refresh hit time c . access = systime ; return c ; }
Load a file first checking cache