From 2a65dc71b9555cea125c560aa278a4539650fc24 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 20 Jul 2018 14:31:32 +0200 Subject: [PATCH] updating default coordinates and zoom lvel for submap fixed --- .../api/projects/models/ModelRestImpl.java | 18 ++++++------------ .../mapviewer/services/impl/ModelService.java | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java index 6ec57b25d1..78c6e8a518 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java @@ -5,7 +5,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.TreeMap; import org.apache.log4j.Logger; import org.springframework.transaction.annotation.Transactional; @@ -82,25 +81,20 @@ public class ModelRestImpl extends BaseRestImpl { public Map<String, Object> updateModel(String projectId, String modelId, Map<String, Object> data, String token) throws SecurityException, QueryException { - Project project = getProjectService().getProjectByProjectId(projectId, token); - if (project == null) { - throw new ObjectNotFoundException("Project with given id doesn't exist"); - } boolean canModify = getUserService().userHasPrivilege(token, PrivilegeType.ADD_MAP); if (!canModify) { throw new SecurityException("You cannot update projects"); } - ModelData model = null; - Integer id = Integer.valueOf(modelId); - for (ModelData m : project.getModels()) { - if (m.getId().equals(id)) { - model = m; - } + + if (modelId.equals("*")) { + throw new QueryException("Invalid model id: " + modelId); } - if (model == null) { + List<Model> models = super.getModels(projectId, modelId, token); + if (models.size() != 1) { throw new ObjectNotFoundException("Model with given id doesn't exist"); } + ModelData model = models.get(0).getModelData(); Set<String> fields = data.keySet(); for (String fieldName : fields) { Object value = data.get(fieldName); diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java index e99042cdee..e1b62c352d 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java @@ -19,11 +19,14 @@ import lcsb.mapviewer.commands.CopyCommand; import lcsb.mapviewer.common.IProgressUpdater; import lcsb.mapviewer.common.Pair; import lcsb.mapviewer.common.exception.InvalidArgumentException; +import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamType; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.model.ModelData; import lcsb.mapviewer.model.map.model.ModelFullIndexed; +import lcsb.mapviewer.model.map.model.ModelSubmodelConnection; +import lcsb.mapviewer.model.map.model.SubmodelConnection; import lcsb.mapviewer.model.map.reaction.Reaction; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.user.PrivilegeType; @@ -389,7 +392,19 @@ public class ModelService implements IModelService { @Override public void updateModel(ModelData model, String token) throws lcsb.mapviewer.services.SecurityException { - Model topCachedData = getLastModelByProjectId(model.getProject().getProjectId(), token); + Project project = model.getProject(); + if (project == null) { + for (SubmodelConnection sc : model.getParentModels()) { + if (sc instanceof ModelSubmodelConnection) { + project = ((ModelSubmodelConnection) sc).getParentModel().getModel().getProject(); + if (project != null) { + break; + } + } + } + } + + Model topCachedData = getLastModelByProjectId(project.getProjectId(), token); Model cachedData = topCachedData.getSubmodelById(model.getId()); cachedData.setDefaultCenterX(model.getDefaultCenterX()); cachedData.setDefaultCenterY(model.getDefaultCenterY()); -- GitLab