List of usage examples for org.apache.commons.collections.set ListOrderedSet get
public Object get(int index)
From source file:net.sourceforge.vulcan.core.support.ProjectImporterImpl.java
@Override public void createProjectsForUrl(String startUrl, String username, String password, boolean createSubprojects, NameCollisionResolutionMode nameCollisionResolutionMode, String[] schedulerNames, Set<String> labels, ProjectImportStatusDto statusDto) throws ConfigException, StoreException, DuplicateNameException { final List<RepositoryAdaptorPlugin> repositoryPlugins = pluginManager .getPlugins(RepositoryAdaptorPlugin.class); final List<BuildToolPlugin> buildToolPlugins = pluginManager.getPlugins(BuildToolPlugin.class); final ListOrderedSet urls = new ListOrderedSet(); urls.add(startUrl);//from w ww. j a va 2 s. co m final List<ProjectConfigDto> newProjects = new ArrayList<ProjectConfigDto>(); final List<ProjectRepositoryConfigurator> repoConfigurators = new ArrayList<ProjectRepositoryConfigurator>(); final List<String> existingProjectNames = new ArrayList<String>(stateManager.getProjectConfigNames()); for (int i = 0; i < urls.size(); i++) { final String url = (String) urls.get(i); if (statusDto != null) { statusDto.setCurrentUrl(url); statusDto.setNumProjectsCreated(newProjects.size()); statusDto.setNumRemainingModules(urls.size() - i); } final ProjectConfigDto projectConfig = new ProjectConfigDto(); projectConfig.setSchedulerNames(schedulerNames); final ProjectRepositoryConfigurator repoConfigurator = createRepositoryConfiguratorForUrl( repositoryPlugins, projectConfig, url, username, password); File buildSpecFile = null; final ProjectBuildConfigurator buildConfigurator; try { buildSpecFile = downloadBuildSpecFile(repoConfigurator); final Document xmlDocument = tryParse(buildSpecFile); buildConfigurator = createBuildToolConfigurator(buildToolPlugins, projectConfig, url, buildSpecFile, xmlDocument); } finally { deleteIfPresent(buildSpecFile); } final boolean shouldCreate = configureProject(projectConfig, repoConfigurator, buildConfigurator, url, existingProjectNames, nameCollisionResolutionMode, createSubprojects, labels); if (createSubprojects) { final List<String> subprojectUrls = buildConfigurator.getSubprojectUrls(); makeAbsolute(url, subprojectUrls); if (subprojectUrls != null) { urls.addAll(subprojectUrls); } } if (shouldCreate) { existingProjectNames.add(projectConfig.getName()); newProjects.add(projectConfig); repoConfigurators.add(repoConfigurator); log.info("Configured project " + projectConfig.getName()); } else { log.info("Skipping project " + projectConfig.getName()); } } final Map<String, PluginConfigDto> pluginConfigs = new HashMap<String, PluginConfigDto>(); for (int i = 0; i < newProjects.size(); i++) { final ProjectConfigDto projectConfig = newProjects.get(i); try { final String pluginId = projectConfig.getRepositoryAdaptorPluginId(); PluginConfigDto pluginConfig = pluginConfigs.get(pluginId); if (pluginConfig == null) { pluginConfig = (PluginConfigDto) pluginManager.getPluginConfigInfo(pluginId).copy(); } if (repoConfigurators.get(i).updateGlobalConfig(pluginConfig)) { pluginConfigs.put(pluginId, pluginConfig); } } catch (PluginNotConfigurableException ignore) { } catch (PluginNotFoundException e) { throw new RuntimeException(e); } } final ConfigUpdatesDto updates = new ConfigUpdatesDto(); updates.setNewProjectConfigs(newProjects); if (!pluginConfigs.isEmpty()) { updates.setModifiedPluginConfigs(pluginConfigs); } try { stateManager.applyMultipleUpdates(updates); } catch (PluginNotFoundException e) { // Very unlikely... throw new RuntimeException(e); } log.info("Successfully imported project(s) for URL " + startUrl); }