package com.sap.ide.refactoring.core.constraints;
import java.util.HashSet;
import java.util.Set;
import com.sap.ide.refactoring.Activator;
import com.sap.tc.moin.repository.Connection;
import com.sap.tc.moin.repository.MRI;
import com.sap.tc.moin.repository.events.ChangeListener;
import com.sap.tc.moin.repository.events.filter.EventFilter;
import com.sap.tc.moin.repository.events.type.ChangeEvent;
import com.sap.tc.moin.repository.events.type.ModelChangeEvent;
public class IAConstrantInvalidationListener implements ChangeListener {
private final ConstraintSpecificImpactAnalysisFacade impactAnalysisFacade;
private final Set<MRI> elementsImpactedByEvents = new HashSet<MRI>();
private final Connection connection;
public IAConstrantInvalidationListener(Connection connection, ConstraintSpecificImpactAnalysisFacade impactAnalysisFacade) {
this.connection = connection;
this.impactAnalysisFacade = impactAnalysisFacade;
}
@Override
public void notify(ChangeEvent event) {
try {
if (event instanceof ModelChangeEvent) {
ModelChangeEvent mce = (ModelChangeEvent) event;
elementsImpactedByEvents.addAll(impactAnalysisFacade.getAffectedModelElements(connection, mce));
}
} catch (Exception e) {
Activator.logError(e, "Failed to handle incoming change event");
}
}
public EventFilter getEventFilter() {
return impactAnalysisFacade.getEventFilter(connection, false);
}
public Set<MRI> getElementsImpactedByEvents() {
return new HashSet<MRI>(elementsImpactedByEvents);
}
}