From 34fbf561731ec6f972f304d9cd03ccacd8e21577 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 12 Feb 2018 17:19:25 +0100 Subject: [PATCH] when importing zip file from max, ignore max specific "hidden" files --- .../converter/ComplexZipConverter.java | 20 +- .../converter/ComplexZipConverterTest.java | 947 +++++++++--------- 2 files changed, 508 insertions(+), 459 deletions(-) diff --git a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java index e2640f0b3e..12f391a07b 100644 --- a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java +++ b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java @@ -114,6 +114,8 @@ public class ComplexZipConverter { ZipEntry entry = entries.nextElement(); if (!entry.isDirectory()) { ZipEntryFile zef = params.getEntry(entry.getName()); + logger.debug(entry.getName()); + logger.debug(zef); if (zef instanceof ModelZipEntryFile) { ModelZipEntryFile modelEntryFile = (ModelZipEntryFile) zef; InputStream is = zipFile.getInputStream(entry); @@ -133,7 +135,7 @@ public class ComplexZipConverter { // imageEntries.add((ImageZipEntryFile) zef); } else if (zef instanceof DataMiningZipEntryFile) { dataMiningSets.add(dataMiningZipEntryToDataMiningSet(zipFile, entry, (DataMiningZipEntryFile) zef)); - } else { + } else if (!isIgnoredFile(entry.getName())) { throw new NotImplementedException("Unknwon entry type: " + zef.getClass()); } } @@ -181,6 +183,19 @@ public class ComplexZipConverter { } } + protected boolean isIgnoredFile(String name) { + if (name == null) { + return true; + } else if (name.isEmpty()) { + return true; + } else if (name.startsWith(".DS_Store")) { + return true; + } else if (name.startsWith("__MACOSX")) { + return true; + } + return false; + } + /** * Process a single reaction in mapping file (transfomring reaction into * connection between submodels). @@ -278,13 +293,12 @@ public class ComplexZipConverter { String root = null; String mapping = null; - logger.debug(params.getFilenames()); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); if (!entry.isDirectory()) { String name = entry.getName(); ZipEntryFile zef = params.getEntry(name); - if (zef == null) { + if (zef == null && !isIgnoredFile(name)) { throw new InvalidArgumentException("No information found in params about file: " + name); } if (zef instanceof ModelZipEntryFile) { diff --git a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java index 6d8f7acb69..4d768d5aa9 100644 --- a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java +++ b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java @@ -1,8 +1,10 @@ package lcsb.mapviewer.converter; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; @@ -35,461 +37,494 @@ import lcsb.mapviewer.model.map.species.Species; public class ComplexZipConverterTest { - @SuppressWarnings("unused") - private static Logger logger = Logger.getLogger(ComplexZipConverterTest.class); - - private abstract class AbstractConverter implements IConverter { - - } - - private interface InterfaceConverter extends IConverter { - - } - - public static class MockConverter implements IConverter { - - @Override - public Model createModel(ConverterParams params) { - Model result = new ModelFullIndexed(null); - - Species sa1 = new GenericProtein("sa1"); - result.addElement(sa1); - - Species sa2 = new GenericProtein("sa2"); - result.addElement(sa2); - - Species sa3 = new GenericProtein("sa3"); - result.addElement(sa3); - - Species sa4 = new Phenotype("sa4"); - result.addElement(sa4); - - Complex ca1 = new Complex("ca1"); - ca1.setName("main"); - result.addElement(ca1); - Species sa5 = new GenericProtein("sa5"); - sa5.setName("sa1"); - result.addElement(sa5); - ca1.addSpecies(sa5); - Species sa6 = new Phenotype("sa6"); - sa6.setName("sa4"); - result.addElement(sa6); - ca1.addSpecies(sa6); - - Complex ca2 = new Complex("ca2"); - ca2.setName("s1"); - result.addElement(ca2); - Species sa7 = new GenericProtein("sa7"); - sa7.setName("sa1"); - result.addElement(sa7); - ca2.addSpecies(sa7); - - Complex ca3 = new Complex("cs3"); - ca3.setName("s2"); - result.addElement(ca3); - - Complex ca4 = new Complex("cs4"); - ca4.setName("s3"); - result.addElement(ca4); - - Reaction r1 = new TransportReaction("re1"); - r1.addReactant(new Reactant(sa5)); - r1.addProduct(new Product(sa7)); - result.addReaction(r1); - - Reaction r2 = new TransportReaction("re2"); - r2.addReactant(new Reactant(sa6)); - r2.addProduct(new Product(ca3)); - result.addReaction(r2); - - Reaction r3 = new TransportReaction("re3"); - r3.addReactant(new Reactant(sa7)); - r3.addProduct(new Product(ca4)); - result.addReaction(r3); - return result; - } - - @Override - public InputStream exportModelToInputStream(Model model) throws InconsistentModelException { - // TODO Auto-generated method stub - return null; - } - - @Override - public File exportModelToFile(Model model, String filePath) throws InconsistentModelException { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getCommonName() { - // TODO Auto-generated method stub - return null; - } - - @Override - public MimeType getMimeType() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getFileExtension() { - // TODO Auto-generated method stub - return null; - } - - } - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testConstructor() throws Exception { - try { - new ComplexZipConverter(AbstractConverter.class); - fail("Exception expected"); - - } catch (InvalidClassException e) { - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testConstructor2() throws Exception { - try { - new ComplexZipConverter(InterfaceConverter.class); - fail("Exception expected"); - - } catch (InvalidClassException e) { - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testConstructor3() throws Exception { - try { - new ComplexZipConverter(MockConverter.class); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsOk() throws Exception { - try { - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - Model model = converter.createModel(params); - assertNotNull(model); - assertEquals("main", model.getName()); - assertEquals(3, model.getSubmodelConnections().size()); - - Model s1Model = null; - Model s2Model = null; - Model s3Model = null; - - for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { - if (submodel.getName().equals("s1")) { - s1Model = submodel.getSubmodel().getModel(); - } - if (submodel.getName().equals("s2")) { - s2Model = submodel.getSubmodel().getModel(); - } - if (submodel.getName().equals("s3")) { - s3Model = submodel.getSubmodel().getModel(); - } - } - assertNotNull(s1Model); - assertNotNull(s2Model); - assertNotNull(s3Model); - - Element al1 = model.getElementByElementId("sa1"); - assertNotNull(al1.getSubmodel()); - assertEquals(SubmodelType.DOWNSTREAM_TARGETS, al1.getSubmodel().getType()); - assertEquals(s1Model, al1.getSubmodel().getSubmodel().getModel()); - - Element al2 = model.getElementByElementId("sa2"); - assertNull(al2.getSubmodel()); - - Element al4 = model.getElementByElementId("sa4"); - assertNotNull(al4.getSubmodel()); - assertEquals(SubmodelType.PATHWAY, al4.getSubmodel().getType()); - assertEquals(s2Model, al4.getSubmodel().getSubmodel().getModel()); - - Element s1_al1 = s1Model.getElementByElementId("sa1"); - assertNotNull(s1_al1.getSubmodel()); - assertEquals(SubmodelType.DOWNSTREAM_TARGETS, s1_al1.getSubmodel().getType()); - assertEquals(s3Model, s1_al1.getSubmodel().getSubmodel().getModel()); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testChangeModelZipEntry() throws Exception { - try { - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s12", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - Model model = converter.createModel(params); - assertNotNull(model); - assertEquals("main", model.getName()); - assertEquals(3, model.getSubmodelConnections().size()); - - Model s1Model = null; - Model s2Model = null; - Model s3Model = null; - - for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { - if (submodel.getName().equals("s12")) { - s1Model = submodel.getSubmodel().getModel(); - } - if (submodel.getName().equals("s2")) { - s2Model = submodel.getSubmodel().getModel(); - } - if (submodel.getName().equals("s3")) { - s3Model = submodel.getSubmodel().getModel(); - } - } - assertNotNull(s1Model); - assertNotNull(s2Model); - assertNotNull(s3Model); - - Element al1 = model.getElementByElementId("sa1"); - assertNotNull(al1.getSubmodel()); - assertEquals(SubmodelType.DOWNSTREAM_TARGETS, al1.getSubmodel().getType()); - assertEquals(s1Model, al1.getSubmodel().getSubmodel().getModel()); - - Element al2 = model.getElementByElementId("sa2"); - assertNull(al2.getSubmodel()); - - Element al4 = model.getElementByElementId("sa4"); - assertNotNull(al4.getSubmodel()); - assertEquals(SubmodelType.PATHWAY, al4.getSubmodel().getType()); - assertEquals(s2Model, al4.getSubmodel().getSubmodel().getModel()); - - Element s1_al1 = s1Model.getElementByElementId("sa1"); - assertNotNull(s1_al1.getSubmodel()); - assertEquals(SubmodelType.DOWNSTREAM_TARGETS, s1_al1.getSubmodel().getType()); - assertEquals(s3Model, s1_al1.getSubmodel().getSubmodel().getModel()); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsMissing() throws Exception { - try { - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsInvalid1() throws Exception { - try { - // two mains - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", true, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsInvalid2() throws Exception { - try { - // zero mains - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", false, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsInvalid3() throws Exception { - try { - // two mappings - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, true, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testParamsMissingMapping() throws Exception { - try { - // zero mappings (should be ok) - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", "", false, false, null)); - Model model = converter.createModel(params); - - assertNotNull(model); - - assertEquals(4, model.getSubmodelConnections().size()); - - for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { - if (submodel.getName().equals("s1")) { - assertEquals(SubmodelType.DOWNSTREAM_TARGETS, submodel.getType()); - } else if (submodel.getName().equals("s2")) { - assertEquals(SubmodelType.PATHWAY, submodel.getType()); - } else if (submodel.getName().equals("s3")) { - assertEquals(SubmodelType.UNKNOWN, submodel.getType()); - } else if (submodel.getName().equals("mapping")) { - assertEquals(SubmodelType.UNKNOWN, submodel.getType()); - } - } - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testTooManyParams() throws Exception { - try { - // zero mappings (should be ok) - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/complex_model.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); - params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); - params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); - params.entry(new ModelZipEntryFile("mapping.xml", "", false, false, null)); - params.entry(new ModelZipEntryFile("blabla.xml", "s3", false, false, SubmodelType.UNKNOWN)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testInvalidMappingFile() throws Exception { - try { - // zero mappings (should be ok) - ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); - ComplexZipConverterParams params = new ComplexZipConverterParams(); - params.zipFile(new ZipFile("testFiles/invalid_mapping.zip")); - params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); - params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); - try { - converter.createModel(params); - fail("Exception expected"); - } catch (InvalidArgumentException e) { - - } - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } + @SuppressWarnings("unused") + private static Logger logger = Logger.getLogger(ComplexZipConverterTest.class); + + private abstract class AbstractConverter implements IConverter { + + } + + private interface InterfaceConverter extends IConverter { + + } + + public static class MockConverter implements IConverter { + + @Override + public Model createModel(ConverterParams params) { + Model result = new ModelFullIndexed(null); + + Species sa1 = new GenericProtein("sa1"); + result.addElement(sa1); + + Species sa2 = new GenericProtein("sa2"); + result.addElement(sa2); + + Species sa3 = new GenericProtein("sa3"); + result.addElement(sa3); + + Species sa4 = new Phenotype("sa4"); + result.addElement(sa4); + + Complex ca1 = new Complex("ca1"); + ca1.setName("main"); + result.addElement(ca1); + Species sa5 = new GenericProtein("sa5"); + sa5.setName("sa1"); + result.addElement(sa5); + ca1.addSpecies(sa5); + Species sa6 = new Phenotype("sa6"); + sa6.setName("sa4"); + result.addElement(sa6); + ca1.addSpecies(sa6); + + Complex ca2 = new Complex("ca2"); + ca2.setName("s1"); + result.addElement(ca2); + Species sa7 = new GenericProtein("sa7"); + sa7.setName("sa1"); + result.addElement(sa7); + ca2.addSpecies(sa7); + + Complex ca3 = new Complex("cs3"); + ca3.setName("s2"); + result.addElement(ca3); + + Complex ca4 = new Complex("cs4"); + ca4.setName("s3"); + result.addElement(ca4); + + Reaction r1 = new TransportReaction("re1"); + r1.addReactant(new Reactant(sa5)); + r1.addProduct(new Product(sa7)); + result.addReaction(r1); + + Reaction r2 = new TransportReaction("re2"); + r2.addReactant(new Reactant(sa6)); + r2.addProduct(new Product(ca3)); + result.addReaction(r2); + + Reaction r3 = new TransportReaction("re3"); + r3.addReactant(new Reactant(sa7)); + r3.addProduct(new Product(ca4)); + result.addReaction(r3); + return result; + } + + @Override + public InputStream exportModelToInputStream(Model model) throws InconsistentModelException { + // TODO Auto-generated method stub + return null; + } + + @Override + public File exportModelToFile(Model model, String filePath) throws InconsistentModelException { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getCommonName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MimeType getMimeType() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getFileExtension() { + // TODO Auto-generated method stub + return null; + } + + } + + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testConstructor() throws Exception { + try { + new ComplexZipConverter(AbstractConverter.class); + fail("Exception expected"); + + } catch (InvalidClassException e) { + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testConstructor2() throws Exception { + try { + new ComplexZipConverter(InterfaceConverter.class); + fail("Exception expected"); + + } catch (InvalidClassException e) { + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testConstructor3() throws Exception { + try { + new ComplexZipConverter(MockConverter.class); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsOk() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + Model model = converter.createModel(params); + assertNotNull(model); + assertEquals("main", model.getName()); + assertEquals(3, model.getSubmodelConnections().size()); + + Model s1Model = null; + Model s2Model = null; + Model s3Model = null; + + for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { + if (submodel.getName().equals("s1")) { + s1Model = submodel.getSubmodel().getModel(); + } + if (submodel.getName().equals("s2")) { + s2Model = submodel.getSubmodel().getModel(); + } + if (submodel.getName().equals("s3")) { + s3Model = submodel.getSubmodel().getModel(); + } + } + assertNotNull(s1Model); + assertNotNull(s2Model); + assertNotNull(s3Model); + + Element al1 = model.getElementByElementId("sa1"); + assertNotNull(al1.getSubmodel()); + assertEquals(SubmodelType.DOWNSTREAM_TARGETS, al1.getSubmodel().getType()); + assertEquals(s1Model, al1.getSubmodel().getSubmodel().getModel()); + + Element al2 = model.getElementByElementId("sa2"); + assertNull(al2.getSubmodel()); + + Element al4 = model.getElementByElementId("sa4"); + assertNotNull(al4.getSubmodel()); + assertEquals(SubmodelType.PATHWAY, al4.getSubmodel().getType()); + assertEquals(s2Model, al4.getSubmodel().getSubmodel().getModel()); + + Element s1_al1 = s1Model.getElementByElementId("sa1"); + assertNotNull(s1_al1.getSubmodel()); + assertEquals(SubmodelType.DOWNSTREAM_TARGETS, s1_al1.getSubmodel().getType()); + assertEquals(s3Model, s1_al1.getSubmodel().getSubmodel().getModel()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testChangeModelZipEntry() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s12", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + Model model = converter.createModel(params); + assertNotNull(model); + assertEquals("main", model.getName()); + assertEquals(3, model.getSubmodelConnections().size()); + + Model s1Model = null; + Model s2Model = null; + Model s3Model = null; + + for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { + if (submodel.getName().equals("s12")) { + s1Model = submodel.getSubmodel().getModel(); + } + if (submodel.getName().equals("s2")) { + s2Model = submodel.getSubmodel().getModel(); + } + if (submodel.getName().equals("s3")) { + s3Model = submodel.getSubmodel().getModel(); + } + } + assertNotNull(s1Model); + assertNotNull(s2Model); + assertNotNull(s3Model); + + Element al1 = model.getElementByElementId("sa1"); + assertNotNull(al1.getSubmodel()); + assertEquals(SubmodelType.DOWNSTREAM_TARGETS, al1.getSubmodel().getType()); + assertEquals(s1Model, al1.getSubmodel().getSubmodel().getModel()); + + Element al2 = model.getElementByElementId("sa2"); + assertNull(al2.getSubmodel()); + + Element al4 = model.getElementByElementId("sa4"); + assertNotNull(al4.getSubmodel()); + assertEquals(SubmodelType.PATHWAY, al4.getSubmodel().getType()); + assertEquals(s2Model, al4.getSubmodel().getSubmodel().getModel()); + + Element s1_al1 = s1Model.getElementByElementId("sa1"); + assertNotNull(s1_al1.getSubmodel()); + assertEquals(SubmodelType.DOWNSTREAM_TARGETS, s1_al1.getSubmodel().getType()); + assertEquals(s3Model, s1_al1.getSubmodel().getSubmodel().getModel()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsMissing() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsInvalid1() throws Exception { + try { + // two mains + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", true, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsInvalid2() throws Exception { + try { + // zero mains + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", false, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsInvalid3() throws Exception { + try { + // two mappings + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, true, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testParamsMissingMapping() throws Exception { + try { + // zero mappings (should be ok) + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", "", false, false, null)); + Model model = converter.createModel(params); + + assertNotNull(model); + + assertEquals(4, model.getSubmodelConnections().size()); + + for (ModelSubmodelConnection submodel : model.getSubmodelConnections()) { + if (submodel.getName().equals("s1")) { + assertEquals(SubmodelType.DOWNSTREAM_TARGETS, submodel.getType()); + } else if (submodel.getName().equals("s2")) { + assertEquals(SubmodelType.PATHWAY, submodel.getType()); + } else if (submodel.getName().equals("s3")) { + assertEquals(SubmodelType.UNKNOWN, submodel.getType()); + } else if (submodel.getName().equals("mapping")) { + assertEquals(SubmodelType.UNKNOWN, submodel.getType()); + } + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testTooManyParams() throws Exception { + try { + // zero mappings (should be ok) + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/complex_model.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("s1.xml", "s1", false, false, SubmodelType.DOWNSTREAM_TARGETS)); + params.entry(new ModelZipEntryFile("s2.xml", "s2", false, false, SubmodelType.PATHWAY)); + params.entry(new ModelZipEntryFile("s3.xml", "s3", false, false, SubmodelType.UNKNOWN)); + params.entry(new ModelZipEntryFile("mapping.xml", "", false, false, null)); + params.entry(new ModelZipEntryFile("blabla.xml", "s3", false, false, SubmodelType.UNKNOWN)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testInvalidMappingFile() throws Exception { + try { + // zero mappings (should be ok) + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + ComplexZipConverterParams params = new ComplexZipConverterParams(); + params.zipFile(new ZipFile("testFiles/invalid_mapping.zip")); + params.entry(new ModelZipEntryFile("main.xml", "main", true, false, null)); + params.entry(new ModelZipEntryFile("mapping.xml", null, false, true, null)); + try { + converter.createModel(params); + fail("Exception expected"); + } catch (InvalidArgumentException e) { + + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testIsIgnoredFileForMac() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + assertTrue(converter.isIgnoredFile("__MACOSX/.desc")); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testIsIgnoredFileForOldMacEntries() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + assertTrue(converter.isIgnoredFile(".DS_Store/.desc")); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testIsIgnoredFileForValidFiles() throws Exception { + try { + ComplexZipConverter converter = new ComplexZipConverter(MockConverter.class); + assertFalse(converter.isIgnoredFile("mapping.xml")); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } } -- GitLab