| /* |
| ----------------------------------------------------------------------- |
| -- CHESS Live/Batch Validator plugin -- |
| -- -- |
| -- Copyright (C) 2016 -- |
| -- Intecs spa, ITALY -- |
| -- -- |
| -- Author: Laura Baracchi -- |
| -- -- |
| -- 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-v20.html -- |
| ----------------------------------------------------------------------- |
| */ |
| package org.polarsys.chess.validator.constraints; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.uml2.uml.Component; |
| import org.eclipse.uml2.uml.Element; |
| import org.eclipse.uml2.uml.Operation; |
| import org.eclipse.uml2.uml.Stereotype; |
| import org.eclipse.emf.validation.AbstractModelConstraint; |
| import org.eclipse.emf.validation.IValidationContext; |
| import org.polarsys.chess.chessmlprofile.Predictability.ARINCComponentModel.ARINCProcess; |
| import org.polarsys.chess.chessmlprofile.util.Constants; |
| |
| /** |
| * The Class ArincProc_01. |
| * This class implements the following constraint (invoked by the EMF validation framework): |
| * The ARINCProcess must have its OperationsGroups not null and not empty |
| * @since 0.10 |
| */ |
| public class ArincProc_01 extends AbstractModelConstraint { |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.emf.validation.AbstractModelConstraint#validate(org.eclipse.emf.validation.IValidationContext) |
| */ |
| @Override |
| public IStatus validate(IValidationContext ctx) { |
| EObject eObject = ctx.getTarget(); |
| |
| Operation operation = (Operation)eObject; |
| |
| IStatus success = ctx.createSuccessStatus(); |
| |
| String arincProcessName = ""; |
| String ownerComponentName = ""; |
| |
| if (operation.getAppliedStereotype(Constants.CH_ARINCProcess) != null ) { |
| if (operation.getName() != null) { |
| arincProcessName = operation.getName(); |
| } |
| Stereotype arincProcessStereo = operation.getAppliedStereotype(Constants.CH_ARINCProcess); |
| ARINCProcess arincProcess = (ARINCProcess) operation.getStereotypeApplication(arincProcessStereo); |
| String opGroupsString = arincProcess.getOperationsGroups(); |
| if (opGroupsString == null || opGroupsString.isEmpty() || opGroupsString.length() == 0) { |
| // Get the name of the owner of the ARINCProcess with NULL or empty OperationsGroups |
| Element theOwner = operation.getOwner(); |
| if (theOwner instanceof Component) { |
| if (((Component)theOwner).getName()!=null) { |
| ownerComponentName = ((Component)theOwner).getName(); |
| } |
| } |
| |
| String errorMsg = "The <<ARINCProcess>> [" + arincProcessName + "] in ["+ownerComponentName+"] must have OperationsGroups not empty and not NULL"; |
| IStatus failure = ctx.createFailureStatus( |
| operation, |
| errorMsg |
| ); |
| return failure; |
| } |
| else { |
| return success; |
| } |
| } |
| else { |
| return success; |
| } |
| } |
| } |