package org.qi4j.entitystore.leveldb; import org.qi4j.api.common.Visibility; import org.qi4j.bootstrap.Assembler; import org.qi4j.bootstrap.AssemblyException; import org.qi4j.bootstrap.ModuleAssembly; import org.qi4j.spi.uuid.UuidIdentityGeneratorService; /** * LevelDB EntityStore assembly. */ public class LevelDBEntityStoreAssembler implements Assembler { private String identity; private Visibility visibility = Visibility.module; private ModuleAssembly configModule; private Visibility configVisibility = Visibility.module; public LevelDBEntityStoreAssembler identifiedBy( String identity ) { this.identity = identity; return this; } public LevelDBEntityStoreAssembler visibleIn( Visibility visibility ) { this.visibility = visibility; return this; } public LevelDBEntityStoreAssembler withConfig( ModuleAssembly configModule, Visibility configVisibility ) { this.configModule = configModule; this.configVisibility = configVisibility; return this; } @Override public void assemble( ModuleAssembly module ) throws AssemblyException { if( configModule == null ) { configModule = module; } module.services( UuidIdentityGeneratorService.class ); module.services( LevelDBEntityStoreService.class ).visibleIn( visibility ); configModule.entities( LevelDBEntityStoreConfiguration.class ).visibleIn( configVisibility ); if( identity != null ) { module.services( LevelDBEntityStoreService.class ).identifiedBy( identity ); } } }