package com.sap.ide.refactoring.core.execution.participation;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.core.runtime.IProgressMonitor;
import com.sap.ide.refactoring.core.constraints.ConstraintViolation;
import com.sap.ide.refactoring.core.constraints.MetaModelConstraintRegistry;
import com.sap.ide.refactoring.core.textual.RefactoringEditorFacade;
/**
* Participant evaluationg metamodel constraints.
*
* @author Stephan Erb (d049157)
*
*/
public class MetaModelConstraintCheckingParticipant extends AbstractCommandExecutionParticipant {
public static ParticipantDescriptor DESCRIPTOR = new ParticipantDescriptor();
private MetaModelConstraintRegistry metaModelConstraintsRegistry;
public MetaModelConstraintCheckingParticipant(RefactoringEditorFacade facade) {
super(facade);
}
@Override
public void setup(IProgressMonitor pm) {
metaModelConstraintsRegistry = new MetaModelConstraintRegistry(facade.getEditorConnection());
metaModelConstraintsRegistry.registerAllMetaModelConstraintsForIncrementalEvaluation(pm);
}
@Override
public Collection<ContributionInfo> contribute(IProgressMonitor pm) {
Collection<ContributionInfo> contributions = new ArrayList<ContributionInfo>();
Collection<ConstraintViolation> violations = metaModelConstraintsRegistry.evaluateConstraints(pm);
for (ConstraintViolation violation : violations) {
contributions.add(new ContributionInfo(violation.asRefactoringStatus()));
}
return contributions;
}
@Override
public void teardown(IProgressMonitor pm) {
metaModelConstraintsRegistry.deregisterRegisteredMetaModelConstraintListeners(pm);
metaModelConstraintsRegistry = null;
}
@Override
public ParticipantDescriptor getDescriptor() {
return DESCRIPTOR;
}
}