private <T extends URLUIItem> T _insertEditInGoogleURLUIItem( T urlUIItem, List<? super T> urlUIItems) { if (!_googleDocsMetadataHelper.containsField(GoogleDocsConstants.DDM_FIELD_NAME_URL)) { return urlUIItem; } int index = _getIndex((List<? extends UIItem>) urlUIItems, DLUIItemKeys.EDIT); if (index == -1) { index = 0; } urlUIItem.setKey(GoogleDocsUIItemKeys.EDIT_IN_GOOGLE); ThemeDisplay themeDisplay = (ThemeDisplay) _request.getAttribute(WebKeys.THEME_DISPLAY); ResourceBundle resourceBundle = ResourceBundleUtil.getBundle("content.Language", themeDisplay.getLocale(), getClass()); String message = LanguageUtil.get(resourceBundle, "edit-in-google-docs"); urlUIItem.setLabel(message); urlUIItem.setTarget("_blank"); String editURL = _googleDocsMetadataHelper.getFieldValue(GoogleDocsConstants.DDM_FIELD_NAME_URL); urlUIItem.setURL(editURL); urlUIItems.add(index, urlUIItem); return urlUIItem; }
/** * Generate the histogram buckets based on the time frame requested and the interval. This will * add an entry for each 'slot' or 'bucket' in the histogram, setting the count to 0. * * @param rval * @param from * @param to * @param interval */ public static <T extends HistogramDataPoint> Map<String, T> generateHistogramSkeleton( HistogramBean<T> rval, DateTime from, DateTime to, HistogramIntervalType interval, Class<T> dataType) { Map<String, T> index = new HashMap<>(); Calendar fromCal = from.toGregorianCalendar(); Calendar toCal = to.toGregorianCalendar(); switch (interval) { case day: fromCal.set(Calendar.HOUR_OF_DAY, 0); fromCal.set(Calendar.MINUTE, 0); fromCal.set(Calendar.SECOND, 0); fromCal.set(Calendar.MILLISECOND, 0); break; case hour: fromCal.set(Calendar.MINUTE, 0); fromCal.set(Calendar.SECOND, 0); fromCal.set(Calendar.MILLISECOND, 0); break; case minute: fromCal.set(Calendar.SECOND, 0); fromCal.set(Calendar.MILLISECOND, 0); break; case month: fromCal.set(Calendar.DAY_OF_MONTH, 1); fromCal.set(Calendar.HOUR_OF_DAY, 0); fromCal.set(Calendar.MINUTE, 0); fromCal.set(Calendar.SECOND, 0); fromCal.set(Calendar.MILLISECOND, 0); break; case week: fromCal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); fromCal.set(Calendar.HOUR_OF_DAY, 0); fromCal.set(Calendar.MINUTE, 0); fromCal.set(Calendar.SECOND, 0); fromCal.set(Calendar.MILLISECOND, 0); break; default: break; } while (fromCal.before(toCal)) { String label = formatDateWithMillis(fromCal); T point; try { point = dataType.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } point.setLabel(label); rval.addDataPoint(point); index.put(label, point); switch (interval) { case day: fromCal.add(Calendar.DAY_OF_YEAR, 1); break; case hour: fromCal.add(Calendar.HOUR_OF_DAY, 1); break; case minute: fromCal.add(Calendar.MINUTE, 1); break; case month: fromCal.add(Calendar.MONTH, 1); break; case week: fromCal.add(Calendar.WEEK_OF_YEAR, 1); break; default: break; } } return index; }