Skip to content

Commit b3f2db8

Browse files
committed
Merge branch 'release/2.1.0'
* release/2.1.0: Updated changelog 2.1.0 and updated Changelog Fix #380 Downgrade slf4j-nop to match managed version of log4j Fix reflection warning by adding multi-release manifest entry Fix #381 Implement CSV export for ExportMultipleFiles tool Update dependencies Use Java 11 and fix duplicate dependencies appropriately
2 parents 088d6a9 + f798114 commit b3f2db8

File tree

9 files changed

+185
-83
lines changed

9 files changed

+185
-83
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
Issue numbers (e.g., #43) refer to GitHub issues:
44
https://github.com/nilsreiter/CorefAnnotator/issues
55

6+
## 2.1.0
7+
8+
- New: Multiple files can be exported at once into CSV format #370
9+
- Fixes an issue that made deleted annotations to re-appear if the file is re-opened #380
10+
- Fixes an issue that caused a freeze when deleting an annotation #381
11+
- Updated some dependencies
12+
13+
Thanks Börge for taking care of these!
14+
615
## 2.0.1
716

817
- Fixes an issue that prevented expanding the tree properly in some imported files #373

pom.xml

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>de.unistuttgart.ims</groupId>
66
<artifactId>coref.annotator</artifactId>
7-
<version>2.0.1</version>
7+
<version>2.1.0</version>
88
<packaging>jar</packaging>
99
<name>CorefAnnotator</name>
1010
<url>https://github.com/nilsreiter/CorefAnnotator/</url>
@@ -13,12 +13,18 @@
1313
<version.dkpro>2.2.0</version.dkpro>
1414
<version.ikonli>12.2.0</version.ikonli>
1515
<version.eclipse>10.2.0</version.eclipse>
16-
<maven.compiler.source>1.8</maven.compiler.source>
17-
<maven.compiler.target>1.8</maven.compiler.target>
1816
<version.javafx>14.0.2.1</version.javafx>
1917
</properties>
2018
<build>
2119
<plugins>
20+
<plugin>
21+
<groupId>org.apache.maven.plugins</groupId>
22+
<artifactId>maven-compiler-plugin</artifactId>
23+
<version>3.8.1</version>
24+
<configuration>
25+
<release>11</release>
26+
</configuration>
27+
</plugin>
2228
<plugin>
2329
<groupId>org.apache.uima</groupId>
2430
<artifactId>jcasgen-maven-plugin</artifactId>
@@ -80,6 +86,7 @@
8086
<manifestEntries>
8187
<Main-Class>de.unistuttgart.ims.coref.annotator.Annotator</Main-Class>
8288
<Build-Number>${project.version}</Build-Number>
89+
<Multi-Release>true</Multi-Release>
8390
</manifestEntries>
8491
</transformer>
8592
<transformer
@@ -436,7 +443,7 @@
436443
<dependency>
437444
<groupId>org.reflections</groupId>
438445
<artifactId>reflections</artifactId>
439-
<version>0.9.12</version>
446+
<version>0.10.2</version>
440447
</dependency>
441448
<dependency>
442449
<groupId>org.apache.commons</groupId>
@@ -471,16 +478,22 @@
471478
<dependency>
472479
<groupId>org.dkpro.core</groupId>
473480
<artifactId>dkpro-core-stanfordnlp-gpl</artifactId>
481+
<exclusions>
482+
<exclusion>
483+
<groupId>xml-apis</groupId>
484+
<artifactId>xml-apis</artifactId>
485+
</exclusion>
486+
</exclusions>
474487
</dependency>
475488
<dependency>
476489
<groupId>org.json</groupId>
477490
<artifactId>json</artifactId>
478-
<version>20151123</version>
491+
<version>20210307</version>
479492
</dependency>
480493
<dependency>
481494
<groupId>de.unistuttgart.ims.uima.io</groupId>
482495
<artifactId>generic-xml-reader</artifactId>
483-
<version>2.0.0</version>
496+
<version>2.0.1</version>
484497
</dependency>
485498
<dependency>
486499
<groupId>com.lexicalscope.jewelcli</groupId>
@@ -490,7 +503,7 @@
490503
<dependency>
491504
<groupId>org.mockito</groupId>
492505
<artifactId>mockito-core</artifactId>
493-
<version>3.4.4</version>
506+
<version>4.1.0</version>
494507
<scope>test</scope>
495508
</dependency>
496509
<dependency>
@@ -506,12 +519,18 @@
506519
<dependency>
507520
<groupId>org.apache.poi</groupId>
508521
<artifactId>poi</artifactId>
509-
<version>4.1.2</version>
522+
<version>5.1.0</version>
510523
</dependency>
511524
<dependency>
512525
<groupId>org.apache.poi</groupId>
513526
<artifactId>poi-ooxml</artifactId>
514-
<version>4.1.2</version>
527+
<version>5.1.0</version>
528+
<exclusions>
529+
<exclusion>
530+
<artifactId>xml-apis</artifactId>
531+
<groupId>xml-apis</groupId>
532+
</exclusion>
533+
</exclusions>
515534
</dependency>
516535
<dependency>
517536
<groupId>org.knowm.xchart</groupId>
@@ -521,7 +540,7 @@
521540
<dependency>
522541
<groupId>org.apache.commons</groupId>
523542
<artifactId>commons-csv</artifactId>
524-
<version>1.8</version>
543+
<version>1.9.0</version>
525544
</dependency>
526545
<dependency>
527546
<groupId>org.slf4j</groupId>

src/main/java/de/unistuttgart/ims/coref/annotator/Annotator.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,7 @@ private MutableList<File> getRecentFilesFromPreferences() {
465465

466466
private void recentFiles2Preferences(MutableList<File> recentFiles) {
467467
StringBuilder sb = new StringBuilder();
468-
for (int index = 0; index < recentFiles.size(); index++) {
469-
File file = recentFiles.get(index);
468+
for (File file : recentFiles) {
470469
if (sb.length() > 0) {
471470
sb.append(File.pathSeparator);
472471
}
@@ -481,7 +480,6 @@ public JMenu getRecentFilesMenu() {
481480
for (int i = 0; i < Math.min(20, recentFiles.size()); i++)
482481
m.add(new SelectedFileOpenAction(this, recentFiles.get(i)));
483482
return m;
484-
485483
}
486484

487485
public Preferences getPreferences() {

src/main/java/de/unistuttgart/ims/coref/annotator/DocumentWindow.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,27 +1610,33 @@ protected JMenu getMentionItem(Mention m) {
16101610
StringBuilder b = new StringBuilder();
16111611
b.append(m.getAddress());
16121612

1613-
String surf = UimaUtil.getCoveredText(m);
1614-
surf = StringUtils.abbreviateMiddle(surf, "...", 20);
1615-
1616-
if (m.getEntity().getLabel() != null)
1617-
b.append(": ")
1618-
.append(StringUtils.abbreviateMiddle(
1619-
getDocumentModel().getCoreferenceModel().getLabel(m.getEntity()), "...",
1620-
Constants.UI_MAX_STRING_WIDTH_IN_MENU));
1621-
1613+
String mention = StringUtils
1614+
.abbreviateMiddle(UimaUtil.getCoveredText(m), "...", 20);
1615+
1616+
if (m.getEntity().getLabel() != null) {
1617+
String entity = StringUtils.abbreviateMiddle(
1618+
getDocumentModel().getCoreferenceModel().getLabel(m.getEntity()), "...",
1619+
Constants.UI_MAX_STRING_WIDTH_IN_MENU / 2);
1620+
b.append(String.format(": %s (%s)", mention, entity));
1621+
}
1622+
16221623
JMenu mentionMenu = new JMenu(b.toString());
16231624
mentionMenu.setIcon(FontIcon.of(MaterialDesign.MDI_ACCOUNT, new Color(m.getEntity().getColor())));
16241625
Action a = new ShowMentionInTreeAction(DocumentWindow.this, m);
1625-
mentionMenu.add('"' + surf + '"');
1626+
mentionMenu.add(String.format("\"%s\"", mention));
1627+
mentionMenu.getItem(mentionMenu.getItemCount() - 1).setEnabled(false);
16261628
mentionMenu.add(a);
16271629
mentionMenu.add(new DeleteAction(DocumentWindow.this, m));
1628-
if (m.getSurface().size() > 0)
1630+
1631+
if (m.getSurface().size() > 1) {
16291632
for (MentionSurface ms : m.getSurface()) {
1630-
JMenu mentionSurfaceMenu = new JMenu(StringUtils.abbreviateMiddle(ms.getCoveredText(), "...", 20));
1633+
JMenu mentionSurfaceMenu = new JMenu(StringUtils.abbreviateMiddle(
1634+
ms.getCoveredText(), "...",
1635+
Constants.UI_MAX_STRING_WIDTH_IN_MENU));
16311636
mentionSurfaceMenu.add(new DeleteAction(DocumentWindow.this, ms));
16321637
mentionMenu.add(mentionSurfaceMenu);
16331638
}
1639+
}
16341640

16351641
return mentionMenu;
16361642
}

src/main/java/de/unistuttgart/ims/coref/annotator/document/CoreferenceModel.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ protected Entity createEntity(String l) {
153153
e.setLabel(l);
154154
e.setFlags(new EmptyFSList<Flag>(documentModel.getJcas()));
155155
e.setMembers(new FSArray<Entity>(documentModel.getJcas(), 0));
156-
e.addToIndexes();
156+
e.addToIndexes(getJCas());
157157
return e;
158158
}
159159

@@ -257,8 +257,8 @@ protected synchronized void edit(CoreferenceModelOperation operation) {
257257
for (; i < arr.size(); i++) {
258258
arr.set(i, newMembers.get(i - oldSize));
259259
}
260-
arr.addToIndexes();
261-
op.getEntityGroup().removeFromIndexes();
260+
arr.addToIndexes(getJCas());
261+
op.getEntityGroup().removeFromIndexes(getJCas());
262262
op.getEntityGroup().setMembers(arr);
263263
updateEntityGroupLabel(op.getEntityGroup());
264264
fireEvent(Event.get(this, Event.Type.Add, op.getEntityGroup(), op.getEntities()));
@@ -454,7 +454,7 @@ protected void edit(RemoveMentionSurface op) {
454454
fireEvent(Event.get(this, Type.Remove, m, ms));
455455
mentions.add(m);
456456
spans.add(new Span(ms));
457-
ms.removeFromIndexes();
457+
ms.removeFromIndexes(getJCas());
458458
characterPosition2AnnotationMap.remove(ms);
459459
});
460460
op.setMention(mentions.toImmutable());
@@ -737,7 +737,7 @@ public void initialPainting() {
737737
}
738738
for (Mention mention : JCasUtil.select(documentModel.getJcas(), Mention.class)) {
739739
entityMentionMap.put(mention.getEntity(), mention);
740-
mention.getEntity().addToIndexes();
740+
mention.getEntity().addToIndexes(getJCas());
741741
registerAnnotation(mention);
742742
fireEvent(Event.get(this, Event.Type.Add, mention.getEntity(), mention));
743743

@@ -763,7 +763,7 @@ private Entity merge(Iterable<Entity> nodes) {
763763
entityMentionMap.get(n).toSet().forEach(m -> moveTo(tgt, m));
764764

765765
entityMentionMap.removeAll(n);
766-
n.removeFromIndexes();
766+
n.removeFromIndexes(getJCas());
767767
}
768768
}
769769
return biggest;
@@ -809,7 +809,7 @@ private void remove(Entity entity) {
809809
for (Mention m : entityMentionMap.get(entity)) {
810810
for (MentionSurface ms : m.getSurface())
811811
characterPosition2AnnotationMap.remove(ms);
812-
m.removeFromIndexes();
812+
m.removeFromIndexes(getJCas());
813813
// TODO: remove parts
814814
}
815815
for (Entity group : entityEntityGroupMap.get(entity)) {
@@ -822,7 +822,7 @@ private void remove(Entity entity) {
822822

823823
fireEvent(Event.get(this, Event.Type.Remove, null, entity));
824824
entityMentionMap.removeAll(entity);
825-
entity.removeFromIndexes();
825+
entity.removeFromIndexes(getJCas());
826826
Annotator.logger.traceExit();
827827
}
828828

@@ -831,7 +831,7 @@ private void remove(Mention m, boolean autoRemove) {
831831
for (MentionSurface ms : m.getSurface())
832832
characterPosition2AnnotationMap.remove(ms);
833833
entityMentionMap.remove(entity, m);
834-
m.removeFromIndexes();
834+
m.removeFromIndexes(getJCas());
835835
if (autoRemove && entityMentionMap.get(entity).isEmpty() && getPreferences()
836836
.getBoolean(Constants.CFG_DELETE_EMPTY_ENTITIES, Defaults.CFG_DELETE_EMPTY_ENTITIES)) {
837837
remove(entity);
@@ -869,7 +869,7 @@ protected void undo(AddSpanToMention op) {
869869
MentionSurface ms = op.getMentionSurface();
870870
UimaUtil.removeMentionSurface(ms.getMention(), ms);
871871
fireEvent(Event.get(this, Event.Type.Remove, ms.getMention(), ms));
872-
ms.removeFromIndexes();
872+
ms.removeFromIndexes(getJCas());
873873
characterPosition2AnnotationMap.remove(ms);
874874
}
875875

@@ -933,7 +933,7 @@ protected void undo(CoreferenceModelOperation operation) {
933933
RemoveDuplicateMentionsInEntities op = (RemoveDuplicateMentionsInEntities) operation;
934934

935935
op.getFeatureStructures().forEach(m -> {
936-
m.addToIndexes();
936+
m.addToIndexes(getJCas());
937937
entityMentionMap.put(m.getEntity(), m);
938938
registerAnnotation(m);
939939
fireEvent(Event.get(this, Type.Add, m.getEntity(), m));
@@ -943,7 +943,7 @@ protected void undo(CoreferenceModelOperation operation) {
943943
} else if (operation instanceof RemoveEntities) {
944944
RemoveEntities op = (RemoveEntities) operation;
945945
op.getFeatureStructures().forEach(e -> {
946-
e.addToIndexes();
946+
e.addToIndexes(getJCas());
947947
if (op.entityEntityGroupMap.containsKey(e)) {
948948
for (Entity group : op.entityEntityGroupMap.get(e)) {
949949
group.setMembers(UimaUtil.addTo(documentModel.getJcas(), group.getMembers(), e));
@@ -967,15 +967,15 @@ protected void undo(CoreferenceModelOperation operation) {
967967
}
968968
op.getEntityGroup().setMembers(newArr);
969969
updateEntityGroupLabel(op.getEntityGroup());
970-
newArr.addToIndexes();
971-
oldArr.removeFromIndexes();
970+
newArr.addToIndexes(getJCas());
971+
oldArr.removeFromIndexes(getJCas());
972972
} else if (operation instanceof RemoveSingletons) {
973973
undo((RemoveSingletons) operation);
974974
} else if (operation instanceof MergeEntities) {
975975
MergeEntities op = (MergeEntities) operation;
976976
for (Entity oldEntity : op.getEntities()) {
977977
if (op.getEntity() != oldEntity) {
978-
oldEntity.addToIndexes();
978+
oldEntity.addToIndexes(getJCas());
979979
fireEvent(Event.get(this, Event.Type.Add, null, oldEntity));
980980
for (Mention m : op.getPreviousState().get(oldEntity)) {
981981
moveTo(oldEntity, m);
@@ -1008,13 +1008,13 @@ private void undo(DuplicateMentions op) {
10081008

10091009
private void undo(RemoveMention op) {
10101010
if (op.isEntityAutoDeleted()) {
1011-
op.getEntity().addToIndexes();
1011+
op.getEntity().addToIndexes(getJCas());
10121012
fireEvent(Event.get(this, Event.Type.Add, null, op.getEntity()));
10131013
}
10141014

10151015
// re-create all mentions and set them to the op
10161016
op.getFeatureStructures().forEach(m -> {
1017-
m.addToIndexes();
1017+
m.addToIndexes(getJCas());
10181018
m.setEntity(op.getEntity());
10191019
entityMentionMap.put(op.getEntity(), m);
10201020
for (MentionSurface ms : m.getSurface())
@@ -1038,13 +1038,13 @@ private void undo(RemoveMentionSurface op) {
10381038
}
10391039

10401040
private void undo(RemoveSingletons op) {
1041-
op.getFeatureStructures().forEach(e -> e.addToIndexes());
1041+
op.getFeatureStructures().forEach(e -> e.addToIndexes(getJCas()));
10421042
op.getMentions().forEach(m -> {
10431043
entityMentionMap.put(m.getEntity(), m);
10441044
for (MentionSurface ms : m.getSurface())
10451045
characterPosition2AnnotationMap.add(ms);
1046-
m.addToIndexes();
1047-
m.getEntity().addToIndexes();
1046+
m.addToIndexes(getJCas());
1047+
m.getEntity().addToIndexes(getJCas());
10481048
fireEvent(Event.get(this, Event.Type.Add, null, m.getEntity()));
10491049
fireEvent(Event.get(this, Event.Type.Add, m.getEntity(), m));
10501050
});
@@ -1076,7 +1076,7 @@ protected void undo(RenameAllEntities operation) {
10761076
*/
10771077
protected void undo(MergeMentions operation) {
10781078
operation.getMentions().forEach(m -> {
1079-
m.addToIndexes();
1079+
m.addToIndexes(getJCas());
10801080
entityMentionMap.put(operation.getNewMention().getEntity(), m);
10811081
fireEvent(Event.get(this, Type.Add, m.getEntity(), m));
10821082
});

src/main/java/de/unistuttgart/ims/coref/annotator/document/EntityTreeModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ public void entityEvent(FeatureStructureEvent event) {
123123
if (etn != null) {
124124
etn.removeAllChildren();
125125
removeNodeFromParent(etn);
126+
etn.modify();
126127
}
127128
fsMap.remove(event.getArgument(i));
128-
etn.modify();
129129
}
130130
optResort();
131131
break;

0 commit comments

Comments
 (0)