1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /**
- * Copyright (c) 2013 committers of YAKINDU and others.
- * 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:
- * committers of YAKINDU - initial API and implementation
- *
- */
- package org.yakindu.sct.refactoring.refactor.util;
- import org.eclipse.emf.ecore.EAttribute;
- import org.eclipse.emf.ecore.EObject;
- import org.eclipse.emf.ecore.util.EcoreUtil;
- import org.eclipse.emf.ecore.util.EcoreUtil.EqualityHelper;
- import org.eclipse.emf.ecore.util.FeatureMap;
- import org.eclipse.emf.ecore.util.FeatureMapUtil;
- /**
- * Modified {@link EqualityHelper} for test cases to ignore whitespaces in string comparisons and
- * resolve proxy elements when necessary.
- *
- * @author thomas kutz - Initial contribution and API
- *
- */
- @SuppressWarnings("serial")
- public class StatechartEqualityHelper extends EqualityHelper{
- @Override
- public boolean equals(EObject eObject1, EObject eObject2) {
-
- if (eObject1!=null && eObject1.eIsProxy()) {
- EcoreUtil.resolve(eObject1, eObject2.eResource());
- }
- if (eObject2!=null && eObject2.eIsProxy()) {
- EcoreUtil.resolve(eObject2, eObject1.eResource());
- }
-
- return super.equals(eObject1, eObject2);
- }
-
- @Override
- protected boolean haveEqualAttribute(EObject eObject1, EObject eObject2,
- EAttribute attribute) {
-
- Object value1 = eObject1.eGet(attribute);
- Object value2 = eObject2.eGet(attribute);
- // If the first value is null, the second value must be null.
- //
- if (value1 == null) {
- return value2 == null;
- }
-
- // Since the first value isn't null, if the second one is, they aren't equal.
- //
- if (value2 == null) {
- return false;
- }
- // If this is a feature map...
- //
- if (FeatureMapUtil.isFeatureMap(attribute)) {
- // The feature maps must be equal.
- //
- FeatureMap featureMap1 = (FeatureMap)value1;
- FeatureMap featureMap2 = (FeatureMap)value2;
- return equalFeatureMaps(featureMap1, featureMap2);
- }
- else {
- if (value1 instanceof String && value2 instanceof String) {
- String wsFreeValue1 = removeWhitespaces((String)value1);
- String wsFreeValue2 = removeWhitespaces((String)value2);
- return wsFreeValue1.equals(wsFreeValue2);
- }
-
- return value1.equals(value2);
- }
- }
- private String removeWhitespaces(String input) {
- return input.replaceAll("\\s", "");
- }
- }
|