1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.theplugin.idea.crucible.table.column;
18
19 import com.atlassian.theplugin.commons.crucible.ValueNotYetInitialized;
20 import com.atlassian.theplugin.commons.crucible.api.model.Reviewer;
21 import com.atlassian.theplugin.idea.TableColumnInfo;
22 import com.atlassian.theplugin.idea.crucible.ReviewData;
23 import static com.atlassian.theplugin.util.ReviewInfoUtil.getNumOfCompletedReviewers;
24
25 import javax.swing.*;
26 import java.util.Comparator;
27 import java.util.Iterator;
28 import java.util.List;
29
30
31 public class ReviewReviewersColumn extends TableColumnInfo {
32 private static final int COL_WIDTH = new JLabel("Reviewers").getPreferredSize().width;
33
34 public String getColumnName() {
35 return "Reviewers";
36 }
37
38 public Object valueOf(Object o) {
39 return o;
40 }
41
42 public Class getColumnClass() {
43 return String.class;
44 }
45
46 public Comparator getComparator() {
47
48
49
50
51
52
53
54
55 return new Comparator() {
56 public int compare(Object o, Object o1) {
57 ReviewData review1 = (ReviewData) o;
58 ReviewData review2 = (ReviewData) o1;
59 List<Reviewer> r1 = null;
60 List<Reviewer> r2 = null;
61 int r1s = 0;
62 int r2s = 0;
63 try {
64 r1 = review1.getReviewers();
65 r1s = r1.size();
66 } catch (ValueNotYetInitialized valueNotYetInitialized) {
67
68 }
69 try {
70 r2 = review2.getReviewers();
71 r2s = r2.size();
72 } catch (ValueNotYetInitialized valueNotYetInitialized) {
73
74 }
75
76 if (r1s == r2s) {
77 return getNumOfCompletedReviewers(review1) - getNumOfCompletedReviewers(review2);
78 } else {
79 return r1s - r2s;
80 }
81 }
82 };
83 }
84
85 public static String getReviewersAsText(Object o) {
86 StringBuffer sb = new StringBuffer();
87 try {
88 if (((ReviewData) o).getReviewers() != null) {
89 for (Iterator<Reviewer> iterator = ((ReviewData) o).getReviewers().iterator(); iterator.hasNext();) {
90 sb.append(iterator.next().getUserName());
91 if (iterator.hasNext()) {
92 sb.append(", ");
93 }
94 }
95 }
96 } catch (ValueNotYetInitialized valueNotYetInitialized) {
97 return "Error retrieving reviewers";
98 }
99 return sb.toString();
100 }
101
102 public int getPrefferedWidth() {
103 return COL_WIDTH;
104 }
105
106
107 }