package fr.inria.diverse.k3.ui.builder;
import java.io.IOException;
import java.util.Properties;
import java.util.Map.Entry;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import fr.inria.diverse.k3.ui.builder.JavaAspectFinderResourceVisitor;
public class AspectMappingPropertiesChecker {
protected K3Builder hostBuilder;
public AspectMappingPropertiesChecker(K3Builder hostBuilder) {
super();
this.hostBuilder = hostBuilder;
}
void checkK3AspectMappingPropertiesForGeneratedJava(IResource resource) {
// triggered when
if (resource instanceof IFile && resource.getName().endsWith(resource.getProject().getName()+".k3_aspect_mapping.properties")) {
IFile file = (IFile) resource;
hostBuilder.deleteMarkers(file);
Properties properties = new Properties();
try {
// check that a java file exist for each of the mapping aspects
properties.load(file.getContents());
int mostProbableLine = 1;
for (Entry<Object, Object> entrySet : properties.entrySet()) {
mostProbableLine++;
String[] values = entrySet.getValue().toString().split(", ");
for (String value : values) {
// search for a java class with that name in the project
String searchedJavaFile = value.replaceAll("\\.", "/");
JavaAspectFinderResourceVisitor finder = new JavaAspectFinderResourceVisitor(searchedJavaFile+".java");
resource.getProject().accept(finder);
if(!finder.getSearchResult()){
hostBuilder.addMarker(file, "Aspect "+value+" not found, clean project recommanded", mostProbableLine, IMarker.SEVERITY_WARNING);
}
}
}
} catch (IOException e) {
} catch (CoreException e) {
}
}
}
}