Project

General

Profile

« Previous | Next » 

Revision 3d5dce41

Added by Patrick Plitzner over 5 years ago

ref #7887 Implement moving terms for ordered terms

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermSorter.java
10 10
package eu.etaxonomy.taxeditor.editor.definedterm;
11 11

  
12 12
import org.eclipse.jface.viewers.Viewer;
13
import org.eclipse.jface.viewers.ViewerSorter;
13
import org.eclipse.jface.viewers.ViewerComparator;
14 14

  
15 15
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
16
import eu.etaxonomy.cdm.persistence.dto.TermDto;
16 17

  
17 18
/**
18 19
 * @author pplitzner
19 20
 * @date 13.02.2018
20 21
 *
21 22
 */
22
public class DefinedTermSorter extends ViewerSorter {
23
public class DefinedTermSorter extends ViewerComparator {
23 24

  
24 25
    @Override
25 26
    public int compare(Viewer viewer, Object e1, Object e2) {
26
        // the comparison value in this method determines the
27
     // the comparison value in this method determines the
27 28
        // location <-> add term method used in the MoveDefinedTermOperation
28 29
        // execute call
30
        //FIXME: remove this when all viewer are changed to use DTOs
29 31
        if(e1 instanceof OrderedTermBase && e2 instanceof OrderedTermBase) {
30 32
            OrderedTermBase otbe1 = (OrderedTermBase)e1;
31 33
            OrderedTermBase otbe2 = (OrderedTermBase)e2;
......
36 38
            } else{
37 39
                return 1;
38 40
            }
39
        } else {
41
        }
42
        else if(e1 instanceof TermDto && e2 instanceof TermDto) {
43
            TermDto termDto1 = (TermDto)e1;
44
            TermDto termDto2 = (TermDto)e2;
45
            if(termDto1.getOrderIndex() == termDto2.getOrderIndex()) {
46
                return 0;
47
            } else if (termDto1.getOrderIndex() < termDto2.getOrderIndex()){
48
                return -1;
49
            } else{
50
                return 1;
51
            }
52
        }
53
        else {
40 54
            return super.compare(viewer, e1, e2);
41 55
        }
42 56
    }
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermEditorE4.java
117 117
	    viewer.getControl().setLayoutData(LayoutConstants.FILL());
118 118
	    viewer.setContentProvider(new TermDtoContentProvider());
119 119
	    viewer.setLabelProvider(new TermDtoLabelProvider());
120
	    viewer.setSorter(new DefinedTermSorter());
120
	    viewer.setComparator(new DefinedTermSorter());
121 121

  
122 122
	    Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer() };
123 123
	    viewer.addDragSupport(dndOperations, transfers, new DefinedTermDragListenerE4(viewer));
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/MoveDefinedTermOperation.java
16 16
import org.eclipse.core.runtime.IAdaptable;
17 17
import org.eclipse.core.runtime.IProgressMonitor;
18 18
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.jface.viewers.ViewerDropAdapter;
19 20

  
20 21
import eu.etaxonomy.cdm.api.service.ITermService;
22
import eu.etaxonomy.cdm.api.service.TermServiceImpl.TermMovePosition;
21 23
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
22 24
import eu.etaxonomy.cdm.model.common.TermVocabulary;
23 25
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
......
57 59
	    {
58 60
            UUID parentUuid = targetTermOrVocabulary.getUuid();
59 61
            boolean isKindOf = term.getKindOfUuid()!=null && term.getKindOfUuid().equals(parentUuid);
60
            CdmStore.getService(ITermService.class).moveTerm(term.getUuid(), parentUuid, isKindOf);
61
            //FIXME: implement moving for ordered terms
62
            TermMovePosition termMovePosition = TermMovePosition.ON;
63
            if(currentLocation == ViewerDropAdapter.LOCATION_BEFORE) {
64
                termMovePosition = TermMovePosition.BEFORE;
65
            }
66
            else if(currentLocation == ViewerDropAdapter.LOCATION_AFTER) {
67
                termMovePosition = TermMovePosition.AFTER;
68
            }
69
            CdmStore.getService(ITermService.class).moveTerm(term.getUuid(), parentUuid, isKindOf, termMovePosition);
62 70
        });
