/** * Adds the date range values to the search template. * * <pre>{@code * - _date-start * - _date-end * * }</pre> * * If there is no 'start' and 'end' request parameter, then the current day is used. A day starts * at 00:00 and ends the next day at 00:00 * * @param request The request that has been done on the search node. * @param propertiesMap The map where the key-values should be added to. */ protected void addStartEnd(SlingHttpServletRequest request, Map<String, String> propertiesMap) { try { // Default is today Calendar cStart = getDayCalendar(); Calendar cEnd = getDayCalendar(); cEnd.add(Calendar.DAY_OF_MONTH, 1); // If a parameter is specified, we try to parse it and use that one. RequestParameter startParam = request.getRequestParameter(START_DAY_PARAM); RequestParameter endParam = request.getRequestParameter(END_DAY_PARAM); if (startParam != null && endParam != null) { String start = startParam.getString("UTF-8"); String end = endParam.getString("UTF-8"); cStart.setTime(format.parse(start)); cEnd.setTime(format.parse(end)); } // Calculate the beginning and the end date. String beginning = DateUtils.iso8601jcr(cStart); String end = DateUtils.iso8601jcr(cEnd); // Add to map. propertiesMap.put("_date-start", ClientUtils.escapeQueryChars(beginning)); propertiesMap.put("_date-end", ClientUtils.escapeQueryChars(end)); } catch (UnsupportedEncodingException e) { LOGGER.error( "Caught an UnsupportedEncodingException when trying to provide properties for the calendar search templates.", e); } catch (ParseException e) { LOGGER.error( "Caught a ParseException when trying to provide properties for the calendar search templates.", e); } }
public static void writeFileNode( Content content, org.sakaiproject.nakamura.api.lite.Session session, JSONWriter write, int maxDepth, boolean objectInProgress) throws JSONException, StorageClientException { if (content == null) { log.warn("Can't output null content."); return; } if (!objectInProgress) { write.object(); } // dump all the properties. ExtendedJSONWriter.writeContentTreeToWriter(write, content, true, maxDepth); // The permissions for this session. writePermissions(content, session, write); write.key(JcrConstants.JCR_LASTMODIFIED); Calendar cal = new GregorianCalendar(); cal.setTimeInMillis(StorageClientUtils.toLong(content.getProperty(Content.LASTMODIFIED_FIELD))); write.value(DateUtils.iso8601(cal)); write.key(JcrConstants.JCR_MIMETYPE); write.value(content.getProperty(Content.MIMETYPE_FIELD)); write.key(JcrConstants.JCR_DATA); write.value(StorageClientUtils.toLong(content.getProperty(Content.LENGTH_FIELD))); if (!objectInProgress) { write.endObject(); } }
/** * Writes all the properties of a sakai/file node. Also checks what the permissions are for a * session and where the links are. * * @param node * @param write * @param objectInProgress Whether object creation is in progress. If false, object is started and * ended in this method call. * @throws JSONException * @throws RepositoryException */ public static void writeFileNode(Node node, Session session, JSONWriter write, int maxDepth) throws JSONException, RepositoryException { write.object(); // dump all the properties. ExtendedJSONWriter.writeNodeTreeToWriter(write, node, true, maxDepth); // The permissions for this session. writePermissions(node, session, write); if (node.hasNode(JcrConstants.JCR_CONTENT)) { Node contentNode = node.getNode(JcrConstants.JCR_CONTENT); write.key(JcrConstants.JCR_LASTMODIFIED); Calendar cal = contentNode.getProperty(JcrConstants.JCR_LASTMODIFIED).getDate(); write.value(DateUtils.iso8601(cal)); write.key(JcrConstants.JCR_MIMETYPE); write.value(contentNode.getProperty(JcrConstants.JCR_MIMETYPE).getString()); if (contentNode.hasProperty(JcrConstants.JCR_DATA)) { write.key(JcrConstants.JCR_DATA); write.value(contentNode.getProperty(JcrConstants.JCR_DATA).getLength()); } } write.endObject(); }