package org.objectstyle.wolips.wodclipse.core.completion;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.objectstyle.wolips.bindings.wod.WodProblem;
import org.objectstyle.wolips.wodclipse.core.util.WodModelUtils;
import org.objectstyle.wolips.wodclipse.core.woo.WooModel;
import org.objectstyle.wolips.wodclipse.core.woo.WooModelException;
public class WooCacheEntry extends AbstractCacheEntry<WooModel> {
public WooCacheEntry(WodParserCache cache) {
super(cache);
}
@Override
public void validate() throws Exception {
setValidated(true);
WooModel wooModel = getModel();
if (wooModel != null) {
WodParserCache cache = getCache();
IJavaProject javaProject = cache.getJavaProject();
IType componentType = cache.getComponentType();
List<WodProblem> wodProblems = wooModel.getProblems(javaProject, componentType, WodParserCache.getTypeCache(), WodParserCache.getModelGroupCache());
IFile wooFile = getFile();
if (wooFile != null && wooFile.exists()) {
for (WodProblem wodProblem : wodProblems) {
WodModelUtils.createMarker(wooFile, wodProblem);
}
try {
wooModel.loadModelFromStream(wooFile.getContents());
}
catch (Throwable e) {
WodModelUtils.createMarker(wooFile, new WodProblem(e.getMessage(), null, 0, false));
}
}
}
}
@Override
public WooModel _parse(String contents) throws WooModelException {
WooModel model = new WooModel(contents);
model.setFile(getFile());
return model;
}
}