ItEr24S08CUAsignacionGrupoRecursosAPlanificacionItEr23S10: Moving static methods to the top of the class

This commit is contained in:
Óscar González Fernández 2009-09-01 11:30:02 +02:00
parent fc432fedce
commit 4638221cc6

View file

@ -14,43 +14,6 @@ import org.apache.commons.lang.Validate;
public class ScriptDependenciesSorter implements IScriptsRegister {
private List<ScriptDependency> allScripts = new ArrayList<ScriptDependency>();
public ScriptDependenciesSorter() {
}
public void add(ScriptDependency scriptDependency) {
addAll(Arrays.asList(scriptDependency));
}
public void addAll(List<ScriptDependency> dependencies) {
Validate.noNullElements(dependencies);
allScripts.addAll(dependencies);
}
public List<ScriptDependency> getScriptDependenciesOrderered() {
List<ScriptDependency> result = new ArrayList<ScriptDependency>();
Set<ScriptDependency> alreadyAdded = new HashSet<ScriptDependency>();
for (ScriptDependency scriptDependency : allScripts) {
result.addAll(extract(alreadyAdded, scriptDependency));
}
return Collections.unmodifiableList(result);
}
private List<ScriptDependency> extract(Set<ScriptDependency> alreadyAdded,
ScriptDependency scriptDependency) {
List<ScriptDependency> result = new ArrayList<ScriptDependency>();
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<ScriptDependency> extractFrom(Class<?> classWithScripts) {
ScriptsRequiredDeclaration annotation = classWithScripts
.getAnnotation(ScriptsRequiredDeclaration.class);
@ -106,6 +69,43 @@ public class ScriptDependenciesSorter implements IScriptsRegister {
return stringFields;
}
private List<ScriptDependency> allScripts = new ArrayList<ScriptDependency>();
public ScriptDependenciesSorter() {
}
public void add(ScriptDependency scriptDependency) {
addAll(Arrays.asList(scriptDependency));
}
public void addAll(List<ScriptDependency> dependencies) {
Validate.noNullElements(dependencies);
allScripts.addAll(dependencies);
}
public List<ScriptDependency> getScriptDependenciesOrderered() {
List<ScriptDependency> result = new ArrayList<ScriptDependency>();
Set<ScriptDependency> alreadyAdded = new HashSet<ScriptDependency>();
for (ScriptDependency scriptDependency : allScripts) {
result.addAll(extract(alreadyAdded, scriptDependency));
}
return Collections.unmodifiableList(result);
}
private List<ScriptDependency> extract(Set<ScriptDependency> alreadyAdded,
ScriptDependency scriptDependency) {
List<ScriptDependency> result = new ArrayList<ScriptDependency>();
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 {