public QueryResult<User> delete(String id, QueryOptions queryOptions) throws CatalogDBException {
long startTime = startQuery();
checkId(id);
Query query = new Query(QueryParams.ID.key(), id)
.append(QueryParams.STATUS_NAME.key(), User.UserStatus.READY + "," + User.UserStatus.BANNED);
if (count(query).first() == 0) {
query.put(QueryParams.STATUS_NAME.key(), User.UserStatus.DELETED);
QueryOptions options = new QueryOptions(MongoDBCollection.INCLUDE, QueryParams.STATUS_NAME.key());
User user = get(query, options).first();
throw new CatalogDBException("The user {" + id + "} was already " + user.getStatus().getName());
}
if (!queryOptions.containsKey(FORCE) || !queryOptions.getBoolean(FORCE)) {
checkCanDelete(id);
}
if (queryOptions.containsKey(FORCE) && queryOptions.getBoolean(FORCE)) {
query = new Query(ProjectDBAdaptor.QueryParams.USER_ID.key(), id);
dbAdaptorFactory.getCatalogProjectDbAdaptor().delete(query, queryOptions);
}
setStatus(id, User.UserStatus.DELETED);
query = new Query(QueryParams.ID.key(), id)
.append(QueryParams.STATUS_NAME.key(), User.UserStatus.DELETED);
return endQuery("Delete user", startTime, get(query, queryOptions));
}