public void doExecute()

in src/main/java/org/apache/easyant/tasks/SearchModule.java [53:120]


    public void doExecute() throws BuildException {
        if (getOrganisation() == null) {
            throw new BuildException("no organisation provided for SearchModule task");
        }
        if (getModule() == null) {
            throw new BuildException("no module name provided for SearchModule task");
        }
        if (getRevision() == null) {
            throw new BuildException("no revision provided for SearchModule task");
        }

        if (getPropertyPrefix() == null) {
            throw new BuildException("no property prefix provided provided for SearchModule task");
        }
        Ivy ivy = getIvyInstance();
        IvySettings settings = ivy.getSettings();

        // search all modules revision matching the requested criteria
        DependencyResolver resolverToCheck;
        if (getResolver() != null) {
            resolverToCheck = settings.getResolver(getResolver());
        } else {
            resolverToCheck = settings.getDefaultResolver();
        }
        ModuleRevisionId mridToSearch = ModuleRevisionId.newInstance(getOrganisation(), getModule(), getBranch(),
                getRevision());
        ModuleRevisionId[] mrids = ivy.getSearchEngine().listModules(resolverToCheck, mridToSearch,
                settings.getMatcher(matcher));

        // diplay the list
        List<String> choices = new ArrayList<String>();
        for (int i = 0; i < mrids.length; i++) {
            ResolvedModuleRevision rmr = ivy.findModule(mrids[i]);
            if (rmr == null) {
                log("Can't retrieve " + mrids[i].toString(), Project.MSG_WARN);
            } else {

                choices.add(String.valueOf(i));
                StringBuilder sb = new StringBuilder();
                sb.append(i).append(": ");
                sb.append(mrids[i].getName());
                sb.append(" v").append(mrids[i].getRevision());
                // hide organization if its the default one
                if (!EasyAntConstants.EASYANT_SKELETONS_ORGANISATION.equals(mrids[i].getOrganisation())) {
                    sb.append(" by ").append(mrids[i].getOrganisation());
                }
                // Get the description
                if (rmr.getDescriptor().getDescription() != null && !rmr.getDescriptor().getDescription().equals("")) {
                    sb.append(" (").append(rmr.getDescriptor().getDescription()).append(")");
                }
                log(sb.toString());
            }
        }
        if (choices.isEmpty()) {
            throw new BuildException("No matching module were found !");
        }

        // ask end user to select a module
        // TODO handle a default value
        Integer value = Integer.valueOf(getInput("Choose a number:", null, choices));
        ModuleRevisionId moduleToRetrieve = mrids[value];

        // set final properties
        getProject().setProperty(getPropertyPrefix() + ".org", moduleToRetrieve.getOrganisation());
        getProject().setProperty(getPropertyPrefix() + ".module", moduleToRetrieve.getName());
        getProject().setProperty(getPropertyPrefix() + ".rev", moduleToRetrieve.getRevision());

    }