package jetbrains.mps.vcs.diff.changes;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNodeId;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.vcs.diff.ChangeSet;
import org.jetbrains.mps.openapi.language.SProperty;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.model.SNode;
public class SetPropertyStructChange extends SetPropertyChange {
private SNodeId myOppositeNodeId;
public SetPropertyStructChange(@NotNull ChangeSet changeSet, @NotNull SNodeId oldNodeId, @NotNull SNodeId newNodeId, SProperty property, String newValue) {
super(changeSet, oldNodeId, property, newValue);
myOppositeNodeId = newNodeId;
}
@NotNull
@Override
public SNodeId getAffectedNodeId(boolean isNewModel) {
return (isNewModel ? myOppositeNodeId : super.getAffectedNodeId(false));
}
@Override
public void apply(@NotNull SModel model, @NotNull NodeCopier nodeCopier) {
assert model == getChangeSet().getOldModel();
super.apply(model, nodeCopier);
}
@NotNull
@Override
protected ModelChange createOppositeChange() {
SNode node = getChangeSet().getOldModel().getNode(getAffectedNodeId(false));
assert node != null;
return new SetPropertyStructChange(getChangeSet().getOppositeChangeSet(), getAffectedNodeId(true), getAffectedNodeId(false), getProperty(), node.getProperty(getProperty()));
}
}