Search in sources :

Example 1 with ProjectUpdated

use of org.bimserver.models.log.ProjectUpdated in project BIMserver by opensourceBIM.

the class UpdateProjectDatabaseAction method execute.

@Override
public Void execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException {
    User actingUser = getUserByUoid(authorization.getUoid());
    final Project project = getProjectByPoid(sProject.getOid());
    if (project == null) {
        throw new UserException("Project with pid " + sProject.getOid() + " not found");
    }
    if (sProject.getName().trim().equals("")) {
        throw new UserException("Project name cannot be empty");
    }
    if (!authorization.hasRightsOnProjectOrSuperProjects(actingUser, project)) {
        throw new UserException("User has no rights to update project properties");
    }
    if (project.getParent() == null) {
        if (!sProject.getName().equals(project.getName())) {
            for (Project p : getProjectsByName(sProject.getName())) {
                if (p.getParent() == null) {
                    throw new UserException("Project name must be unique");
                }
            }
        }
    } else {
        Project parent = project.getParent();
        for (Project subProject : parent.getSubProjects()) {
            if (subProject.getName().equals(sProject.getName()) && subProject != project) {
                throw new UserException("Project name must be unique within parent project (" + parent.getName() + ")");
            }
        }
    }
    project.setSendEmailOnNewRevision(sProject.isSendEmailOnNewRevision());
    project.setName(sProject.getName());
    project.setDescription(sProject.getDescription());
    project.setExportLengthMeasurePrefix(SIPrefix.get(sProject.getExportLengthMeasurePrefix().getOrdinal()));
    final ProjectUpdated projectUpdated = getDatabaseSession().create(ProjectUpdated.class);
    projectUpdated.setAccessMethod(getAccessMethod());
    projectUpdated.setDate(new Date());
    projectUpdated.setExecutor(actingUser);
    projectUpdated.setProject(project);
    getDatabaseSession().addPostCommitAction(new PostCommitAction() {

        @Override
        public void execute() throws UserException {
            bimServer.getNotificationsManager().notify(new SConverter().convertToSObject(projectUpdated));
        }
    });
    getDatabaseSession().store(project);
    return null;
}
Also used : SProject(org.bimserver.interfaces.objects.SProject) Project(org.bimserver.models.store.Project) User(org.bimserver.models.store.User) SConverter(org.bimserver.interfaces.SConverter) PostCommitAction(org.bimserver.database.PostCommitAction) ProjectUpdated(org.bimserver.models.log.ProjectUpdated) UserException(org.bimserver.shared.exceptions.UserException) Date(java.util.Date)

Aggregations

Date (java.util.Date)1 PostCommitAction (org.bimserver.database.PostCommitAction)1 SConverter (org.bimserver.interfaces.SConverter)1 SProject (org.bimserver.interfaces.objects.SProject)1 ProjectUpdated (org.bimserver.models.log.ProjectUpdated)1 Project (org.bimserver.models.store.Project)1 User (org.bimserver.models.store.User)1 UserException (org.bimserver.shared.exceptions.UserException)1