diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java index 82f2ae5d641213dce769736d1ccc318725b18543..30456ee64e345c6157c6002996960520add04e11 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; @@ -30,7 +29,6 @@ import org.fortiss.tooling.kernel.model.constraints.ConstrainedWithChecksum; import org.fortiss.tooling.kernel.model.constraints.ConstraintsFactory; import org.fortiss.tooling.kernel.model.constraints.IConstrained; import org.fortiss.tooling.kernel.model.constraints.IConstraint; -import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus; import org.fortiss.tooling.kernel.service.IConstraintVerificationService; import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService; import org.fortiss.tooling.kernel.service.IPersistencyService; @@ -44,7 +42,7 @@ import org.fortiss.tooling.kernel.utils.LoggingUtils; * @author aravantinos * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 34F33564756833D453A66DFD53D78FC8 + * @ConQAT.Rating YELLOW Hash: DBE8840892D099FA011822EF6EB4ED9E */ public final class ConstraintVerificationService extends EObjectAwareServiceBase<IConstraintVerifier<IConstraint>> implements @@ -58,9 +56,6 @@ public final class ConstraintVerificationService extends return INSTANCE; } - /** Map ID -> Verifier. */ - private HashMap<String, IConstraintVerifier<IConstraint>> idMap = new HashMap<>(); - /** {@inheritDoc} */ @Override public void startService() { @@ -75,13 +70,6 @@ public final class ConstraintVerificationService extends addHandler(constraintElementClass, (IConstraintVerifier<IConstraint>)verifier); } - /** {@inheritDoc} */ - @Override - protected void addHandler(Class<?> modelElementClass, IConstraintVerifier<IConstraint> handler) { - super.addHandler(modelElementClass, handler); - idMap.put(handler.getID(), handler); - } - /** {@inheritDoc} */ @Override public String getIntrospectionDescription() { @@ -129,7 +117,9 @@ public final class ConstraintVerificationService extends // And we also update the checksums after in case the verification had some side // effects... updateChecksums(constraint); - constraint.getVerificationStatus().setConstraint(constraint); + if(constraint.getVerificationStatus() != null) { + constraint.getVerificationStatus().setConstraint(constraint); + } } }); } @@ -137,13 +127,11 @@ public final class ConstraintVerificationService extends /** {@inheritDoc} */ @Override - public List<IFix> fixes(IConstraintVerificationStatus status) { + public <T extends IConstraint> List<IFix> fixes(T c) { List<IFix> fixes = null; - if(status != null) { - IConstraintVerifier<IConstraint> verifier = getFirstVerifier(status.getConstraint()); - if(verifier != null) { - fixes = verifier.fixes(status); - } + IConstraintVerifier<IConstraint> verifier = getFirstVerifier(c); + if(verifier != null) { + fixes = verifier.fixes(c, c.getVerificationStatus()); } return fixes != null ? fixes : new ArrayList<IFix>(); } @@ -182,7 +170,7 @@ public final class ConstraintVerificationService extends /** * Flag to print objects which are actually checksummed in various files. * This is useful since it is essential to control very precisely how checksums are computed. - * Should however only be set to <code>true</code> on a local machine, not commited! + * Should however only be set to <code>true</code> on a local machine, never commited! */ private final boolean DEBUG = false; @@ -217,7 +205,7 @@ public final class ConstraintVerificationService extends res.save(oos, options); if(DEBUG) { - String fileName = "/home/aravantinos/temp/constraints/temp" + debug_trace_number++; + String fileName = "/home/vincent/temp/constraints/temp" + debug_trace_number++; String nameConstraint = constraint instanceof INamedElement ? ((INamedElement)constraint).getName() : constraint.toString(); @@ -341,17 +329,4 @@ public final class ConstraintVerificationService extends public IIntrospectionDetailsItem getDetailsItem() { return new ConstraintVerificationServiceIntrospectionDetailsItem(handlerMap); } - - /** {@inheritDoc} */ - @Override - public <T extends IConstraint> String getDescription(String id) { - IConstraintVerifier<IConstraint> verifier = this.idMap.get(id); - return verifier != null ? verifier.getDescription() : null; - } - - /** {@inheritDoc} */ - @Override - public Set<String> getDevelopmentProcessConstraintIDs() { - return this.idMap.keySet(); - } } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/IConstraintVerificationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/IConstraintVerificationService.java index ed231f876469f170a2593eaf14693b2bd5116ba2..c1bf8dd8e689ab95ebaf859f47b5f5f98fcab290 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/IConstraintVerificationService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/IConstraintVerificationService.java @@ -1,7 +1,6 @@ package org.fortiss.tooling.kernel.service; import java.util.List; -import java.util.Set; import java.util.function.Consumer; import org.fortiss.tooling.kernel.extension.IConstraintVerifier; @@ -9,6 +8,7 @@ import org.fortiss.tooling.kernel.internal.ConstraintVerificationService; import org.fortiss.tooling.kernel.model.constraints.IConstrained; import org.fortiss.tooling.kernel.model.constraints.IConstraint; import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus; +import org.fortiss.tooling.kernel.model.constraints.OutdatedVerificationStatus; /** * The verification service allows to register "constraint verifiers", e.g., @@ -17,7 +17,7 @@ import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatu * @author aravantinos * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: FD558867A49922BF4EB907180C0AB05D + * @ConQAT.Rating YELLOW Hash: EA0300E3E7FE78E9541ADC365502975F */ public interface IConstraintVerificationService { /** Returns the service instance. */ @@ -36,15 +36,21 @@ public interface IConstraintVerificationService { /** * @param constraint * @return <code>true</code> if <code>constraint</code> is up to date. + * This does not just look at the status but computes a diff between the constrained + * element and the one for which the constraint was last time checked. In the standard + * case, it is enough to call IConstraintVerificationUIService.getStatus and see if the + * result is an instance of {@link OutdatedVerificationStatus}.You should use + * {isUpToDate} *only if IConstraintVerificationUIService.getStatus does not provide the + * information you want*. */ boolean isUpToDate(IConstraint constraint); /** - * @param status - * @return A list of possible automatic fixes for the (constraint of) <code>status</code>. - * A status should be candidate to fixing if it is anything but successful or outdated. + * @param constraint + * @return A list of possible automatic fixes for <code>constraint</code>. A constraint should + * be candidate to fixing if it is anything but successful or outdated. */ - List<IFix> fixes(IConstraintVerificationStatus status); + <T extends IConstraint> List<IFix> fixes(T constraint); /** Interface for a "fix". */ public interface IFix { @@ -104,17 +110,4 @@ public interface IConstraintVerificationService { /** Registers the given verifier with the service. */ <T extends IConstraint> void registerConstraintVerifier(IConstraintVerifier<T> verifier, Class<T> constraintElementClass); - - /** - * The following features deal with the usage of constraints to drive the process. - * - * EXPERIMENTAL. - */ - - /** Gets a general description for the constraint type. */ - - <T extends IConstraint> String getDescription(String id); - - /** Gets the constraint types which can be used for constraint-based development process. */ - Set<String> getDevelopmentProcessConstraintIDs(); }