1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package edu.internet2.middleware.grouper.ui;
33
34 import java.util.ResourceBundle;
35
36 import edu.internet2.middleware.grouper.Membership;
37 import edu.internet2.middleware.grouper.Stem;
38 import edu.internet2.middleware.grouper.ui.util.MembershipAsMap;
39 import edu.internet2.middleware.grouper.ui.util.StemAsMap;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public class StemComparatorHelper implements GrouperComparatorHelper{
56
57
58
59
60 public StemComparatorHelper() {
61 super();
62
63 }
64
65
66
67
68
69
70 public String getComparisonString(Object obj, ResourceBundle config,
71 String context) {
72 Stem stem = null;
73 if(obj instanceof Stem) {
74 stem=(Stem)obj;
75 }else if(obj instanceof StemAsMap) {
76 stem = (Stem)((StemAsMap)obj).getWrappedObject();
77 }else if(obj instanceof Membership) {
78 stem = ((Membership)obj).getStem();
79 }else if(obj instanceof MembershipAsMap) {
80 stem = ((Membership)((MembershipAsMap)obj).getWrappedObject()).getStem();
81
82 }else{
83 throw new IllegalArgumentException(obj + " is not a Stem");
84 }
85
86 String attrStr=null;
87 if(context.startsWith("search:")) {
88 attrStr=context.substring(7);
89 }else{
90 try {
91 attrStr=config.getString("stem.sort." + context);
92 }catch(Exception e){}
93 if(attrStr==null) {
94 try {
95 attrStr=config.getString("stem.sort.default");
96 }catch(Exception e){}
97
98 }
99 if(attrStr==null) {
100 try {
101 attrStr=config.getString("stem.display");
102 }catch(Exception e){}
103
104 }
105 }
106 String[] parts=attrStr.split(" ");
107 StringBuffer sb=new StringBuffer();
108 String val="";
109 for(int i=0;i<parts.length;i++) {
110 val="";
111 try {
112 val=getStemAttribute(stem,parts[i]);
113 }catch(Exception e){}
114 sb.append(val);
115 }
116 boolean sortLowercase = true;
117 try {
118 if("false".equals(config.getString("comparator.sort.lowercase"))) sortLowercase=false;
119 }catch(Exception e) {}
120 if(sortLowercase) {
121 return sb.toString().toLowerCase();
122 }
123 return sb.toString();
124 }
125
126
127
128
129
130
131
132 private String getStemAttribute(Stem stem, String attr) {
133 if("extension".equals(attr)) {
134 return stem.getExtension();
135 }else if("displayExtension".equals(attr)) {
136 return stem.getDisplayExtension();
137 }else if("name".equals(attr)) {
138 return stem.getName();
139 }else if("displayName".equals(attr)) {
140 return stem.getDisplayName();
141 }else if("deascription".equals(attr)) {
142 return stem.getDescription();
143 }
144 return "";
145
146 }
147 }