63
//		// need to make the moved DefinedTerm part of another DefinedTerm or Vocabulary (target)
64
//		// and remove it from old associations
65
//
66
//
67
//		for (DefinedTermBase term : sourceTerms) {
68
//			// do nothing when moving it on itself
69
//			if(targetTermOrVocabulary.equals(term)){
70
//				Status status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "Term can not be added to itself");
71
//				MessagingUtils.informationDialog("", status);
72
//				return status;
73
//			}
74
//
75
//			if (targetTermOrVocabulary instanceof TermVocabulary) {
76
//				TermVocabulary termVocabulary = (TermVocabulary)targetTermOrVocabulary;
77
//
78
//				// do nothing when term is top level and gets added to the same vocabulary
79
//				if(term.getPartOf() == null && termVocabulary.equals(term.getVocabulary())){
80
//					Status status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "Term is already in this vocabulary");
81
//					MessagingUtils.informationDialog("", status);
82
//					return status;
83
//				}
84
//
85
//				cleanTerm(term);
86
//				termVocabulary.addTerm(term);
87
//
88
//			} else if (targetTermOrVocabulary instanceof DefinedTermBase) {
89
//				cleanTerm(term);
90
//				DefinedTermBase targetDefinedTerm = (DefinedTermBase) targetTermOrVocabulary;
91
//
92
//				if(targetDefinedTerm instanceof OrderedTermBase && term instanceof OrderedTermBase) {
93
//				    OrderedTermBase targetOrderedDefinedTerm = (OrderedTermBase)targetDefinedTerm;
94
//				    TermVocabulary tVoc = targetOrderedDefinedTerm.getVocabulary();
95
//				    if(tVoc instanceof OrderedTermVocabulary) {
96
//				        OrderedTermVocabulary otVoc = (OrderedTermVocabulary)tVoc;
97
//				        // the link between the location and the add term (below / above)
98
//				        // method is determined by the compare method in the
99
//				        // DefinedTermEditor's ViewerSorter (DefinedTermSorter) class
100
//				        if(currentLocation == ViewerDropAdapter.LOCATION_BEFORE) {
101
//				            otVoc.addTermAbove((OrderedTermBase)term, (OrderedTermBase)targetTermOrVocabulary);
102
//				            if (targetOrderedDefinedTerm.getPartOf() != null){
103
//				                targetOrderedDefinedTerm.getPartOf().addIncludes(term);
104
//				            }
105
//				        }
106
//
107
//				        if(currentLocation == ViewerDropAdapter.LOCATION_AFTER) {
108
//				            otVoc.addTermBelow((OrderedTermBase)term, (OrderedTermBase)targetTermOrVocabulary);
109
//				            if (targetOrderedDefinedTerm.getPartOf() != null){
110
//				                targetOrderedDefinedTerm.getPartOf().addIncludes(term);
111
//                            }
112
//				        }
113
//				        if(currentLocation == ViewerDropAdapter.LOCATION_ON) {
114
//				            targetOrderedDefinedTerm.addIncludes(term);
115
//				            targetOrderedDefinedTerm.getVocabulary().addTerm(term);
116
//						}
117
//				    }
118
//				} else{
119
//					targetDefinedTerm.addIncludes(term);
120
//				    targetDefinedTerm.getVocabulary().addTerm(term);
121
//				}
122
//
123
//			}
124
//
125
//		}
126 71
		return postExecute(targetTermOrVocabulary);
127 72
	}
128 73

  
129
	private DefinedTermBase cleanTerm(DefinedTermBase term){
130

  
131
		DefinedTermBase partOf = term.getPartOf();
132
		if(partOf != null){
133
			partOf.removeIncludes(term);
134
		}
135
		DefinedTermBase kindOf = term.getKindOf();
136
		if(kindOf!=null){
137
		    kindOf.removeGeneralization(term);
138
		}
139

  
140

  
141
		TermVocabulary vocabulary = term.getVocabulary();
142
		if(vocabulary != null){
143
			vocabulary.removeTerm(term);
144
		}
145

  
146
		return term;
147
	}
148

  
149 74
	@Override
150 75
	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
151 76
			throws ExecutionException {
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java
57 57

  
58 58
		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
59 59

  
60
		viewer.setSorter(new DefinedTermSorter());
60
		viewer.setComparator(new DefinedTermSorter());
61 61

  
62 62
        viewer.setContentProvider(new TermContentProvider());
63 63
        viewer.setLabelProvider(new TermLabelProvider());

Also available in: Unified diff