/** * */ package de.urszeidler.shr5.ecp.service; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.ui.services.IServiceLocator; /** * Keeps track of the validation results. And notify a target. * * @author urs */ public class ValidationServiceImpl implements ValidationService { private IServiceLocator locator; private ValidationTarget target; private Map<EObject, Diagnostic> validationResults = new HashMap<EObject, Diagnostic>(); public ValidationServiceImpl(IServiceLocator locator) { this.locator = locator; } @Override public void registerValidationTarget(ValidationTarget target) { this.target = target; } @Override public void updateValidation(EObject eobject) { Diagnostic diagnostic = validationResults.get(eobject); if (diagnostic != null) updateTarget(eobject, diagnostic); } @Override public void updateValidation(EObject eobject, Diagnostic diagnostic) { validationResults.put(eobject, diagnostic); updateTarget(eobject, diagnostic); } private void updateTarget(EObject eobject, Diagnostic diagnostic) { if (target != null) target.setValidation(eobject, diagnostic); } }