Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
minerva
core
Commits
65335d19
Commit
65335d19
authored
May 10, 2019
by
Piotr Gawron
Browse files
glyphs are assigned to elements having glyph property
parent
6ca2f662
Changes
4
Hide whitespace changes
Inline
Side-by-side
converter/src/main/java/lcsb/mapviewer/converter/ProjectFactory.java
View file @
65335d19
...
...
@@ -17,7 +17,10 @@ import lcsb.mapviewer.converter.zip.ImageZipEntryFile;
import
lcsb.mapviewer.converter.zip.LayoutZipEntryFile
;
import
lcsb.mapviewer.converter.zip.ZipEntryFile
;
import
lcsb.mapviewer.model.Project
;
import
lcsb.mapviewer.model.map.layout.graphics.Glyph
;
import
lcsb.mapviewer.model.map.model.Model
;
import
lcsb.mapviewer.model.map.model.ModelData
;
import
lcsb.mapviewer.model.map.species.Element
;
public
class
ProjectFactory
{
...
...
@@ -75,6 +78,9 @@ public class ProjectFactory {
project
.
addOverviewImages
(
parser
.
parseOverviewLinks
(
models
,
imageEntries
,
params
.
getVisualizationDir
(),
zipFile
));
}
if
(
project
.
getGlyphs
().
size
()
>
0
)
{
assignGlyphsToElements
(
project
);
}
return
project
;
}
catch
(
IOException
e
)
{
throw
new
InvalidArgumentException
(
e
);
...
...
@@ -82,4 +88,44 @@ public class ProjectFactory {
throw
new
InvalidInputDataExecption
(
"Invalid coordinates file. "
+
e
.
getMessage
(),
e
);
}
}
private
void
assignGlyphsToElements
(
Project
project
)
throws
InvalidGlyphFile
{
for
(
ModelData
model
:
project
.
getModels
())
{
for
(
Element
element
:
model
.
getElements
())
{
Glyph
glyph
=
extractGlyph
(
project
,
element
.
getNotes
());
if
(
glyph
!=
null
)
{
element
.
setNotes
(
removeGlyph
(
element
.
getNotes
()));
element
.
setGlyph
(
glyph
);
}
}
}
}
String
removeGlyph
(
String
notes
)
{
String
lines
[]
=
notes
.
split
(
"[\n\r]+"
);
StringBuilder
result
=
new
StringBuilder
(
""
);
for
(
String
line
:
lines
)
{
if
(!
line
.
startsWith
(
"Glyph:"
))
{
result
.
append
(
line
+
"\n"
);
}
}
return
result
.
toString
();
}
Glyph
extractGlyph
(
Project
project
,
String
notes
)
throws
InvalidGlyphFile
{
String
lines
[]
=
notes
.
split
(
"[\n\r]+"
);
for
(
String
line
:
lines
)
{
if
(
line
.
startsWith
(
"Glyph:"
))
{
String
glyphString
=
line
.
replace
(
"Glyph:"
,
""
).
trim
().
toLowerCase
();
for
(
Glyph
glyph
:
project
.
getGlyphs
())
{
if
(
glyph
.
getFile
().
getOriginalFileName
().
toLowerCase
().
equalsIgnoreCase
(
glyphString
))
{
return
glyph
;
}
}
throw
new
InvalidGlyphFile
(
"Glyph file doesn't exist: "
+
glyphString
);
}
}
return
null
;
}
}
converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
View file @
65335d19
...
...
@@ -8,8 +8,6 @@ import static org.junit.Assert.assertTrue;
import
static
org
.
junit
.
Assert
.
fail
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipFile
;
...
...
@@ -19,133 +17,21 @@ import org.junit.Before;
import
org.junit.Test
;
import
org.mockito.Mockito
;
import
lcsb.mapviewer.common.MimeType
;
import
lcsb.mapviewer.common.exception.InvalidArgumentException
;
import
lcsb.mapviewer.common.exception.InvalidClassException
;
import
lcsb.mapviewer.converter.zip.LayoutZipEntryFile
;
import
lcsb.mapviewer.converter.zip.ModelZipEntryFile
;
import
lcsb.mapviewer.model.map.InconsistentModelException
;
import
lcsb.mapviewer.model.map.layout.Layout
;
import
lcsb.mapviewer.model.map.model.Model
;
import
lcsb.mapviewer.model.map.model.ModelFullIndexed
;
import
lcsb.mapviewer.model.map.model.ModelSubmodelConnection
;
import
lcsb.mapviewer.model.map.model.SubmodelType
;
import
lcsb.mapviewer.model.map.reaction.Product
;
import
lcsb.mapviewer.model.map.reaction.Reactant
;
import
lcsb.mapviewer.model.map.reaction.Reaction
;
import
lcsb.mapviewer.model.map.reaction.type.TransportReaction
;
import
lcsb.mapviewer.model.map.species.Complex
;
import
lcsb.mapviewer.model.map.species.Element
;
import
lcsb.mapviewer.model.map.species.GenericProtein
;
import
lcsb.mapviewer.model.map.species.Phenotype
;
import
lcsb.mapviewer.model.map.species.Species
;
public
class
ComplexZipConverterTest
{
@SuppressWarnings
(
"unused"
)
private
static
Logger
logger
=
Logger
.
getLogger
(
ComplexZipConverterTest
.
class
);
public
static
class
MockConverter
extends
Converter
{
@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
String
model2String
(
Model
model
)
throws
InconsistentModelException
,
ConverterException
{
// TODO Auto-generated method stub
return
null
;
}
@Override
public
InputStream
model2InputStream
(
Model
model
)
throws
InconsistentModelException
,
ConverterException
{
// TODO Auto-generated method stub
return
null
;
}
@Override
public
File
model2File
(
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
{
}
...
...
converter/src/test/java/lcsb/mapviewer/converter/MockConverter.java
0 → 100644
View file @
65335d19
package
lcsb.mapviewer.converter
;
import
java.io.File
;
import
java.io.InputStream
;
import
lcsb.mapviewer.common.MimeType
;
import
lcsb.mapviewer.model.map.InconsistentModelException
;
import
lcsb.mapviewer.model.map.model.Model
;
import
lcsb.mapviewer.model.map.model.ModelFullIndexed
;
import
lcsb.mapviewer.model.map.reaction.Product
;
import
lcsb.mapviewer.model.map.reaction.Reactant
;
import
lcsb.mapviewer.model.map.reaction.Reaction
;
import
lcsb.mapviewer.model.map.reaction.type.TransportReaction
;
import
lcsb.mapviewer.model.map.species.Complex
;
import
lcsb.mapviewer.model.map.species.GenericProtein
;
import
lcsb.mapviewer.model.map.species.Phenotype
;
import
lcsb.mapviewer.model.map.species.Species
;
public
class
MockConverter
extends
Converter
{
public
static
Model
modelToBeReturned
=
null
;
@Override
public
Model
createModel
(
ConverterParams
params
)
{
if
(
modelToBeReturned
!=
null
)
{
return
modelToBeReturned
;
}
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
String
model2String
(
Model
model
)
throws
InconsistentModelException
,
ConverterException
{
return
null
;
}
@Override
public
InputStream
model2InputStream
(
Model
model
)
throws
InconsistentModelException
,
ConverterException
{
return
null
;
}
@Override
public
File
model2File
(
Model
model
,
String
filePath
)
throws
InconsistentModelException
{
return
null
;
}
@Override
public
String
getCommonName
()
{
return
null
;
}
@Override
public
MimeType
getMimeType
()
{
return
null
;
}
@Override
public
String
getFileExtension
()
{
return
null
;
}
}
\ No newline at end of file
converter/src/test/java/lcsb/mapviewer/converter/ProjectFactoryTest.java
View file @
65335d19
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
.
assertTrue
;
...
...
@@ -16,18 +17,22 @@ import org.junit.AfterClass;
import
org.junit.Before
;
import
org.junit.Test
;
import
lcsb.mapviewer.converter.ComplexZipConverterTest.MockConverter
;
import
lcsb.mapviewer.converter.zip.ModelZipEntryFile
;
import
lcsb.mapviewer.converter.zip.ZipEntryFileFactory
;
import
lcsb.mapviewer.model.Project
;
import
lcsb.mapviewer.model.map.OverviewImage
;
import
lcsb.mapviewer.model.map.OverviewLink
;
import
lcsb.mapviewer.model.map.OverviewModelLink
;
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.species.GenericProtein
;
public
class
ProjectFactoryTest
{
public
class
ProjectFactoryTest
extends
ConverterTestFunctions
{
Logger
logger
=
Logger
.
getLogger
(
ProjectFactoryTest
.
class
);
int
elementCounter
=
0
;
@AfterClass
public
static
void
tearDownAfterClass
()
throws
Exception
{
}
...
...
@@ -38,6 +43,7 @@ public class ProjectFactoryTest {
@After
public
void
tearDown
()
throws
Exception
{
MockConverter
.
modelToBeReturned
=
null
;
}
@Test
...
...
@@ -153,7 +159,51 @@ public class ProjectFactoryTest {
Project
project
=
projectFactory
.
create
(
params
);
assertNotNull
(
project
);
assertEquals
(
1
,
project
.
getGlyphs
().
size
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
}
@Test
public
void
testParseGlyphsAndPutThemAsElementGlyphs
()
throws
Exception
{
try
{
Model
model
=
new
ModelFullIndexed
(
null
);
GenericProtein
protein
=
createProtein
();
protein
.
setNotes
(
"Glyph: glyphs/g1.png"
);
model
.
addElement
(
protein
);
MockConverter
.
modelToBeReturned
=
model
;
ComplexZipConverter
converter
=
new
ComplexZipConverter
(
MockConverter
.
class
);
ProjectFactory
projectFactory
=
new
ProjectFactory
(
converter
);
ComplexZipConverterParams
params
=
new
ComplexZipConverterParams
();
params
.
zipFile
(
new
ZipFile
(
"testFiles/complex_with_glyphs.zip"
));
params
.
entry
(
new
ModelZipEntryFile
(
"main.xml"
,
"main"
,
true
,
false
,
null
));
ZipFile
zipFile
=
new
ZipFile
(
"testFiles/complex_with_glyphs.zip"
);
ZipEntryFileFactory
factory
=
new
ZipEntryFileFactory
();
Enumeration
<?
extends
ZipEntry
>
entries
=
zipFile
.
entries
();
while
(
entries
.
hasMoreElements
())
{
ZipEntry
entry
=
entries
.
nextElement
();
if
(!
entry
.
isDirectory
())
{
params
.
entry
(
factory
.
createZipEntryFile
(
entry
,
zipFile
));
}
}
Project
project
=
projectFactory
.
create
(
params
);
assertNotNull
(
project
);
model
=
project
.
getModels
().
iterator
().
next
().
getModel
();
GenericProtein
fetchedProtein
=
(
GenericProtein
)
model
.
getElements
().
iterator
().
next
();
assertFalse
(
"Glyph field should be removed from notes"
,
fetchedProtein
.
getNotes
().
contains
(
"Glyph"
));
assertNotNull
(
"Glyph in the protein is not defined but should"
,
fetchedProtein
.
getGlyph
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
...
...
@@ -161,4 +211,9 @@ public class ProjectFactoryTest {
}
private
GenericProtein
createProtein
()
{
GenericProtein
result
=
new
GenericProtein
(
"s"
+
elementCounter
++);
return
result
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment