diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java index 34bdb657aa18d6c5aab258d84212fcef9320472e..fd0e399b6305c9b16ae808e836035092b4199dac 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java @@ -409,36 +409,39 @@ public class ProjectRestImpl extends BaseRestImpl { throw new SecurityException("You cannot update projects"); } Set<String> fields = data.keySet(); - for (String string : fields) { - if (string.equalsIgnoreCase("version")) { - project.setVersion((String) data.get(string)); - } else if (string.equalsIgnoreCase("id")) { + for (String fieldName : fields) { + Object value = data.get(fieldName); + String stringValue = null; + if (value instanceof String) { + stringValue = (String) value; + } + if (fieldName.equalsIgnoreCase("version")) { + project.setVersion((String) value); + } else if (fieldName.equalsIgnoreCase("id")) { try { - int id = Integer.parseInt(string); + int id = Integer.parseInt(stringValue); if (id != project.getId()) { - throw new QueryException("Invalid id: " + string); + throw new QueryException("Invalid id: " + stringValue); } } catch (NumberFormatException e) { - throw new QueryException("Invalid id: " + string); + throw new QueryException("Invalid id: " + stringValue); } - } else if (string.equalsIgnoreCase("projectId")) { - if (!project.getProjectId().equalsIgnoreCase(string)) { + } else if (fieldName.equalsIgnoreCase("projectId")) { + if (!project.getProjectId().equalsIgnoreCase(stringValue)) { throw new QueryException("You cannot modify projectId"); } - } else if (string.equalsIgnoreCase("name")) { - project.setName((String) data.get(string)); - } else if (string.equalsIgnoreCase("notifyEmail")) { - project.setNotifyEmail((String) data.get(string)); - } else if (string.equalsIgnoreCase("organism")) { - Object res = data.get(string); - MiriamData organism = updateMiriamData(project.getOrganism(), res); + } else if (fieldName.equalsIgnoreCase("name")) { + project.setName((String) value); + } else if (fieldName.equalsIgnoreCase("notifyEmail")) { + project.setNotifyEmail(stringValue); + } else if (fieldName.equalsIgnoreCase("organism")) { + MiriamData organism = updateMiriamData(project.getOrganism(), value); project.setOrganism(organism); - } else if (string.equalsIgnoreCase("disease")) { - Object res = data.get(string); - MiriamData disease = updateMiriamData(project.getDisease(), res); + } else if (fieldName.equalsIgnoreCase("disease")) { + MiriamData disease = updateMiriamData(project.getDisease(), value); project.setDisease(disease); } else { - throw new QueryException("Unknown field: " + string); + throw new QueryException("Unknown field: " + fieldName); } } getProjectService().updateProject(project); diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java index 697196ce282385b7f203b70f84e244eacb06e67f..97482c221658f95a21ec2112e04bc8b5b9f06757 100644 --- a/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java +++ b/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java @@ -174,6 +174,8 @@ public class ProjectRestImplTest extends RestTestFunctions { data.put("name", "test"); data.put("organism", null); data.put("disease", disease); + data.put("projectId", "sample"); + data.put("id", "0"); projectRest.updateProject(adminToken.getId(), "sample", data); } catch (Exception e) { e.printStackTrace(); @@ -236,6 +238,7 @@ public class ProjectRestImplTest extends RestTestFunctions { project = new Project(); model = super.getModelForFile(string, true); project.addModel(model); + project.setProjectId(model.getName()); } IModelService mockModelService = Mockito.mock(IModelService.class); Mockito.when(mockModelService.getLastModelByProjectId(anyString(), any())).thenReturn(model);