package org.carlspring.strongbox.repository;
import org.carlspring.strongbox.configuration.Configuration;
import org.carlspring.strongbox.services.ConfigurationManagementService;
import org.carlspring.strongbox.storage.Storage;
import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author carlspring
*/
public abstract class AbstractRepositoryManagementStrategy
implements RepositoryManagementStrategy
{
private static final Logger logger = LoggerFactory.getLogger(AbstractRepositoryManagementStrategy.class);
@Inject
private ConfigurationManagementService configurationManagementService;
@Override
public void removeRepository(String storageId,
String repositoryId)
throws IOException
{
removeDirectoryStructure(storageId, repositoryId);
}
@Override
public void removeDirectoryStructure(String storageId,
String repositoryId)
throws IOException
{
Storage storage = getConfiguration().getStorage(storageId);
final String storageBasedirPath = storage.getBasedir();
final File repositoryBaseDir = new File(new File(storageBasedirPath), repositoryId);
if (repositoryBaseDir.exists())
{
FileUtils.deleteDirectory(repositoryBaseDir);
logger.debug("Removed directory structure for repository '" +
repositoryBaseDir.getAbsolutePath() + File.separatorChar + repositoryId + "'.");
}
else
{
throw new IOException("Failed to delete non-existing repository " +
repositoryBaseDir.getAbsolutePath() + ".");
}
}
public Configuration getConfiguration()
{
return configurationManagementService.getConfiguration();
}
}