diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java index 012a79793..d7e2a49c6 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java @@ -14,43 +14,6 @@ import org.apache.commons.lang.Validate; public class ScriptDependenciesSorter implements IScriptsRegister { - private List allScripts = new ArrayList(); - - public ScriptDependenciesSorter() { - } - - public void add(ScriptDependency scriptDependency) { - addAll(Arrays.asList(scriptDependency)); - } - - public void addAll(List dependencies) { - Validate.noNullElements(dependencies); - allScripts.addAll(dependencies); - } - - public List getScriptDependenciesOrderered() { - List result = new ArrayList(); - Set alreadyAdded = new HashSet(); - for (ScriptDependency scriptDependency : allScripts) { - result.addAll(extract(alreadyAdded, scriptDependency)); - } - return Collections.unmodifiableList(result); - } - - private List extract(Set alreadyAdded, - ScriptDependency scriptDependency) { - List result = new ArrayList(); - if (alreadyAdded.contains(scriptDependency)) { - return result; - } - for (ScriptDependency d : scriptDependency.getDependsOn()) { - result.addAll(extract(alreadyAdded, d)); - } - result.add(scriptDependency); - alreadyAdded.add(scriptDependency); - return result; - } - public static List extractFrom(Class classWithScripts) { ScriptsRequiredDeclaration annotation = classWithScripts .getAnnotation(ScriptsRequiredDeclaration.class); @@ -106,6 +69,43 @@ public class ScriptDependenciesSorter implements IScriptsRegister { return stringFields; } + private List allScripts = new ArrayList(); + + public ScriptDependenciesSorter() { + } + + public void add(ScriptDependency scriptDependency) { + addAll(Arrays.asList(scriptDependency)); + } + + public void addAll(List dependencies) { + Validate.noNullElements(dependencies); + allScripts.addAll(dependencies); + } + + public List getScriptDependenciesOrderered() { + List result = new ArrayList(); + Set alreadyAdded = new HashSet(); + for (ScriptDependency scriptDependency : allScripts) { + result.addAll(extract(alreadyAdded, scriptDependency)); + } + return Collections.unmodifiableList(result); + } + + private List extract(Set alreadyAdded, + ScriptDependency scriptDependency) { + List result = new ArrayList(); + if (alreadyAdded.contains(scriptDependency)) { + return result; + } + for (ScriptDependency d : scriptDependency.getDependsOn()) { + result.addAll(extract(alreadyAdded, d)); + } + result.add(scriptDependency); + alreadyAdded.add(scriptDependency); + return result; + } + @Override public void register(Class klassContainingScripts) throws IllegalArgumentException {