/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.plugin.jira;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.wiki.connectors.jira.JiraDAO;
import org.jboss.seam.wiki.connectors.jira.JiraIssue;
import org.jboss.seam.wiki.core.plugin.WikiPluginMacro;
import org.jboss.seam.wiki.preferences.Preferences;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
/**
* @author Christian Bauer
*/
@Name("jiraIssueList")
@Scope(ScopeType.PAGE)
public class JiraIssueList implements Serializable {
public static final String MACRO_ATTR_ISSUELIST = "jiraIssueList";
@In
JiraDAO jiraDAO;
public List<JiraIssue> getIssues(WikiPluginMacro macro) {
List<JiraIssue> issueList = (List<JiraIssue>)macro.getAttributes().get(MACRO_ATTR_ISSUELIST);
if (issueList == null) {
JiraIssueListPreferences prefs = Preferences.instance().get(JiraIssueListPreferences.class, macro);
if (prefs.getUrl() != null && prefs.getUrl().length() > 0
&& prefs.getFilterId() != null && prefs.getFilterId().length() > 0) {
Integer maxResults = Integer.MAX_VALUE;
if (prefs.getNumberOfIssues() != null) {
maxResults = prefs.getNumberOfIssues().intValue();
}
issueList = jiraDAO.getJiraIssues(prefs.getUrl(), prefs.getUsername(), prefs.getPassword(), prefs.getFilterId(), maxResults);
macro.getAttributes().put(MACRO_ATTR_ISSUELIST, issueList);
} else {
macro.getAttributes().put(MACRO_ATTR_ISSUELIST, Collections.EMPTY_LIST);
}
}
return (List<JiraIssue>)macro.getAttributes().get(MACRO_ATTR_ISSUELIST);
}
}