-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
ExplicitGroup.java
73 lines (61 loc) · 2.42 KB
/
ExplicitGroup.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package org.jabref.model.groups;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import org.jabref.model.entry.field.StandardField;
/**
* This group contains entries, which were manually assigned to it.
* Assignments are stored in the {@link StandardField#GROUPS} field.
* Thus, internally, we represent {@link ExplicitGroup} as a special {@link WordKeywordGroup} operating on
* {@link StandardField#GROUPS}.
*/
public class ExplicitGroup extends WordKeywordGroup {
/**
* Previous versions of JabRef stored the linked entries directly in the "jabref-meta" comment at the end of the
* file. These keys are still parsed and stored in this field.
*/
private final List<String> legacyEntryKeys = new ArrayList<>();
public ExplicitGroup(String name, GroupHierarchyType context, Character keywordSeparator) {
super(name, context, StandardField.GROUPS, name, true, keywordSeparator, true);
}
public void addLegacyEntryKey(String key) {
this.legacyEntryKeys.add(key);
}
@Override
public AbstractGroup deepCopy() {
ExplicitGroup copy = new ExplicitGroup(getName(), getHierarchicalContext(), keywordSeparator);
copy.legacyEntryKeys.addAll(legacyEntryKeys);
return copy;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ExplicitGroup other)) {
return false;
}
return Objects.equals(getName(), other.getName())
&& Objects.equals(getHierarchicalContext(), other.getHierarchicalContext())
&& Objects.equals(getIconName(), other.getIconName())
&& Objects.equals(getDescription(), other.getDescription())
&& Objects.equals(getColor(), other.getColor())
&& Objects.equals(isExpanded(), other.isExpanded())
&& Objects.equals(getLegacyEntryKeys(), other.getLegacyEntryKeys());
}
public void clearLegacyEntryKeys() {
legacyEntryKeys.clear();
}
public List<String> getLegacyEntryKeys() {
return Collections.unmodifiableList(legacyEntryKeys);
}
@Override
public int hashCode() {
return Objects.hash(name.getValue(), context, legacyEntryKeys, iconName, color, description, isExpanded);
}
@Override
public boolean isDynamic() {
return false;
}
}