/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.core;
import gw.fs.IResource;
import gw.lang.reflect.TypeSystem;
import gw.lang.reflect.gs.GosuClassLightParser;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TypeSystemRefreshListener implements IFileListener {
private final boolean DEBUG = false;
@Override
public void modified(IResource file) {
TypeSystem.refreshed(file);
}
@Override
public void modified(IResource file, String oldText, String newText) {
List<String> oldInnerClasses = new GosuClassLightParser(oldText).getInnerClasses();
List<String> newInnerClasses = new GosuClassLightParser(newText).getInnerClasses();
Set<String> addedClasses = new HashSet<>(newInnerClasses);
addedClasses.removeAll(oldInnerClasses);
Set<String> removedClasses = new HashSet<>(oldInnerClasses);
removedClasses.removeAll(newInnerClasses);
for (String name : removedClasses) {
TypeSystem.deleted(file, name);
}
for (String name : addedClasses) {
TypeSystem.created(file, name);
}
if (DEBUG) {
if (!addedClasses.isEmpty() || !removedClasses.isEmpty()) {
System.out.println("+ " + toString(addedClasses) + " , - " + toString(removedClasses));
}
}
}
private String toString(Set<String> set) {
String s = "";
for (String e : set) {
s += e + " ";
}
return s;
}
@Override
public void deleted(IResource file) {
TypeSystem.deleted(file);
}
@Override
public void created(IResource file) {
TypeSystem.created(file);
}
}