001 package org.hackystat.projectbrowser.page.dailyprojectdata.issue; 002 003 import java.util.ArrayList; 004 import java.util.List; 005 import org.apache.wicket.markup.html.basic.Label; 006 import org.apache.wicket.markup.html.list.ListItem; 007 import org.apache.wicket.markup.html.list.ListView; 008 import org.apache.wicket.markup.html.panel.Panel; 009 import org.apache.wicket.model.PropertyModel; 010 import org.hackystat.projectbrowser.ProjectBrowserSession; 011 import org.hackystat.projectbrowser.page.dailyprojectdata.DailyProjectDataSession; 012 013 014 /** 015 * Data panel for Commit. 016 * 017 * @author Philip Johnson 018 */ 019 public class IssuePanel extends Panel { 020 021 /** Support serialization. */ 022 private static final long serialVersionUID = 1L; 023 024 /** 025 * Create this panel, providing the appropriate wicket ID. 026 * 027 * @param id The wicket component id. 028 */ 029 public IssuePanel(String id) { 030 super(id); 031 DailyProjectDataSession session = ProjectBrowserSession.get().getDailyProjectDataSession(); 032 // prepare the data model. 033 IssueDataModel dataModel = session.getIssueDataModel(); 034 final List<String> openHeaders = new ArrayList<String>(); 035 openHeaders.addAll(dataModel.getOpenIssueStatus()); 036 ListView openStatusHeaders = new ListView("issueOpenStatusHeads", openHeaders) { 037 /** Support serialization. */ 038 private static final long serialVersionUID = 1L; 039 @Override 040 protected void populateItem(ListItem item) { 041 final String statusName = item.getModelObjectAsString(); 042 item.add(new Label("issueStatusName", statusName)); 043 } 044 }; 045 add(openStatusHeaders); 046 047 final List<String> closedHeaders = new ArrayList<String>(); 048 closedHeaders.addAll(dataModel.getClosedIssueStatus()); 049 ListView closedStatusHeaders = new ListView("issueClosedStatusHeads", closedHeaders) { 050 /** Support serialization. */ 051 private static final long serialVersionUID = 1L; 052 @Override 053 protected void populateItem(ListItem item) { 054 final String statusName = item.getModelObjectAsString(); 055 item.add(new Label("issueStatusName", statusName)); 056 } 057 }; 058 add(closedStatusHeaders); 059 060 ListView datalistView = new ListView("issueDataList", new PropertyModel(dataModel, 061 "issueDataList")) { 062 /** Support serialization. */ 063 private static final long serialVersionUID = 1L; 064 065 @Override 066 protected void populateItem(ListItem item) { 067 IssueDpdData data = (IssueDpdData) item.getModelObject(); 068 item.add(new Label("project", data.getProject().getName())); 069 List<String> openIssueDataList = new ArrayList<String>(); 070 for (String status : openHeaders) { 071 Integer value = data.getIssueStatusCount().get(status); 072 if (value == null) { 073 value = 0; 074 } 075 openIssueDataList.add(value.toString()); 076 } 077 ListView openIssueDataListView = new ListView("openIssueDataList", openIssueDataList) { 078 /** Support serialization. */ 079 private static final long serialVersionUID = 1L; 080 @Override 081 protected void populateItem(ListItem item) { 082 final String statusName = item.getModelObjectAsString(); 083 item.add(new Label("data", statusName)); 084 } 085 }; 086 item.add(openIssueDataListView); 087 item.add(new Label("totalOpen", String.valueOf(data.getOpenIssues()))); 088 List<String> closedIssueDataList = new ArrayList<String>(); 089 for (String status : closedHeaders) { 090 Integer value = data.getIssueStatusCount().get(status); 091 if (value == null) { 092 value = 0; 093 } 094 openIssueDataList.add(value.toString()); 095 } 096 ListView closedIssueDataListView = 097 new ListView("closedIssueDataList", closedIssueDataList) { 098 /** Support serialization. */ 099 private static final long serialVersionUID = 1L; 100 @Override 101 protected void populateItem(ListItem item) { 102 final String statusName = item.getModelObjectAsString(); 103 item.add(new Label("data", statusName)); 104 } 105 }; 106 item.add(closedIssueDataListView); 107 item.add(new Label("totalClosed", String.valueOf(data.getClosedIssues()))); 108 } 109 }; 110 add(datalistView); 111 } 112 113 /** 114 * Returns true if this panel should be displayed. 115 * The panel should be displayed if its corresponding data model has information. 116 * @return True if this panel should be displayed. 117 */ 118 @Override 119 public boolean isVisible() { 120 DailyProjectDataSession session = ProjectBrowserSession.get().getDailyProjectDataSession(); 121 return !session.getIssueDataModel().isEmpty(); 122 } 123 }