/** * Returns the base schema index directory, i.e. * * <pre> * <db>/schema/index/ * </pre> * * @param databaseStoreDir database store directory, i.e. {@code db} in the example above, where e.g. {@code nodestore} lives. * @return the base directory of schema indexing. */ public static File baseSchemaIndexFolder( File databaseStoreDir ) { return path( databaseStoreDir, "schema", "index" ); }
@Override public File directoryForIndex( long indexId ) { return path( providerRootFolder, String.valueOf( indexId ) ); } }
public static File path( String root, String... path ) { return path( new File( root ), path ); }
@Override public File directoryForIndex( long indexId ) { return path( parentStructure.directoryForIndex( indexId ), fileNameFriendly( descriptor ) ); } };
/** * @param databaseStoreDir store directory of database, i.e. {@code db} in the example above. * @return {@link Factory} for creating {@link IndexDirectoryStructure} returning directories looking something like: * * <pre> * <db>/schema/index/<providerKey>-<providerVersion>/<indexId>/ * </pre> */ public static Factory directoriesByProvider( File databaseStoreDir ) { return descriptor -> new SubDirectoryByIndexId( path( baseSchemaIndexFolder( databaseStoreDir ), fileNameFriendly( descriptor ) ) ); }
/** * @param databaseStoreDir store directory of database, i.e. {@code db} in the example above. * @return {@link Factory} for creating {@link IndexDirectoryStructure} returning directories looking something like: * * <pre> * <db>/schema/index/<providerKey>/<indexId>/ * </pre> */ public static Factory directoriesByProviderKey( File databaseStoreDir ) { return descriptor -> new SubDirectoryByIndexId( path( baseSchemaIndexFolder( databaseStoreDir ), fileNameFriendly( descriptor.getKey() ) ) ); }
@Test public void shouldHandleWeirdCharactersInProviderKey() { IndexProviderDescriptor providerWithWeirdName = new IndexProviderDescriptor( "native+lucene", "1.0" ); assertCorrectDirectories( directoriesByProvider( databaseStoreDir ).forProvider( providerWithWeirdName ), path( baseIndexDirectory, "native_lucene-1.0" ), path( baseIndexDirectory, "native_lucene-1.0", String.valueOf( indexId ) ) ); }
@Test public void shouldSeeCorrectDirectoriesForProvider() { assertCorrectDirectories( directoriesByProvider( databaseStoreDir ).forProvider( provider ), path( baseIndexDirectory, provider.getKey() + "-" + provider.getVersion() ), path( baseIndexDirectory, provider.getKey() + "-" + provider.getVersion(), String.valueOf( indexId ) ) ); }
@Test public void shouldSeeCorrectDirectoriesForSubProvider() { IndexDirectoryStructure parentStructure = directoriesByProvider( databaseStoreDir ).forProvider( provider ); IndexProviderDescriptor subProvider = new IndexProviderDescriptor( "sub", "0.3" ); assertCorrectDirectories( directoriesBySubProvider( parentStructure ).forProvider( subProvider ), path( baseIndexDirectory, provider.getKey() + "-" + provider.getVersion() ), path( baseIndexDirectory, provider.getKey() + "-" + provider.getVersion(), String.valueOf( indexId ), subProvider.getKey() + "-" + subProvider.getVersion() ) ); }
/** * Returns the base schema index directory, i.e. * * <pre> * <db>/schema/index/ * </pre> * * @param databaseStoreDir database store directory, i.e. {@code db} in the example above, where e.g. {@code nodestore} lives. * @return the base directory of schema indexing. */ public static File baseSchemaIndexFolder( File databaseStoreDir ) { return path( databaseStoreDir, "schema", "index" ); }
@Override public File directoryForIndex( long indexId ) { return path( providerRootFolder, String.valueOf( indexId ) ); } }
public static File path( String root, String... path ) { return path( new File( root ), path ); }
@Override public File directoryForIndex( long indexId ) { return path( parentStructure.directoryForIndex( indexId ), fileNameFriendly( descriptor ) ); } };
/** * @param databaseStoreDir store directory of database, i.e. {@code db} in the example above. * @return {@link Factory} for creating {@link IndexDirectoryStructure} returning directories looking something like: * * <pre> * <db>/schema/index/<providerKey>-<providerVersion>/<indexId>/ * </pre> */ public static Factory directoriesByProvider( File databaseStoreDir ) { return descriptor -> new SubDirectoryByIndexId( path( baseSchemaIndexFolder( databaseStoreDir ), fileNameFriendly( descriptor ) ) ); }
/** * @param databaseStoreDir store directory of database, i.e. {@code db} in the example above. * @return {@link Factory} for creating {@link IndexDirectoryStructure} returning directories looking something like: * * <pre> * <db>/schema/index/<providerKey>/<indexId>/ * </pre> */ public static Factory directoriesByProviderKey( File databaseStoreDir ) { return descriptor -> new SubDirectoryByIndexId( path( baseSchemaIndexFolder( databaseStoreDir ), fileNameFriendly( descriptor.getKey() ) ) ); }