Revision 4faee5bc
Added by Katja Luther over 2 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/CollectorSelectionDialog.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.taxeditor.ui.dialog.selection; |
10 | 10 |
|
11 |
import java.lang.reflect.Member; |
|
12 |
import java.util.ArrayList; |
|
13 |
import java.util.HashSet; |
|
14 |
import java.util.Iterator; |
|
15 |
import java.util.List; |
|
16 |
import java.util.Set; |
|
17 |
import java.util.UUID; |
|
18 |
|
|
11 | 19 |
import org.eclipse.jface.viewers.ILabelProvider; |
12 | 20 |
import org.eclipse.jface.viewers.LabelProvider; |
21 |
import org.eclipse.swt.internal.win32.TCHITTESTINFO; |
|
13 | 22 |
import org.eclipse.swt.widgets.Shell; |
14 | 23 |
|
15 | 24 |
import eu.etaxonomy.cdm.api.service.IAgentService; |
... | ... | |
17 | 26 |
import eu.etaxonomy.cdm.api.service.dto.IdentifiedEntityDTO; |
18 | 27 |
import eu.etaxonomy.cdm.model.agent.AgentBase; |
19 | 28 |
import eu.etaxonomy.cdm.model.agent.Person; |
29 |
import eu.etaxonomy.cdm.model.agent.Team; |
|
20 | 30 |
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; |
21 | 31 |
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; |
22 | 32 |
import eu.etaxonomy.cdm.persistence.dto.TeamOrPersonUuidAndTitleCache; |
... | ... | |
29 | 39 |
* @since Jul 1, 2021 |
30 | 40 |
*/ |
31 | 41 |
public class CollectorSelectionDialog extends AgentSelectionDialog<AgentBase<?>> { |
42 |
Team collectorTeam = null; |
|
32 | 43 |
|
33 | 44 |
/** |
34 | 45 |
* @param shell |
... | ... | |
41 | 52 |
protected CollectorSelectionDialog(Shell shell, String title, boolean multi, String settings, |
42 | 53 |
AgentBase<?> agent, boolean selectTeamMember) { |
43 | 54 |
super(shell, title, multi, settings, agent, selectTeamMember); |
55 |
if (selectTeamMember && agent instanceof Team){ |
|
56 |
this.collectorTeam = (Team)agent; |
|
57 |
|
|
58 |
} |
|
44 | 59 |
|
45 | 60 |
} |
46 | 61 |
public static <S extends AgentBase> S select(Shell shell, |
47 | 62 |
S entity, boolean selectTeamMember) { |
63 |
|
|
48 | 64 |
CollectorSelectionDialog dialog = new CollectorSelectionDialog(shell, |
49 | 65 |
"Choose Collector", false, CollectorSelectionDialog.class.getCanonicalName(), entity, selectTeamMember); |
50 | 66 |
return (S) getSelectionFromDialog(dialog); |
... | ... | |
93 | 109 |
if (selectTeamMember){ |
94 | 110 |
clazz = Person.class; |
95 | 111 |
} |
96 |
|
|
112 |
Set<UUID> memberUuids = new HashSet<>(); |
|
113 |
if (collectorTeam != null && selectTeamMember){ |
|
114 |
List<Person> teamMembers = this.collectorTeam.getTeamMembers(); |
|
115 |
|
|
116 |
teamMembers.forEach(member -> memberUuids.add(member.getUuid())); |
|
117 |
} |
|
118 |
|
|
97 | 119 |
model = CdmStore.getService(IAgentService.class).getUuidAndTitleCacheWithCollectorTitleCache(clazz, limitOfInitialElements, pattern); |
120 |
if (collectorTeam == null){ |
|
121 |
return; |
|
122 |
} |
|
123 |
//filter |
|
124 |
Iterator<UuidAndTitleCache<AgentBase<?>>> modelIterator = model.iterator(); |
|
125 |
List<UuidAndTitleCache<AgentBase<?>>> tempModel = new ArrayList<>(); |
|
126 |
while(modelIterator.hasNext()){ |
|
127 |
UuidAndTitleCache<AgentBase<?>> person = modelIterator.next(); |
|
128 |
if (memberUuids.contains(person.getUuid())){ |
|
129 |
tempModel.add(person); |
|
130 |
} |
|
131 |
} |
|
132 |
model.clear(); |
|
133 |
model.addAll(tempModel); |
|
98 | 134 |
} |
99 | 135 |
|
100 | 136 |
@Override |
Also available in: Unified diff
ref #9894: add field primary collector and handle as described in ticket