File path: /emf-2.4.1/src/org/eclipse/emf/ecore/util/BasicFeatureMap.java | File path: /emf-2.4.1/src/org/eclipse/emf/ecore/util/DelegatingFeatureMap.java | |||
Method name: boolean addAll(int, EStructuralFeature, Collection>)
|
Method name: boolean addAll(int, EStructuralFeature, Collection>)
|
|||
Number of AST nodes: 31 | Number of AST nodes: 30 | |||
1 | if (collection.size() == 0)↵ | 1 | if (collection.size() == 0)↵ | |
2 | {↵ | 2 | {↵ | |
3 | return false;↵ | 3 | return false;↵ | |
4 | }↵ | 4 | }↵ | |
5 | boolean isFeatureMap = FeatureMapUtil.isFeatureMap(feature);↵ | 5 | boolean isFeatureMap = FeatureMapUtil.isFeatureMap(feature);↵ | |
6 | @SuppressWarnings("unchecked") Collection<Entry> entryCollection = ↵ | 6 | @SuppressWarnings("unchecked") Collection<Entry> entryCollection = ↵ | |
7 | isFeatureMap ? ↵ | 7 | isFeatureMap ? ↵ | |
8 | (Collection<Entry>)collection : ↵ | 8 | (Collection<Entry>)collection : ↵ | |
9 | new BasicEList<Entry>(collection.size());↵ | 9 | new BasicEList<Entry>(collection.size());↵ | |
10 | if (isMany(feature))↵ | 10 | if (isMany(feature))↵ | |
11 | {↵ | 11 | {↵ | |
12 | if (feature.isUnique())↵ | 12 | if (feature.isUnique())↵ | |
13 | {↵ | 13 | {↵ | |
14 | for (Object object : collection)↵ | 14 | for (Object object : collection)↵ | |
15 | {↵ | 15 | {↵ | |
16 | if (!contains(feature, object))↵ | 16 | if (!contains(feature, object))↵ | |
17 | {↵ | 17 | {↵ | |
18 | Entry entry = createEntry(feature, object);↵ | 18 | Entry entry = createEntry(feature, object);↵ | |
19 | if (!entryCollection.contains(entry))↵ | 19 | if (!entryCollection.contains(entry))↵ | |
20 | {↵ | 20 | {↵ | |
21 | entryCollection.add(entry);↵ | 21 | entryCollection.add(entry);↵ | |
22 | }↵ | 22 | }↵ | |
23 | }↵ | 23 | }↵ | |
24 | }↵ | 24 | }↵ | |
25 | }↵ | 25 | }↵ | |
26 | else if (!isFeatureMap)↵ | 26 | else if (!isFeatureMap)↵ | |
27 | {↵ | 27 | {↵ | |
28 | for (Object object : collection)↵ | 28 | for (Object object : collection)↵ | |
29 | {↵ | 29 | {↵ | |
30 | Entry entry = createEntry(feature, object);↵ | 30 | Entry entry = createEntry(feature, object);↵ | |
31 | entryCollection.add(entry);↵ | 31 | entryCollection.add(entry);↵ | |
32 | }↵ | 32 | }↵ | |
33 | }↵ | 33 | }↵ | |
34 | }↵ | 34 | }↵ | |
35 | else↵ | 35 | else↵ | |
36 | {↵ | 36 | {↵ | |
37 | if (collection.size() > 1)↵ | 37 | if (collection.size() > 1)↵ | |
38 | {↵ | 38 | {↵ | |
39 | throw new IllegalArgumentException("The multiplicity constraint is violated");↵ | 39 | throw new IllegalArgumentException("The multiplicity constraint is violated");↵ | |
40 | }↵ | 40 | }↵ | |
41 | if (isFeatureMap)↵ | 41 | if (isFeatureMap)↵ | |
42 | {↵ | 42 | {↵ | |
43 | if (contains(feature, collection.iterator().next()))↵ | 43 | if (contains(feature, collection.iterator().next()))↵ | |
44 | {↵ | 44 | {↵ | |
45 | return false;↵ | 45 | return false;↵ | |
46 | }↵ | 46 | }↵ | |
47 | }↵ | 47 | }↵ | |
48 | else↵ | 48 | else↵ | |
49 | {↵ | 49 | {↵ | |
50 | FeatureMapUtil.Validator validator = FeatureMapUtil.getValidator(owner.eClass(), feature);↵ | 50 | FeatureMapUtil.Validator validator = FeatureMapUtil.getValidator(owner.eClass(), feature);↵ | |
51 | Entry [] entries = (Entry[])data;↵ | 51 | ↵ | |
52 | for (int i = 0; i < size; ++i)↵ | 52 | for (int i = 0, size = delegateSize(); i < size; ++i)↵ | |
53 | {↵ | 53 | {↵ | |
54 | Entry entry = entries[i];↵ | 54 | Entry entry = delegateGet(i);↵ | |
55 | if (validator.isValid(entry.getEStructuralFeature()))↵ | 55 | if (validator.isValid(entry.getEStructuralFeature()))↵ | |
56 | {↵ | 56 | {↵ | |
57 | if (collection.contains(entry.getValue()))↵ | 57 | if (collection.contains(entry.getValue()))↵ | |
58 | {↵ | 58 | {↵ | |
59 | return false;↵ | 59 | return false;↵ | |
60 | }↵ | 60 | }↵ | |
61 | else↵ | 61 | else↵ | |
62 | {↵ | 62 | {↵ | |
63 | throw new IllegalArgumentException("The multiplicity constraint is violated");↵ | 63 | throw new IllegalArgumentException("The multiplicity constraint is violated");↵ | |
64 | }↵ | 64 | }↵ | |
65 | }↵ | 65 | }↵ | |
66 | }↵ | 66 | }↵ | |
67 | Entry entry = createEntry(feature, collection.iterator().next());↵ | 67 | Entry entry = createEntry(feature, collection.iterator().next());↵ | |
68 | entryCollection.add(entry);↵ | 68 | entryCollection.add(entry);↵ | |
69 | }↵ | 69 | }↵ | |
70 | }↵ | 70 | }↵ | |
71 | return doAddAll(index, entryCollection); | 71 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 3 |
Number of refactorable cases | 1 |
Number of non-refactorable cases | 2 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 1.6 |
Clones location | Clones are in different classes having the same super class |
Number of node comparisons | 45 |
Number of mapped statements | 4 |
Number of unmapped statements in the first code fragment | 0 |
Number of unmapped statements in the second code fragment | 0 |
Time elapsed for statement mapping (ms) | 27.1 |
Clone type | Type 1 |
ID | Statement | ID | Statement | |
---|---|---|---|---|
8 | if (!contains(feature, object)) | 8 | if (!contains(feature, object)) | |
9 | Entry entry = createEntry(feature, object); | 9 | Entry entry = createEntry(feature, object); | |
10 | if (!entryCollection.contains(entry)) | 10 | if (!entryCollection.contains(entry)) | |
11 | entryCollection.add(entry); | 11 | entryCollection.add(entry); |
Row | Violation |
---|
Number of mapped statements | 2 |
Number of unmapped statements in the first code fragment | 11 |
Number of unmapped statements in the second code fragment | 2 |
Time elapsed for statement mapping (ms) | 2620.7 |
Clone type | Type 3 |
ID | Statement | ID | Statement | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
18 | if (isFeatureMap) |
| 8 | if (!contains(feature, object)) | ||||||||||
|
| 9 | Entry entry = createEntry(feature, object); | |||||||||||
19 | if (contains(feature, collection.iterator().next())) |
| 10 | if (!entryCollection.contains(entry)) | ||||||||||
|
| 11 | entryCollection.add(entry); | |||||||||||
20 | return false; |
| | |||||||||||
else | | |||||||||||||
21 | FeatureMapUtil.Validator validator = FeatureMapUtil.getValidator(owner.eClass(), feature); | | ||||||||||||
22 | Entry[] entries = (Entry[])data; | | ||||||||||||
23 | for (int i = 0; i < size; ++i) | | ||||||||||||
24 | Entry entry = entries[i]; | | ||||||||||||
25 | if (validator.isValid(entry.getEStructuralFeature())) | | ||||||||||||
26 | if (collection.contains(entry.getValue())) | | ||||||||||||
27 | return false; |
| | |||||||||||
else | | |||||||||||||
28 | throw new IllegalArgumentException("The multiplicity constraint is violated"); |
| | |||||||||||
29 | Entry entry = createEntry(feature, collection.iterator().next()); | | ||||||||||||
30 | entryCollection.add(entry); | |
Row | Violation |
---|---|
1 | Unmatched statement Entry entry=createEntry(feature,object); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
2 | Unmatched statement entryCollection.add(entry); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
3 | Unmatched return false; |
4 | Unmatched return false; |
5 | Unmatched throw new IllegalArgumentException("The multiplicity constraint is violated"); |
Number of mapped statements | 2 |
Number of unmapped statements in the first code fragment | 3 |
Number of unmapped statements in the second code fragment | 2 |
Time elapsed for statement mapping (ms) | 2020.7 |
Clone type | Type 3 |
ID | Statement | ID | Statement | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
24 | Entry entry = entries[i]; |
| | |||||||||||
25 | if (validator.isValid(entry.getEStructuralFeature())) |
| 8 | if (!contains(feature, object)) | ||||||||||
|
| 9 | Entry entry = createEntry(feature, object); | |||||||||||
26 | if (collection.contains(entry.getValue())) |
| 10 | if (!entryCollection.contains(entry)) | ||||||||||
|
| 11 | entryCollection.add(entry); | |||||||||||
27 | return false; |
| | |||||||||||
else | | |||||||||||||
28 | throw new IllegalArgumentException("The multiplicity constraint is violated"); |
| |
Row | Violation |
---|---|
1 | Unmatched statement Entry entry=entries[i]; cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
2 | Unmatched statement Entry entry=createEntry(feature,object); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
3 | Unmatched statement entryCollection.add(entry); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
4 | Unmatched return false; |
5 | Unmatched throw new IllegalArgumentException("The multiplicity constraint is violated"); |