From f8a73b0ae648e06dbcd2055c7fae6239b1ca66b7 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 28 Aug 2019 19:39:48 +0200 Subject: [PATCH] ColorSchemaType is obligatory --- .../converter/ComplexZipConverter.java | 14 +++++ .../services/impl/LayoutService.java | 16 ++++- .../services/impl/ProjectService.java | 2 + .../web/ControllerIntegrationTest.java | 2 + .../web/OverlayControllerIntegrationTest.java | 63 +++++-------------- 5 files changed, 47 insertions(+), 50 deletions(-) diff --git a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java index e1a45aa32e..ed92ef5f76 100644 --- a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java +++ b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java @@ -12,10 +12,12 @@ import org.apache.commons.io.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import lcsb.mapviewer.common.TextFileUtils; import lcsb.mapviewer.common.exception.*; import lcsb.mapviewer.common.exception.InvalidClassException; import lcsb.mapviewer.converter.zip.*; import lcsb.mapviewer.model.cache.UploadedFileEntry; +import lcsb.mapviewer.model.map.layout.ColorSchemaType; import lcsb.mapviewer.model.map.layout.Layout; import lcsb.mapviewer.model.map.model.*; import lcsb.mapviewer.model.map.reaction.Reaction; @@ -310,6 +312,18 @@ public class ComplexZipConverter { fileEntry.setFileContent(IOUtils.toByteArray(zipFile.getInputStream(entry))); fileEntry.setOriginalFileName(entry.getName()); fileEntry.setLength(fileEntry.getFileContent().length); + + Map<String, String> parameters = TextFileUtils.getHeaderParametersFromFile(zipFile.getInputStream(entry)); + ColorSchemaType colorSchemaType = null; + String type = parameters.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE); + if (type != null) { + colorSchemaType = ColorSchemaType.valueOf(type); + } + if (colorSchemaType == null) { + colorSchemaType = ColorSchemaType.GENERIC; + } + + layout.setColorSchemaType(colorSchemaType); layout.setInputData(fileEntry); layout.setPublicLayout(true); layout.setTitle(layoutEntry.getName()); diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java index 3ae2367748..a17d871386 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java @@ -1,10 +1,9 @@ package lcsb.mapviewer.services.impl; -import java.awt.*; +import java.awt.Color; import java.io.IOException; import java.util.*; import java.util.Comparator; -import java.util.List; import javax.mail.MessagingException; @@ -153,6 +152,17 @@ public class LayoutService implements ILayoutService { public Layout createLayout(final CreateLayoutParams params) throws IOException, InvalidColorSchemaException { ColorSchemaReader reader = new ColorSchemaReader(); Map<String, String> parameters = TextFileUtils.getHeaderParametersFromFile(params.getColorInputStream()); + ColorSchemaType colorSchemaType = params.getColorSchemaType(); + if (colorSchemaType == null) { + String type = parameters.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE); + if (type != null) { + colorSchemaType = ColorSchemaType.valueOf(type); + } + } + if (colorSchemaType == null) { + colorSchemaType = ColorSchemaType.GENERIC; + } + if (parameters.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE) == null && params.getColorSchemaType() != null) { parameters.put(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE, params.getColorSchemaType().name()); } @@ -171,7 +181,7 @@ public class LayoutService implements ILayoutService { layoutDao.flush(); Layout topLayout = new Layout(params.getName(), false); - topLayout.setColorSchemaType(params.getColorSchemaType()); + topLayout.setColorSchemaType(colorSchemaType); if (params.getUser() == null) { topLayout.setPublicLayout(true); } else { 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 3d1d1cc0d3..6a28bbb981 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java @@ -773,6 +773,7 @@ public class ProjectService implements IProjectService { for (BuildInLayout buildInLayout : buildInLayouts) { int submodelId = 0; Layout topLayout = new Layout(buildInLayout.getTitle(), true); + topLayout.setColorSchemaType(ColorSchemaType.GENERIC); topLayout.setStatus(LayoutStatus.NA); topLayout.setProgress(0.0); topLayout.setHierarchicalView(buildInLayout.isNested()); @@ -787,6 +788,7 @@ public class ProjectService implements IProjectService { if (params.isSemanticZoomContainsMultipleLayouts() && buildInLayout == BuildInLayout.NESTED) { for (int i = 0; i <= topModel.getZoomLevels(); i++) { Layout semanticOverlay = new Layout(buildInLayout.getTitle() + "-" + i, true); + semanticOverlay.setColorSchemaType(ColorSchemaType.GENERIC); String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-" + topModel.getId() + "/"; diff --git a/web/src/test/java/lcsb/mapviewer/web/ControllerIntegrationTest.java b/web/src/test/java/lcsb/mapviewer/web/ControllerIntegrationTest.java index 5f2aebf7e0..909799195d 100644 --- a/web/src/test/java/lcsb/mapviewer/web/ControllerIntegrationTest.java +++ b/web/src/test/java/lcsb/mapviewer/web/ControllerIntegrationTest.java @@ -31,6 +31,7 @@ import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.ProjectStatus; import lcsb.mapviewer.model.cache.UploadedFileEntry; import lcsb.mapviewer.model.graphics.PolylineData; +import lcsb.mapviewer.model.map.layout.ColorSchemaType; import lcsb.mapviewer.model.map.layout.Layout; import lcsb.mapviewer.model.map.model.ModelData; import lcsb.mapviewer.model.map.reaction.*; @@ -302,6 +303,7 @@ abstract public class ControllerIntegrationTest { file.setLength(content.getBytes().length); Layout overlay = new Layout(); + overlay.setColorSchemaType(ColorSchemaType.GENERIC); overlay.setInputData(file); overlay.setProject(project); overlay.setCreator(admin); diff --git a/web/src/test/java/lcsb/mapviewer/web/OverlayControllerIntegrationTest.java b/web/src/test/java/lcsb/mapviewer/web/OverlayControllerIntegrationTest.java index 31a1cbb489..0c0a3ea633 100644 --- a/web/src/test/java/lcsb/mapviewer/web/OverlayControllerIntegrationTest.java +++ b/web/src/test/java/lcsb/mapviewer/web/OverlayControllerIntegrationTest.java @@ -83,15 +83,9 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest User user = createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD); - Layout layout = new Layout(); - layout.setCreator(user); - layout.setProject(project); - layoutDao.add(layout); + createOverlay(project, user); - Layout curatorLayout = new Layout(); - curatorLayout.setCreator(curator); - curatorLayout.setProject(project); - layoutDao.add(curatorLayout); + createOverlay(project, curator); MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); @@ -112,8 +106,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest public void testListPublicOverlaysOverlaysWhenCreatorEmpty() throws Exception { createAdmin(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); - Layout layout = new Layout(); - layout.setProject(project); + Layout layout= createOverlay(project, null); layout.setPublicLayout(true); layoutDao.add(layout); @@ -136,8 +129,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest public void testListNonPublicOverlaysOverlaysWhenCreatorEmpty() throws Exception { createAdmin(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); - Layout layout = new Layout(); - layout.setProject(project); + Layout layout= createOverlay(project, null); layout.setPublicLayout(true); layoutDao.add(layout); @@ -164,15 +156,12 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD); - Layout layout = new Layout(); - layout.setProject(project); + Layout layout = createOverlay(project, null); layout.setPublicLayout(true); layoutDao.add(layout); - Layout curatorLayout = new Layout(); + Layout curatorLayout = createOverlay(project, curator); curatorLayout.setPublicLayout(false); - curatorLayout.setCreator(curator); - curatorLayout.setProject(project); layoutDao.add(curatorLayout); MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); @@ -197,15 +186,12 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest User user = createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD); - Layout layout = new Layout(); - layout.setProject(project); + Layout layout = createOverlay(project, null); layout.setPublicLayout(true); layoutDao.add(layout); - Layout userLayout = new Layout(); + Layout userLayout = createOverlay(project, user); userLayout.setPublicLayout(false); - userLayout.setCreator(user); - userLayout.setProject(project); layoutDao.add(userLayout); MockHttpSession session = createSession(TEST_CURATOR_LOGIN, TEST_CURATOR_PASSWORD); @@ -227,20 +213,16 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest public void testUserShouldSeeAllPublicOverlaysAndOverlays() throws Exception { User user = createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD, project); - Layout layout = new Layout(); - layout.setProject(project); + Layout layout = createOverlay(project, null); layout.setPublicLayout(true); layoutDao.add(layout); - Layout hiddenLayout = new Layout(); - hiddenLayout.setProject(project); + Layout hiddenLayout = createOverlay(project, null); hiddenLayout.setPublicLayout(false); layoutDao.add(hiddenLayout); - Layout userLayout = new Layout(); + Layout userLayout = createOverlay(project, user); userLayout.setPublicLayout(false); - userLayout.setCreator(user); - userLayout.setProject(project); layoutDao.add(userLayout); MockHttpSession session = createSession(TEST_USER_LOGIN, TEST_USER_PASSWORD); @@ -277,10 +259,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest User user = createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD, project); createAdmin(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); - Layout overlay = new Layout(); - overlay.setProject(project); - overlay.setCreator(user); - layoutDao.add(overlay); + Layout overlay = createOverlay(project, user); MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); @@ -298,10 +277,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest User curator = createCurator(TEST_CURATOR_LOGIN, TEST_CURATOR_PASSWORD); userService.grantUserPrivilege(curator, PrivilegeType.READ_PROJECT, project.getProjectId()); - Layout overlay = new Layout(); - overlay.setProject(project); - overlay.setCreator(user); - layoutDao.add(overlay); + Layout overlay = createOverlay(project, user); MockHttpSession session = createSession(TEST_CURATOR_LOGIN, TEST_CURATOR_PASSWORD); @@ -317,10 +293,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest public void testUserCanAccessHisOwnOverlay() throws Exception { User user = createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD, project); - Layout overlay = new Layout(); - overlay.setProject(project); - overlay.setCreator(user); - layoutDao.add(overlay); + Layout overlay = createOverlay(project, user); MockHttpSession session = createSession(TEST_USER_LOGIN, TEST_USER_PASSWORD); @@ -337,10 +310,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD, project); User admin = createAdmin(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); - Layout overlay = new Layout(); - overlay.setProject(project); - overlay.setCreator(admin); - layoutDao.add(overlay); + Layout overlay = createOverlay(project, admin); MockHttpSession session = createSession(TEST_USER_LOGIN, TEST_USER_PASSWORD); @@ -922,8 +892,7 @@ public class OverlayControllerIntegrationTest extends ControllerIntegrationTest public void testUserCanAccessPublicOverlay() throws Exception { createUser(TEST_USER_LOGIN, TEST_USER_PASSWORD, project); - Layout overlay = new Layout(); - overlay.setProject(project); + Layout overlay = createOverlay(project, null); overlay.setPublicLayout(true); layoutDao.add(overlay); -- GitLab