mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-08 06:25:45 +01:00
Implement delete in ManagerDaoAdapter
This commit is contained in:
@@ -50,6 +50,17 @@ public class ManagerDaoAdapter<T extends ModelObject, E extends Exception> {
|
||||
return newObject;
|
||||
}
|
||||
|
||||
public void delete(T toDelete, Supplier<PermissionCheck> permissionCheck, AroundHandler<T, E> beforeDelete, AroundHandler<T, E> afterDelete) throws E {
|
||||
permissionCheck.get().check();
|
||||
if (dao.contains(toDelete)) {
|
||||
beforeDelete.handle(toDelete);
|
||||
dao.delete(toDelete);
|
||||
afterDelete.handle(toDelete);
|
||||
} else {
|
||||
throw notFoundException.apply(toDelete);
|
||||
}
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface AroundHandler<T extends ModelObject, E extends Exception> {
|
||||
void handle(T notModified) throws E;
|
||||
|
||||
@@ -125,37 +125,15 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param group
|
||||
*
|
||||
* @throws GroupException
|
||||
* @throws IOException
|
||||
*/
|
||||
@Override
|
||||
public void delete(Group group) throws GroupException
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("delete group {} of type {}", group.getName(),
|
||||
group.getType());
|
||||
}
|
||||
|
||||
String name = group.getName();
|
||||
GroupPermissions.delete().check(name);
|
||||
|
||||
if (groupDAO.contains(name))
|
||||
{
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, group);
|
||||
groupDAO.delete(group);
|
||||
fireEvent(HandlerEventType.DELETE, group);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new GroupNotFoundException(group);
|
||||
}
|
||||
public void delete(Group group) throws GroupException {
|
||||
logger.info("delete group {} of type {}", group.getName(), group.getType());
|
||||
managerDaoAdapter.delete(
|
||||
group,
|
||||
() -> GroupPermissions.delete(group.getName()),
|
||||
toDelete -> fireEvent(HandlerEventType.BEFORE_DELETE, toDelete),
|
||||
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -158,38 +158,23 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param repository
|
||||
*
|
||||
* @throws IOException
|
||||
* @throws RepositoryException
|
||||
*/
|
||||
@Override
|
||||
public void delete(Repository repository)
|
||||
throws RepositoryException {
|
||||
if (logger.isInfoEnabled()) {
|
||||
logger.info("delete repository {} of type {}", repository.getName(),
|
||||
repository.getType());
|
||||
public void delete(Repository repository) throws RepositoryException {
|
||||
logger.info("delete repository {} of type {}", repository.getName(), repository.getType());
|
||||
managerDaoAdapter.delete(
|
||||
repository,
|
||||
() -> RepositoryPermissions.delete(repository),
|
||||
this::preDelete,
|
||||
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||
);
|
||||
}
|
||||
|
||||
RepositoryPermissions.delete(repository).check();
|
||||
|
||||
if (configuration.isEnableRepositoryArchive() && !repository.isArchived()) {
|
||||
throw new RepositoryIsNotArchivedException(
|
||||
"Repository could not deleted, because it is not archived.");
|
||||
}
|
||||
|
||||
if (repositoryDAO.contains(repository)) {
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, repository);
|
||||
getHandler(repository).delete(repository);
|
||||
repositoryDAO.delete(repository);
|
||||
fireEvent(HandlerEventType.DELETE, repository);
|
||||
} else {
|
||||
throw new RepositoryNotFoundException(repository);
|
||||
private void preDelete(Repository toDelete) throws RepositoryException {
|
||||
if (configuration.isEnableRepositoryArchive() && !toDelete.isArchived()) {
|
||||
throw new RepositoryIsNotArchivedException("Repository could not deleted, because it is not archived.");
|
||||
}
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, toDelete);
|
||||
getHandler(toDelete).delete(toDelete);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -157,36 +157,15 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param user
|
||||
*
|
||||
* @throws IOException
|
||||
* @throws UserException
|
||||
*/
|
||||
@Override
|
||||
public void delete(User user) throws UserException
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
public void delete(User user) throws UserException {
|
||||
logger.info("delete user {} of type {}", user.getName(), user.getType());
|
||||
}
|
||||
|
||||
String name = user.getName();
|
||||
UserPermissions.delete(name).check();
|
||||
|
||||
if (userDAO.contains(name))
|
||||
{
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, user);
|
||||
userDAO.delete(user);
|
||||
fireEvent(HandlerEventType.DELETE, user);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new UserNotFoundException(user);
|
||||
}
|
||||
managerDaoAdapter.delete(
|
||||
user,
|
||||
() -> UserPermissions.delete(user.getName()),
|
||||
toDelete -> fireEvent(HandlerEventType.BEFORE_DELETE, toDelete),
|
||||
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user