private Directory processDir ( File dirFile ) { List < Item > items = new ArrayList < Item > ( ) ; File [ ] files = dirFile . listFiles ( ) ; logger . info ( "processing directory {} with {} entries" , dirFile , files . length ) ; for ( File file : files ) { if ( file . getName ( ) . equals ( UpdateJob . LOCK_FILE ) ) { logger . info ( "skipping lockfile {}" , file ) ; } else if ( file . isDirectory ( ) ) { logger . debug ( "adding directory {}" , file ) ; items . add ( new DirectoryItem ( file . getName ( ) , processDir ( file ) ) ) ; } else { // LastModified nur sekundengenau speichern, da Windows zwar // millisekundengenau speichern kann, Linux Dateisysteme (ext3, // ReiserFS, etc.) aber nur sekundengenau. Es kommst sonst zu // Problemen, wenn der Blueprint auf einem Linux-System gebaut // und auf ein Windows-System deployd wird: long lastModified = ( file . lastModified ( ) / 1000 ) * 1000 ; logger . debug ( "adding blob {}, lastModified: " , file , lastModified ) ; items . add ( new FileItem ( file . getName ( ) , processBlob ( file ) , lastModified ) ) ; } } Directory dir = new Directory ( items . toArray ( new Item [ items . size ( ) ] ) ) ; try { String id = writingRepository . store ( dir ) ; logger . info ( "added directory {} -> {}" , dirFile , id ) ; } catch ( IOException e ) { throw new RuntimeException ( e ) ; } return dir ; }
Verarbeitet ein Verzeichnis