Skip to content
Snippets Groups Projects
Commit 8d03dcb7 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '714-empty-overlay-colours-are-not-preserved-during-export-to-celld' into 'master'

Resolve "Empty Overlay colours are not preserved during export to CellD"

Closes #714

See merge request !874
parents 19c86f33 420e6503
No related branches found
No related tags found
1 merge request!874Resolve "Empty Overlay colours are not preserved during export to CellD"
Pipeline #12713 passed
......@@ -3,6 +3,8 @@ minerva (14.0.0~alpha.1) unstable; urgency=low
* Small improvement: debian package can be installed on debian:buster (#879)
* Bug fix: REST API bioEntities:search method didn't limit results to the
submodel id (#880)
* Bug fix: Empty Overlay colours were not preserved during export to
CellDesigner (#714)
-- Piotr Gawron <piotr.gawron@uni.lu> Mon, 12 Aug 2019 10:00:00 +0200
......
......@@ -94,6 +94,7 @@ public class ModelController extends BaseController {
@PathVariable(value = "modelId") String modelId,
@RequestParam(value = "handlerClass") String handlerClass,
@RequestParam(value = "overlayIds", defaultValue = "") String overlayIds,
@RequestParam(value = "backgroundOverlayId", defaultValue = "") String backgroundOverlayId,
@RequestParam(value = "polygonString", defaultValue = "") String polygonString,
@RequestParam(value = "elementIds", defaultValue = "") String elementIds,
@RequestParam(value = "reactionIds", defaultValue = "") String reactionIds)
......@@ -101,7 +102,7 @@ public class ModelController extends BaseController {
ConverterException, InconsistentModelException {
User user = userService.getUserByLogin(authentication.getName());
FileEntry file = modelController.getModelAsModelFile(
projectId, modelId, handlerClass, overlayIds, polygonString, elementIds, reactionIds, user);
projectId, modelId, handlerClass, overlayIds, polygonString, elementIds, reactionIds, user, backgroundOverlayId);
return ResponseEntity.ok().contentLength(file.getFileContent().length)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=" + file.getOriginalFileName())
......
......@@ -170,9 +170,12 @@ public class ModelRestImpl extends BaseRestImpl {
public FileEntry getModelAsModelFile(String projectId, String modelId, String handlerClass,
String overlayIds, String polygonString, String elementIds,
String reactionIds, User user)
String reactionIds, User user, String backgroundOverlayId)
throws QueryException, IOException, InvalidColorSchemaException, CommandExecutionException,
ConverterException, InconsistentModelException {
Project project = getProjectService().getProjectByProjectId(projectId);
Model originalModel = getModelByModelId(projectId, modelId);
Path2D polygon = stringToPolygon(polygonString, originalModel);
......@@ -188,10 +191,24 @@ public class ModelRestImpl extends BaseRestImpl {
String[] overlayIdsList = stringListToArray(overlayIds);
// Remove all colors
if (overlayIdsList.length > 0) {
for (Element element : part.getElements()) {
element.setColor(Color.WHITE);
new ClearColorModelCommand(part).execute();
}
if (!backgroundOverlayId.equals("")) {
Layout overlay = project.getLayoutByIdentifier(Integer.valueOf(backgroundOverlayId));
if (overlay == null) {
throw new ObjectNotFoundException("Unknown overlay in model. Layout.id=" + backgroundOverlayId);
}
if (overlay.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
// this might not return true if we change CLEAN.title in future...
// if it's clean then remove coloring
new ClearColorModelCommand(part).execute();
}
}
// Color with overlays
for (String overlayId : overlayIdsList) {
Layout overlay = layoutService.getLayoutById(Integer.parseInt(overlayId.trim()));
......
......@@ -108,20 +108,20 @@ public class ModelRestImplTest extends RestTestFunctions {
@Test(expected = QueryException.class)
public void testGetModelAsFileModel() throws Exception {
ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
modelRest.getModelAsModelFile("sample", "0", "", "", "", null, null, null);
modelRest.getModelAsModelFile("sample", "0", "", "", "", null, null, null, "");
}
@Test
public void testGetModelAsFileModel2() throws Exception {
ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
modelRest.getModelAsModelFile("sample", "0", CellDesignerXmlParser.class.getCanonicalName(), "",
"0,0;90,0;90,90;90,0", null, null, null);
"0,0;90,0;90,90;90,0", null, null, null, "");
}
@Test(expected = QueryException.class)
public void testGetModelAsFileModel3() throws Exception {
ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
modelRest.getModelAsModelFile("sample", "0", "", "", "0,0;90,0;90,90;90,0", null, null, null);
modelRest.getModelAsModelFile("sample", "0", "", "", "0,0;90,0;90,90;90,0", null, null, null, "");
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment