| package org.apache.maven.plugin.jira; |
| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import org.apache.maven.plugin.MojoExecutionException; |
| import org.apache.maven.plugin.issues.Issue; |
| import org.apache.maven.plugin.logging.Log; |
| import org.apache.maven.project.MavenProject; |
| import org.apache.maven.settings.Settings; |
| |
| import java.io.File; |
| import java.util.List; |
| |
| /** |
| * Abstract API, more or less, to retrieving issue information from JIRA. |
| * Intended to have subclasses for the old (RSS) and new (REST) ways of doing things. |
| * |
| * @author mfranken@xebia.com |
| * @author jruiz@exist.com |
| * @version $Id$ |
| */ |
| public abstract class AbstractJiraDownloader |
| { |
| protected static final String UTF_8 = "UTF-8"; |
| |
| /** Log for debug output. */ |
| protected Log log; |
| /** Output file for xml document. */ |
| protected File output; |
| /** The maximum number of entries to show. */ |
| protected int nbEntriesMax; |
| /** The filter to apply to query to JIRA. */ |
| protected String filter; |
| /** Ids of fix versions to show, as comma separated string. */ |
| protected String fixVersionIds; |
| /** Ids of status to show, as comma separated string. */ |
| protected String statusIds; |
| /** Ids of resolution to show, as comma separated string. */ |
| protected String resolutionIds; |
| /** Ids of priority to show, as comma separated string. */ |
| protected String priorityIds; |
| /** The component to show. */ |
| protected String component; |
| /** Ids of types to show, as comma separated string. */ |
| protected String typeIds; |
| /** Column names to sort by, as comma separated string. */ |
| protected String sortColumnNames; |
| /** The username to log into JIRA. */ |
| protected String jiraUser; |
| /** The password to log into JIRA. */ |
| protected String jiraPassword; |
| /** The username to log into webserver. */ |
| protected String webUser; |
| /** The password to log into webserver. */ |
| protected String webPassword; |
| /** The maven project. */ |
| protected MavenProject project; |
| /** The maven settings. */ |
| protected Settings settings; |
| /** Use JQL, JIRA query language, instead of URL parameter based queries. |
| * Note that this is down here to make it easier for the mojo to deal with |
| * both new and old flavors. */ |
| protected boolean useJql; |
| /** Filter the JIRA query based on the current version */ |
| protected boolean onlyCurrentVersion; |
| /** The versionPrefix to apply to the POM version */ |
| protected String versionPrefix; |
| /** The pattern used to parse dates from the JIRA xml file. */ |
| protected String jiraDatePattern; |
| |
| /** |
| * Execute the query on the JIRA server. |
| * |
| * @throws Exception on error |
| */ |
| public abstract void doExecute() throws Exception; |
| |
| |
| /** |
| * Check to see if we think that JIRA authentication is needed. |
| * |
| * @return <code>true</code> if jiraUser and jiraPassword are set, otherwise <code>false</code> |
| */ |
| protected boolean isJiraAuthenticationConfigured() |
| { |
| return ( jiraUser != null ) && ( jiraUser.length() > 0 ) && ( jiraPassword != null ); |
| } |
| |
| |
| |
| |
| |
| public abstract List<Issue> getIssueList() throws MojoExecutionException; |
| |
| public void setJiraDatePattern( String jiraDatePattern ) |
| { |
| this.jiraDatePattern = jiraDatePattern; |
| } |
| |
| /** |
| * Set the output file for the log. |
| * |
| * @param thisOutput the output file |
| */ |
| public void setOutput( File thisOutput ) |
| { |
| this.output = thisOutput; |
| } |
| |
| public File getOutput() |
| { |
| return this.output; |
| } |
| |
| /** |
| * Sets the project. |
| * |
| * @param thisProject The project to set |
| */ |
| public void setMavenProject( Object thisProject ) |
| { |
| this.project = (MavenProject) thisProject; |
| } |
| |
| /** |
| * Sets the maximum number of Issues to show. |
| * |
| * @param nbEntries The maximum number of Issues |
| */ |
| public void setNbEntries( final int nbEntries ) |
| { |
| nbEntriesMax = nbEntries; |
| } |
| |
| /** |
| * Sets the statusIds. |
| * |
| * @param thisStatusIds The id(s) of the status to show, as comma separated string |
| */ |
| public void setStatusIds( String thisStatusIds ) |
| { |
| statusIds = thisStatusIds; |
| } |
| |
| /** |
| * Sets the priorityIds. |
| * |
| * @param thisPriorityIds The id(s) of the priority to show, as comma separated string |
| */ |
| public void setPriorityIds( String thisPriorityIds ) |
| { |
| priorityIds = thisPriorityIds; |
| } |
| |
| /** |
| * Sets the resolutionIds. |
| * |
| * @param thisResolutionIds The id(s) of the resolution to show, as comma separated string |
| */ |
| public void setResolutionIds( String thisResolutionIds ) |
| { |
| resolutionIds = thisResolutionIds; |
| } |
| |
| /** |
| * Sets the sort column names. |
| * |
| * @param thisSortColumnNames The column names to sort by |
| */ |
| public void setSortColumnNames( String thisSortColumnNames ) |
| { |
| sortColumnNames = thisSortColumnNames; |
| } |
| |
| /** |
| * Sets the password for authentication against the webserver. |
| * |
| * @param thisWebPassword The password of the webserver |
| */ |
| public void setWebPassword( String thisWebPassword ) |
| { |
| this.webPassword = thisWebPassword; |
| } |
| |
| /** |
| * Sets the username for authentication against the webserver. |
| * |
| * @param thisWebUser The username of the webserver |
| */ |
| public void setWebUser( String thisWebUser ) |
| { |
| this.webUser = thisWebUser; |
| } |
| |
| /** |
| * Sets the password to log into a secured JIRA. |
| * |
| * @param thisJiraPassword The password for JIRA |
| */ |
| public void setJiraPassword( final String thisJiraPassword ) |
| { |
| this.jiraPassword = thisJiraPassword; |
| } |
| |
| /** |
| * Sets the username to log into a secured JIRA. |
| * |
| * @param thisJiraUser The username for JIRA |
| */ |
| public void setJiraUser( String thisJiraUser ) |
| { |
| this.jiraUser = thisJiraUser; |
| } |
| |
| /** |
| * Sets the filter to apply to query to JIRA. |
| * |
| * @param thisFilter The filter to query JIRA |
| */ |
| public void setFilter( String thisFilter ) |
| { |
| this.filter = thisFilter; |
| } |
| |
| /** |
| * Sets the component(s) to apply to query JIRA. |
| * |
| * @param theseComponents The id(s) of components to show, as comma separated string |
| */ |
| public void setComponent( String theseComponents ) |
| { |
| this.component = theseComponents; |
| } |
| |
| /** |
| * Sets the fix version id(s) to apply to query JIRA. |
| * |
| * @param theseFixVersionIds The id(s) of fix versions to show, as comma separated string |
| */ |
| public void setFixVersionIds( String theseFixVersionIds ) |
| { |
| this.fixVersionIds = theseFixVersionIds; |
| } |
| |
| /** |
| * Sets the typeIds. |
| * |
| * @param theseTypeIds The id(s) of the types to show, as comma separated string |
| */ |
| public void setTypeIds( String theseTypeIds ) |
| { |
| typeIds = theseTypeIds; |
| } |
| |
| public void setLog( Log log ) |
| { |
| this.log = log; |
| } |
| |
| protected Log getLog() |
| { |
| return log; |
| } |
| |
| public void setSettings( Settings settings ) |
| { |
| this.settings = settings; |
| } |
| |
| public boolean isUseJql() |
| { |
| return useJql; |
| } |
| |
| public void setUseJql( boolean useJql ) |
| { |
| this.useJql = useJql; |
| } |
| |
| public boolean isOnlyCurrentVersion() |
| { |
| return onlyCurrentVersion; |
| } |
| |
| public void setOnlyCurrentVersion( boolean onlyCurrentVersion ) |
| { |
| this.onlyCurrentVersion = onlyCurrentVersion; |
| } |
| |
| public String getVersionPrefix() |
| { |
| return versionPrefix; |
| } |
| |
| public void setVersionPrefix( String versionPrefix ) |
| { |
| this.versionPrefix = versionPrefix; |
| } |
| } |