ModuleUtils { public static Module[] removeDoubles(Module[] modules) { final ArrayList<Module> temp = new ArrayList<Module>(); temp.addAll(Arrays.asList(modules)); final ArrayList<Module> removeList = new ArrayList<Module>(); for (Module module : modules) { final String symbolicName = module.getSymbolicName(); final Version version = module.getVersion(); temp.remove(module); for (Module testModule : temp) { final boolean isHigherOrEqualVersion = version.compareTo(testModule.getVersion()) < 1; if (testModule.getSymbolicName().equals(symbolicName) && isHigherOrEqualVersion) { removeList.add(module); } } if (!removeList.contains(module)) { temp.add(module); } } temp.removeAll(removeList); return temp.toArray(new Module[temp.size()]); }  static Module[] removeDoubles(Module[] modules); static boolean isExcluded(Module module, String[] excludedModules); static String retrieveYear(Module module); static String retrieveSize(Module module); static Module[] cleanModules(Module[] modules, Reader exclusionListReader); static boolean isExcluded(String module, Reader exclusionListReader); static String symbolicToReadableName(String symbolicName, Module[] modules);  }
@Test public void testRemoveDoubles() throws Exception { Module[] moduleArray = modules.toArray(new Module[modules.size()]); Module[] resultModuleArray = ModuleUtils.removeDoubles(moduleArray); assertEquals(3, moduleArray.length); assertEquals(moduleArray.length, resultModuleArray.length); moduleArray = addModule("test_jai_module2.xml"); assertEquals(4, moduleArray.length); resultModuleArray = ModuleUtils.removeDoubles(moduleArray); assertEquals(moduleArray.length - 1, resultModuleArray.length); }