void editId(Project project, String newProjectId, String sessionId) throws CatalogException { ParamUtils.checkAlias(newProjectId, "new project id"); ParamUtils.checkParameter(sessionId, "sessionId"); String userId = this.catalogManager.getUserManager().getUserId(sessionId); authorizationManager.checkCanEditProject(project.getUid(), userId); String owner = project.getFqn().split("@")[0]; if (StringUtils.isEmpty(owner)) { throw new CatalogException("Internal error. Project fqn required"); } userDBAdaptor.updateUserLastModified(userId); projectDBAdaptor.editId(owner, project.getUid(), project.getId(), newProjectId); auditManager.recordUpdate(AuditRecord.Resource.project, project.getUid(), userId, new ObjectMap(ProjectDBAdaptor.QueryParams.ID.key(), newProjectId), null, null); }
/** * cases: * ok: correct projectId, correct newName * error: non-existent projectId * error: newName already used * error: newName == oldName * * @throws CatalogDBException */ @Test public void renameProjectTest() throws CatalogException { Project p1 = catalogProjectDBAdaptor.insert(new Project("p1", "project1", null, "Cool", new Status(), "", 3000, "", null, 1), user1.getId(), null).first(); Project p2 = catalogProjectDBAdaptor.insert(new Project("p2", "project2", null, "Cool", new Status(), "", 3000, "", null, 1), user1.getId(), null).first(); catalogProjectDBAdaptor.editId(user1.getId(), p1.getUid(), "p1", "newpmp"); try { catalogProjectDBAdaptor.editId(user1.getId(), -1, "", "falseProject"); fail("renamed project with projectId=-1"); } catch (CatalogDBException e) { System.out.println("correct exception: " + e); } try { catalogProjectDBAdaptor.editId(user1.getId(), p1.getUid(), "newpmp", p2.getId()); fail("renamed project with name collision"); } catch (CatalogDBException e) { System.out.println("correct exception: " + e); } }