blob: c27a88b5949d2195639c6bf04dbb5ba17fba6210 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2018 CEA LIST and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink (CEA LIST) - initial API and implementation
*******************************************************************************/
package org.eclipse.ocl.examples.emf.validation.validity.utilities;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.examples.emf.validation.validity.ConstrainingNode;
import org.eclipse.ocl.examples.emf.validation.validity.ResultConstrainingNode;
import org.eclipse.ocl.examples.emf.validation.validity.ResultValidatableNode;
import org.eclipse.ocl.examples.emf.validation.validity.ValidatableNode;
public class ValidityUtils
{
/**
* Return all enabled result constraining nodes at and below constrainingNode.
*/
public static @NonNull List<ResultConstrainingNode> getEnabledResultConstrainingNodes(@NonNull ConstrainingNode constrainingNode) {
List<ResultConstrainingNode> resultConstrainingNodes = new ArrayList<ResultConstrainingNode>();
if (constrainingNode instanceof ResultConstrainingNode) {
ResultConstrainingNode resultConstrainingNode = (ResultConstrainingNode) constrainingNode;
if (resultConstrainingNode.isEnabled()) {
resultConstrainingNodes.add(resultConstrainingNode);
}
}
for (TreeIterator<EObject> tit = constrainingNode.eAllContents(); tit.hasNext(); ) {
Object eObject = tit.next();
if (eObject instanceof ResultConstrainingNode) {
ResultConstrainingNode resultConstrainingNode = (ResultConstrainingNode) eObject;
if (resultConstrainingNode.isEnabled()) {
resultConstrainingNodes.add(resultConstrainingNode);
}
}
}
return resultConstrainingNodes;
}
/**
* Return all enabled result validatable nodes at and below validatableNode.
*/
public static @NonNull List<ResultValidatableNode> getEnabledResultValidatableNodes(@NonNull ValidatableNode validatableNode) {
List<ResultValidatableNode> resultValidatableNodes = new ArrayList<ResultValidatableNode>();
if (validatableNode instanceof ResultValidatableNode) {
ResultValidatableNode resultValidatableNode = (ResultValidatableNode) validatableNode;
if (resultValidatableNode.isEnabled()) {
resultValidatableNodes.add(resultValidatableNode);
}
}
for (TreeIterator<EObject> tit = validatableNode.eAllContents(); tit.hasNext(); ) {
Object eObject = tit.next();
if (eObject instanceof ResultValidatableNode) {
ResultValidatableNode resultValidatableNode = (ResultValidatableNode) eObject;
if (resultValidatableNode.isEnabled()) {
resultValidatableNodes.add(resultValidatableNode);
}
}
}
return resultValidatableNodes;
}
}