blob: d600930e7cbe0ccb6703da8523a72b15482f2496 (
plain) (
blame)
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
|
/*****************************************************************************
* Copyright (c) 2011 Atos.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Arthur Daussy (Atos) - Initial API and implementation
* Arthur Daussy - 371712 : 372745: [ActivityDiagram] Major refactoring group framework
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.activity.activitygroup.predicates;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.papyrus.uml.diagram.activity.activitygroup.editpolicy.notifiers.IGroupNotifier;
import com.google.common.base.Predicate;
/**
* Same as {@link EcoreUtil#filterDescendants(java.util.Collection)}
*
* @author arthur daussy
*
*/
public class DescendantsFilterIGroupNotifier implements Predicate<IGroupNotifier> {
private Iterable<? extends IGroupNotifier> initialCollection;
public DescendantsFilterIGroupNotifier(Iterable<? extends IGroupNotifier> initialCollection) {
super();
this.initialCollection = initialCollection;
}
@Override
public boolean apply(IGroupNotifier input) {
for (IGroupNotifier target : initialCollection) {
EObject targetEObject = target.getEObject();
EObject inputEObject = input.getEObject();
if (targetEObject == inputEObject) {
continue;
}
if (inputEObject == null) {
return false;
}
if (EcoreUtil.isAncestor(inputEObject, targetEObject)) {
return false;
}
}
return true;
}
}
|