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;
|
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
|
@FunctionalInterface
|
||||||
public interface AroundHandler<T extends ModelObject, E extends Exception> {
|
public interface AroundHandler<T extends ModelObject, E extends Exception> {
|
||||||
void handle(T notModified) throws E;
|
void handle(T notModified) throws E;
|
||||||
|
|||||||
@@ -125,37 +125,15 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method description
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param group
|
|
||||||
*
|
|
||||||
* @throws GroupException
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(Group group) throws GroupException
|
public void delete(Group group) throws GroupException {
|
||||||
{
|
logger.info("delete group {} of type {}", group.getName(), group.getType());
|
||||||
if (logger.isInfoEnabled())
|
managerDaoAdapter.delete(
|
||||||
{
|
group,
|
||||||
logger.info("delete group {} of type {}", group.getName(),
|
() -> GroupPermissions.delete(group.getName()),
|
||||||
group.getType());
|
toDelete -> fireEvent(HandlerEventType.BEFORE_DELETE, toDelete),
|
||||||
}
|
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||||
|
);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -158,38 +158,23 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method description
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param repository
|
|
||||||
*
|
|
||||||
* @throws IOException
|
|
||||||
* @throws RepositoryException
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(Repository repository)
|
public void delete(Repository repository) throws RepositoryException {
|
||||||
throws RepositoryException {
|
logger.info("delete repository {} of type {}", repository.getName(), repository.getType());
|
||||||
if (logger.isInfoEnabled()) {
|
managerDaoAdapter.delete(
|
||||||
logger.info("delete repository {} of type {}", repository.getName(),
|
repository,
|
||||||
repository.getType());
|
() -> RepositoryPermissions.delete(repository),
|
||||||
|
this::preDelete,
|
||||||
|
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
RepositoryPermissions.delete(repository).check();
|
private void preDelete(Repository toDelete) throws RepositoryException {
|
||||||
|
if (configuration.isEnableRepositoryArchive() && !toDelete.isArchived()) {
|
||||||
if (configuration.isEnableRepositoryArchive() && !repository.isArchived()) {
|
throw new RepositoryIsNotArchivedException("Repository could not deleted, because it is not archived.");
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
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
|
@Override
|
||||||
public void delete(User user) throws UserException
|
public void delete(User user) throws UserException {
|
||||||
{
|
|
||||||
if (logger.isInfoEnabled())
|
|
||||||
{
|
|
||||||
logger.info("delete user {} of type {}", user.getName(), user.getType());
|
logger.info("delete user {} of type {}", user.getName(), user.getType());
|
||||||
}
|
managerDaoAdapter.delete(
|
||||||
|
user,
|
||||||
String name = user.getName();
|
() -> UserPermissions.delete(user.getName()),
|
||||||
UserPermissions.delete(name).check();
|
toDelete -> fireEvent(HandlerEventType.BEFORE_DELETE, toDelete),
|
||||||
|
toDelete -> fireEvent(HandlerEventType.DELETE, toDelete)
|
||||||
if (userDAO.contains(name))
|
);
|
||||||
{
|
|
||||||
fireEvent(HandlerEventType.BEFORE_DELETE, user);
|
|
||||||
userDAO.delete(user);
|
|
||||||
fireEvent(HandlerEventType.DELETE, user);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new UserNotFoundException(user);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user