From e7b411f71ba638bdf37328731219f35decc0156c Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 29 Jun 2017 10:02:31 +0200 Subject: [PATCH] hierarchical overlay contain information if there is specific level assigned to it (if not it's considered general) --- .../mapviewer/model/map/layout/Layout.java | 28 ++++++++++++++++++- persist/src/db/11/fix_db_20170629.sql | 2 ++ .../services/impl/ProjectService.java | 11 ++++---- 3 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 persist/src/db/11/fix_db_20170629.sql diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java index d333ce8ea5..f919988d80 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java @@ -72,6 +72,13 @@ public class Layout implements Serializable { */ private boolean hierarchicalView = false; + /** + * If overlay contain hierarchical view then it might be fixed on some + * specific level. This parameter defines the level at which it's fixed or + * contains null if it's general hierarchical view. + */ + private Integer hierarchyViewLevel; + /** * ModelData to which layout is assigend. */ @@ -107,7 +114,7 @@ public class Layout implements Serializable { */ @ManyToOne(fetch = FetchType.LAZY) private Layout parentLayout = null; - + /** * Short description used for this layout. */ @@ -163,6 +170,8 @@ public class Layout implements Serializable { if (layout.inputData != null) { this.inputData = new UploadedFileEntry(layout.getInputData()); } + this.hierarchyViewLevel = layout.hierarchyViewLevel; + } /** @@ -421,4 +430,21 @@ public class Layout implements Serializable { this.inputData = inputData; } + /** + * @return the hierarchyViewLevel + * @see #hierarchyViewLevel + */ + public Integer getHierarchyViewLevel() { + return hierarchyViewLevel; + } + + /** + * @param hierarchyViewLevel + * the hierarchyViewLevel to set + * @see #hierarchyViewLevel + */ + public void setHierarchyViewLevel(Integer hierarchyViewLevel) { + this.hierarchyViewLevel = hierarchyViewLevel; + } + } diff --git a/persist/src/db/11/fix_db_20170629.sql b/persist/src/db/11/fix_db_20170629.sql new file mode 100644 index 0000000000..4ddf369a6d --- /dev/null +++ b/persist/src/db/11/fix_db_20170629.sql @@ -0,0 +1,2 @@ +-- semantic zooming +alter table layout add column hierarchyviewlevel integer; \ No newline at end of file diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java index 6113612ced..2794c4adcc 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java @@ -647,18 +647,15 @@ public class ProjectService implements IProjectService { MapGeneratorParams imgParams = generator.new MapGeneratorParams() .directory(directory).sbgn(params.isSbgnFormat()).nested(layout.isHierarchicalView()).updater(updater); - if (layout.getTitle().contains(BuildInLayout.SEMANTIC.getTitle())) { - if (Character.isDigit(layout.getTitle().charAt(layout.getTitle().length() - 1))) { - output = prepareSemanticZoomModel(model, layout.getTitle().replaceAll("[^0-9.]", "")); - } + if (layout.getHierarchyViewLevel() != null) { + output = prepareSemanticZoomModel(model, layout.getHierarchyViewLevel()); } imgParams.model(output); generator.generateMapImages(imgParams); } - private Model prepareSemanticZoomModel(final Model model, String levelStr) { + private Model prepareSemanticZoomModel(final Model model, int level) { SemanticZoomLevelMatcher matcher = new SemanticZoomLevelMatcher(); - int level = Integer.valueOf(levelStr); Model output = new CopyCommand(model).execute(); for (BioEntity bioEntity : output.getBioEntities()) { if (matcher.isVisible(level, bioEntity.getVisibilityLevel())) { @@ -761,6 +758,7 @@ public class ProjectService implements IProjectService { semanticOverlay.setStatus(LayoutStatus.NA); semanticOverlay.setProgress(0.0); semanticOverlay.setHierarchicalView(buildInLayout.isNested()); + semanticOverlay.setHierarchyViewLevel(i); semanticLevelOverlays.add(semanticOverlay); model.addLayout(1, semanticOverlay); } @@ -783,6 +781,7 @@ public class ProjectService implements IProjectService { semanticOverlay.setProgress(0.0); semanticOverlay.setHierarchicalView(buildInLayout.isNested()); semanticOverlay.setParentLayout(semanticLevelOverlays.get(i)); + semanticOverlay.setHierarchyViewLevel(i); connection.getSubmodel().addLayout(1, semanticOverlay); } } -- GitLab