<% | |
final String TAG = "//IMPORT_LOCATION"; | |
importManager = new ImportManager(packageName) { | |
private StringBuffer buf; | |
@Override | |
public void markImportLocation(StringBuffer stringBuffer) { | |
stringBuffer.append(TAG); | |
buf = stringBuffer; | |
} | |
@Override | |
public void emitSortedImports() { | |
InternalPatternContext ictx = (InternalPatternContext) ctx; | |
final Container node = ictx.getNode(); | |
Node.DataLeaf importNode = getImportNode((Node.Container) node.getContainer(Node.Container.class)); | |
if (importNode == null) { | |
final int indexOf = buf.indexOf(TAG); | |
final int indexOf2 = buf.indexOf("//IMPORT_LOCATION", indexOf + 1); | |
buf.replace(indexOf, indexOf + TAG.length(), computeSortedImports()); | |
} else { | |
String data = importNode.getData(); | |
data = data.replace(TAG, computeSortedImports()); | |
importNode.setData(data); | |
} | |
} | |
protected Node.DataLeaf getImportNode(final Container container) { | |
for (Node node : container.getChildren()) | |
if (node instanceof Container) { | |
Node.DataLeaf result = getImportNode((Container) node); | |
if (result != null) | |
return result; | |
} else if (node instanceof Node.DataLeaf) { | |
Node.DataLeaf result = (Node.DataLeaf) node; | |
if (result.getData().contains(TAG)) | |
return result; | |
} | |
return null; | |
} | |
}; | |
importManager.addMasterImport(packageName, className); | |
genModel.setImportManager(importManager); | |
%> |