package com.sap.ide.cts.parser.incremental;
import java.util.ArrayList;
import java.util.Collection;
import com.sap.furcas.metamodel.FURCAS.textblocks.AbstractToken;
import com.sap.furcas.metamodel.FURCAS.textblocks.TextBlock;
import com.sap.furcas.runtime.common.exceptions.DeferredModelElementCreationException;
import com.sap.furcas.runtime.parser.textblocks.TextBlockFactory;
import com.sap.furcas.runtime.parser.textblocks.observer.TextBlockProxy;
public class DefaultTextBlockReuseStrategy implements TextBlockReuseStrategy {
private TextBlockFactory creator;
private final Collection<TextBlock> changedTbs = new ArrayList<TextBlock>();
@Override
public boolean canBeReUsed(AbstractToken candidate, Object newToken) {
return false;
}
@Override
public TbBean reuseTextBlock(TextBlock oldVersion, TextBlockProxy newVersion) throws DeferredModelElementCreationException {
// default is to never reuse
TextBlock newTb = creator.createNewTextBlock(newVersion, oldVersion.getParent());
changedTbs.add(newTb);
return new TbBean(newTb, true, ReuseType.DELETE);
}
@Override
public void setReferenceHandler(ReferenceHandler handler) {
// TODO Auto-generated method stub
}
@Override
public void setTextBlockFactory(TextBlockFactory creator) {
this.creator = creator;
}
@Override
public void notifyTokenReuse(AbstractToken subNode) {
// TODO Auto-generated method stub
}
@Override
public void clearChangedBlocksList() {
changedTbs.clear();
}
@Override
public Collection<TextBlock> getChangedBlocks() {
return changedTbs;
}
}