| /** |
| * <copyright> |
| * |
| * Copyright (c) 2009-2010 Thales Corporate Services S.A.S. |
| * 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 |
| * https://www.eclipse.org/legal/epl-v2.0.
|
| *
|
| * SPDX-License-Identifier: EPL-2.0
|
| * |
| * Contributors: |
| * Thales Corporate Services S.A.S - initial API and implementation |
| * |
| * </copyright> |
| */ |
| package org.eclipse.egf.pattern.ui.editors.validation; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.egf.pattern.ui.editors.selector.DefaultClientSelector; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.validation.model.EvaluationMode; |
| import org.eclipse.emf.validation.service.IBatchValidator; |
| import org.eclipse.emf.validation.service.IConstraintDescriptor; |
| import org.eclipse.emf.validation.service.IConstraintFilter; |
| import org.eclipse.emf.validation.service.ModelValidationService; |
| |
| /** |
| * @author XiaoRu Chen - Soyatec |
| * |
| */ |
| public class EMFvalidator { |
| |
| private static final Map<String, IBatchValidator> batchValidatorCache = new HashMap<String, IBatchValidator>(); |
| // private static final Map<String, ILiveValidator> liveValidatorCache = new HashMap<String, ILiveValidator>(); |
| |
| // public static IStatus liveValidate(Notification msg, String key) { |
| // DefaultClientSelector.running = true; |
| // IStatus result = getLive(key).validate(msg); |
| // DefaultClientSelector.running = false; |
| // return result; |
| // } |
| |
| public static IStatus batchValidate(EObject obj, String key) { |
| DefaultClientSelector.running = true; |
| IBatchValidator batch = getBatch(key); |
| IStatus result = batch.validate(obj); |
| DefaultClientSelector.running = false; |
| return result; |
| } |
| |
| // public static ILiveValidator getLive(String key) { |
| // ILiveValidator liveValidator = liveValidatorCache.get(key); |
| // if (liveValidator == null) { |
| // liveValidator = ModelValidationService.getInstance().newValidator(EvaluationMode.LIVE); |
| // liveValidator.addConstraintFilter(getFilter(key)); |
| // liveValidatorCache.put(key, liveValidator); |
| // } |
| // return liveValidator; |
| // } |
| |
| public static IBatchValidator getBatch(String key) { |
| IBatchValidator batchValidator = batchValidatorCache.get(key); |
| if (batchValidator == null) { |
| batchValidator = ModelValidationService.getInstance().newValidator(EvaluationMode.BATCH); |
| batchValidator.setIncludeLiveConstraints(true); |
| batchValidator.addConstraintFilter(getFilter(key)); |
| batchValidatorCache.put(key, batchValidator); |
| } |
| return batchValidator; |
| } |
| |
| public static IConstraintFilter getFilter(final String key) { |
| return new IConstraintFilter() { |
| public boolean accept(IConstraintDescriptor constraint, EObject target) { |
| String id = constraint.getId(); |
| return id.equals(key); |
| } |
| }; |
| } |
| } |