Clover Coverage Report - Maven Cloud Front Plugin 1.0.30
Coverage timestamp: Wed Nov 9 2011 21:05:10 EST
../../../../../img/srcFileCovDistChart0.png 15% of files have more coverage
114   261   31   6
24   187   0.27   19
19     1.63  
1    
 
  S3DataConverter       Line # 17 114 0% 31 157 0% 0.0
 
No Tests
 
1    package org.kuali.maven.mojo.s3;
2   
3    import java.text.NumberFormat;
4    import java.util.ArrayList;
5    import java.util.Collections;
6    import java.util.Comparator;
7    import java.util.List;
8   
9    import org.apache.commons.lang.StringUtils;
10   
11    import com.amazonaws.services.s3.model.ObjectListing;
12    import com.amazonaws.services.s3.model.S3ObjectSummary;
13   
14    /**
15    * Convert information from an S3 bucket into pojo's
16    */
 
17    public class S3DataConverter {
18    HtmlUtils html = new HtmlUtils();
19    NumberFormat nf = getNumberFormatInstance();
20    S3BucketContext context;
21    String browseHtml;
22   
 
23  0 toggle public S3DataConverter() {
24  0 this(null);
25    }
26   
 
27  0 toggle public S3DataConverter(final S3BucketContext context) {
28  0 super();
29  0 this.context = context;
30    }
31   
32    /**
33    * Return a NumberFormat that does not using grouping and always displays one fraction digit. This is used to
34    * display the size of S3 objects in kilobytes
35    */
 
36  0 toggle protected NumberFormat getNumberFormatInstance() {
37  0 NumberFormat nf = NumberFormat.getInstance();
38  0 nf.setMaximumFractionDigits(1);
39  0 nf.setMinimumFractionDigits(1);
40  0 nf.setGroupingUsed(false);
41  0 return nf;
42    }
43   
44    /**
45    * Convert "foo/bar/css/" into "foo/bar/css"<br>
46    * Convert "foo/bar/css" into "foo/bar"<br>
47    */
 
48  0 toggle protected String getTrimmedPrefix(final String prefix, final String delimiter) {
49  0 int pos = prefix.lastIndexOf(delimiter);
50  0 if (pos == -1) {
51  0 return prefix;
52    }
53  0 return prefix.substring(0, pos);
54    }
55   
56    /**
57    * Convert each DisplayRow object in the list to a String[] and add the String[] to the list of data
58    */
 
59  0 toggle protected void addDisplayRows(final List<DisplayRow> displayRows, final List<String[]> data) {
60  0 for (DisplayRow displayRow : displayRows) {
61  0 addDisplayRow(displayRow, data);
62    }
63    }
64   
65    /**
66    * Convert a DisplayRow object to a String[]
67    */
 
68  0 toggle protected void addDisplayRow(final DisplayRow displayRow, final List<String[]> data) {
69  0 if (displayRow == null) {
70  0 return;
71    }
72  0 String[] row = new String[4];
73  0 row[0] = displayRow.getImage();
74  0 row[1] = displayRow.getAhref();
75  0 row[2] = displayRow.getLastModified();
76  0 row[3] = displayRow.getSize();
77  0 data.add(row);
78    }
79   
80    /**
81    * Trim the prefix off of the text we display for this object.<br>
82    * Display "style.css" instead of "css/style.css"
83    */
 
84  0 toggle protected String getShow(final String key, final String prefix) {
85  0 if (prefix == null) {
86  0 return key;
87    }
88  0 int index = prefix.length();
89  0 String s = key.substring(index);
90  0 return s;
91    }
92   
93    /**
94    * Convert a commonPrefix into a DisplayRow object for the UI
95    */
 
96  0 toggle protected DisplayRow getDisplayRow(final String commonPrefix, final String prefix, final String delimiter) {
97   
98    // Create some UI friendly strings
99  0 String image = html.getImage(context.getDirectoryImage());
100  0 String show = getShow(commonPrefix, prefix);
101  0 String dest = delimiter + commonPrefix;
102  0 String ahref = html.getHref(dest, show);
103  0 String date = "-";
104  0 String size = "-";
105   
106    // Store them in an object
107  0 DisplayRow displayRow = new DisplayRow();
108  0 displayRow.setImage(image);
109  0 displayRow.setAhref(ahref);
110  0 displayRow.setLastModified(date);
111  0 displayRow.setSize(size);
112  0 displayRow.setShow(show);
113  0 return displayRow;
114    }
115   
 
116  0 toggle protected List<DisplayRow> getDirectoryDisplayRows(final ObjectListing objectListing, final String prefix,
117    final String delimiter) {
118  0 List<DisplayRow> displayRows = new ArrayList<DisplayRow>();
119  0 for (String commonPrefix : objectListing.getCommonPrefixes()) {
120  0 DisplayRow displayRow = getDisplayRow(commonPrefix, prefix, delimiter);
121  0 if (displayRow == null) {
122  0 continue;
123    }
124  0 displayRows.add(displayRow);
125    }
126  0 return displayRows;
127    }
128   
129    /**
130    * Convert the ObjectListing into a List of String arrays. Each array in the list represents one row in the html
131    * table we will be generating
132    */
 
133  0 toggle public List<String[]> getData(final ObjectListing objectListing, final String prefix, final String delimiter) {
134  0 DisplayRow upOneDirectory = getUpOneDirectoryDisplayRow(prefix, delimiter);
135  0 List<DisplayRow> objectDisplayRows = getObjectDisplayRows(objectListing, prefix, delimiter);
136  0 List<DisplayRow> directoryDisplayRows = getDirectoryDisplayRows(objectListing, prefix, delimiter);
137  0 Comparator<DisplayRow> c = new DisplayRowComparator();
138  0 Collections.sort(directoryDisplayRows, c);
139  0 List<String[]> data = new ArrayList<String[]>();
140  0 addDisplayRow(upOneDirectory, data);
141  0 addDisplayRows(directoryDisplayRows, data);
142  0 addDisplayRows(objectDisplayRows, data);
143  0 return data;
144    }
145   
 
146  0 toggle protected boolean isDirectory(final S3ObjectSummary summary, final List<String> commonPrefixes,
147    final String prefix, final String delimiter) {
148  0 String key = summary.getKey();
149  0 if (key.equals(prefix)) {
150  0 return true;
151    }
152  0 for (String commonPrefix : commonPrefixes) {
153  0 if (key.equals(commonPrefix)) {
154  0 return true;
155    }
156  0 String trimmedPrefix = getTrimmedPrefix(commonPrefix, delimiter);
157  0 if (key.equals(trimmedPrefix)) {
158  0 return true;
159    }
160    }
161  0 return false;
162    }
163   
164    /**
165    * Convert an S3ObjectSummary into a DisplayRow object for the UI
166    */
 
167  0 toggle protected DisplayRow getDisplayRow(final S3ObjectSummary summary, final String prefix, final String delimiter) {
168  0 String key = summary.getKey();
169   
170    // Create some UI friendly strings
171  0 String image = html.getImage(context.getFileImage());
172  0 String show = getShow(key, prefix);
173  0 String dest = delimiter + key;
174  0 String ahref = html.getHref(dest, show);
175  0 String date = context.getLastModifiedDateFormatter().format(summary.getLastModified());
176  0 String size = nf.format((summary.getSize() / 1024D)) + " KiB";
177   
178    // Store them in an object
179  0 DisplayRow displayRow = new DisplayRow();
180  0 displayRow.setShow(show);
181  0 displayRow.setImage(image);
182  0 displayRow.setAhref(ahref);
183  0 displayRow.setLastModified(date);
184  0 displayRow.setSize(size);
185  0 return displayRow;
186    }
187   
 
188  0 toggle protected List<DisplayRow> getObjectDisplayRows(final ObjectListing objectListing, final String prefix,
189    final String delimiter) {
190  0 List<DisplayRow> displayRows = new ArrayList<DisplayRow>();
191  0 for (S3ObjectSummary summary : objectListing.getObjectSummaries()) {
192  0 if (isDirectory(summary, objectListing.getCommonPrefixes(), prefix, delimiter)) {
193  0 continue;
194    }
195  0 DisplayRow displayRow = getDisplayRow(summary, prefix, delimiter);
196  0 if (displayRow == null) {
197  0 continue;
198    }
199  0 displayRows.add(displayRow);
200    }
201  0 return displayRows;
202    }
203   
204    /**
205    * Convert a commonPrefix into a DisplayRow object for the UI
206    */
 
207  0 toggle protected DisplayRow getUpOneDirectoryDisplayRow(final String prefix, final String delimiter) {
208  0 if (StringUtils.isEmpty(prefix)) {
209  0 return null;
210    }
211   
212    // Create some UI friendly strings
213  0 String image = "";
214  0 String show = ".." + delimiter;
215  0 String dest = getUpOneDirectoryDest(prefix, delimiter);
216  0 String ahref = html.getHref(dest, show);
217  0 String date = "";
218  0 String size = "";
219   
220    // Store them in an object
221  0 DisplayRow displayRow = new DisplayRow();
222  0 displayRow.setImage(image);
223  0 displayRow.setAhref(ahref);
224  0 displayRow.setLastModified(date);
225  0 displayRow.setSize(size);
226  0 return displayRow;
227    }
228   
229    /**
230    * If prefix is "foo/" and delimiter is "/" return "/"<br>
231    * If prefix is "foo/bar/" and delimiter is "/" return "foo/"
232    */
 
233  0 toggle protected String getUpOneDirectoryDest(String prefix, final String delimiter) {
234  0 if (prefix.endsWith(delimiter)) {
235  0 prefix = prefix.substring(0, prefix.length() - 1);
236    }
237  0 int pos = prefix.lastIndexOf(delimiter);
238  0 if (pos == -1) {
239  0 return delimiter + getBrowseHtml();
240    } else {
241  0 return delimiter + prefix.substring(0, pos + 1);
242    }
243    }
244   
 
245  0 toggle public void setContext(final S3BucketContext context) {
246  0 this.context = context;
247    }
248   
 
249  0 toggle public S3BucketContext getContext() {
250  0 return context;
251    }
252   
 
253  0 toggle public String getBrowseHtml() {
254  0 return browseHtml;
255    }
256   
 
257  0 toggle public void setBrowseHtml(final String browseHtml) {
258  0 this.browseHtml = browseHtml;
259    }
260   
261    }