package org.hivedb.meta.directory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hivedb.Lockable;
import org.hivedb.meta.Assigner;
import org.hivedb.meta.Node;
import org.hivedb.meta.PartitionDimension;
import org.hivedb.meta.persistence.DataSourceProvider;
import org.hivedb.meta.persistence.NodeDao;
import javax.sql.DataSource;
import java.util.Collection;
public class DirectoryWrapperFactory implements DirectoryFacadeProvider {
private final static Log log = LogFactory.getLog(DirectoryWrapperFactory.class);
private DirectoryProvider directoryProvider;
private DataSourceProvider dataSourceProvider;
public DirectoryWrapperFactory(DirectoryProvider directoryProvider, DataSourceProvider dataSourceProvider) {
this.dataSourceProvider = dataSourceProvider;
this.directoryProvider = directoryProvider;
}
public DirectoryFacade getDirectoryFacade(String hiveConfigurationUri, Assigner assigner, Lockable semaphore, PartitionDimension partitionDimension) {
DataSource dataSource = dataSourceProvider.getDataSource(hiveConfigurationUri);
Collection<Node> nodes = new NodeDao(dataSource).loadAll();
return new DirectoryWrapper(
directoryProvider.getDirectory(hiveConfigurationUri),
assigner,
nodes,
partitionDimension.getResources(),
semaphore);
}
}