litesoft
@ 939
litesoft / trunk / Java / ScarPlus / src / com / esotericsoftware / filesystem / RootedPaths.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
package com.esotericsoftware.filesystem; import java.io.*; import org.litesoft.core.typeutils.Objects; import java.util.*; import com.esotericsoftware.scar.*; public final class RootedPaths { private long mGreatestLastModified; private File mCanonicalRootDirectory; private Set<String> mCanonicalRelativePaths = new HashSet<String>(); public RootedPaths( File pCanonicalRootDirectory ) { Utils.assertNotNull( "CanonicalRootDirectory", mCanonicalRootDirectory = pCanonicalRootDirectory ); } public void addCanonicalRelativePath( String pPath ) { mGreatestLastModified = Math.max( mGreatestLastModified, new File( mCanonicalRootDirectory, pPath = Utils.assertNotEmpty( "Path", pPath ) ).lastModified() ); mCanonicalRelativePaths.add( pPath ); } public long getGreatestLastModified() { return mGreatestLastModified; } public File getCanonicalRootDirectory() { return mCanonicalRootDirectory; } public int count() { return mCanonicalRelativePaths.size(); } public void collectPaths( List<FilePath> pPaths ) { for ( String zPath : mCanonicalRelativePaths ) { pPaths.add( FilePath.canonical( mCanonicalRootDirectory, zPath ) ); } } @Override public int hashCode() { return mCanonicalRootDirectory.hashCode(); } public boolean equals( RootedPaths them ) { return (them != null) && this.mCanonicalRootDirectory.equals( them.mCanonicalRootDirectory ); } @Override public boolean equals( Object o ) { return (o instanceof RootedPaths) && equals( (RootedPaths) o ); } /* Package Friendly */ void mergeIn( RootedPaths them ) // Assume only called by the RootedPathsCollection when the mCanonicalRootDirectory(s) are equal! { this.mGreatestLastModified = Math.max( this.mGreatestLastModified, them.mGreatestLastModified ); this.mCanonicalRelativePaths.addAll( them.mCanonicalRelativePaths ); } } |