Example usage for org.apache.commons.collections.set ListOrderedSet get

List of usage examples for org.apache.commons.collections.set ListOrderedSet get

Introduction

In this page you can find the example usage for org.apache.commons.collections.set ListOrderedSet get.

Prototype

public Object get(int index) 

Source Link

Usage

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);
}