Project

General

Profile

« Previous | Next » 

Revision 4faee5bc

Added by Katja Luther over 2 years ago

ref #9894: add field primary collector and handle as described in ticket

View differences:

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