Java Examples for com.day.cq.tagging.Tag
The following java examples will help you to understand the usage of com.day.cq.tagging.Tag. These source code samples are taken from different open source projects.
Example 1
| Project: jackalope-master File: PageImpl.java View source code |
@Override public com.day.cq.tagging.Tag[] getTags() { if (tagCache != null) return tagCache; Resource contentResource = getContentResource(); TagManager tagManager = contentResource.getResourceResolver().adaptTo(TagManager.class); tagCache = tagManager == null ? new Tag[0] : tagManager.getTags(contentResource); return tagCache; }
Example 2
| Project: com.activecq.samples-master File: LocalizedTagTitleExtractorProcessWorkflow.java View source code |
/**
* Work flow execute method *
*/
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
boolean useUpstream = true;
boolean useDownstream = true;
final WorkflowData workflowData = workItem.getWorkflowData();
final String type = workflowData.getPayloadType();
// Check if the payload is a path in the JCR
if (!StringUtils.equals(type, "JCR_PATH")) {
return;
}
Session session = workflowSession.getSession();
// Get the path to the JCR resource from the payload
String path = workflowData.getPayload().toString();
// Get a ResourceResolver using the same permission set as the Workflow's executing Session
ResourceResolver resolver = null;
Map<String, Object> authInfo = new HashMap<String, Object>();
authInfo.put(JcrResourceConstants.AUTHENTICATION_INFO_SESSION, session);
// Initialize some variables
List<String> newTagTitles = new ArrayList<String>();
List<String> newUpstreamTagTitles = new ArrayList<String>();
List<String> newDownstreamTagTitles = new ArrayList<String>();
Locale locale = null;
try {
// Get the Workflow Sessions' resource resolver using the authInfo created above
resolver = resourceResolverFactory.getResourceResolver(authInfo);
// Get the Resource representing the WF payload
final Resource resource = resolver.getResource(path);
// Get the TagManager (using the same permission level as the Workflow's Session)
final TagManager tagManager = resolver.adaptTo(TagManager.class);
// Use custom implementation to find the resource to look for cq:tags and write the
// custom property "tag-titles" to
final Resource contentResource = getContentResource(resource);
if (contentResource == null) {
log.error("Could not find a valid content resource node for payload: {}", resource.getPath());
return;
}
// Gain access to the content resournce's properties
final ValueMap properties = contentResource.adaptTo(ValueMap.class);
// Get the full tag paths (namespace:path/to/tag) from the content resource
// This only works on the cq:tags property
final Tag[] tags = tagManager.getTags(contentResource);
// Get any previously applied Localized Tag Titles.
// This is used to determine if changes if any updates are needed to this node.
final String[] previousTagTitles = properties.get(PROPERTY_TAG_TITLES, new String[] {});
if (!ArrayUtils.isEmpty(tags)) {
// Derive the locale
if (DamUtil.isAsset(resource)) {
// Dam assets use path segments to derive the locale (/content/dam/us/en/...)
locale = getLocaleFromPath(resource);
} else {
// Page's use the jcr:language property accessed via the CQ Page API
Page page = resource.adaptTo(Page.class);
if (page != null) {
locale = page.getLanguage(true);
}
}
// This does not remove duplicate titles (different tag trees could repeat titles)
if (useUpstream) {
newUpstreamTagTitles = tagsToUpstreamLocalizedTagTitles(tags, locale, tagManager);
newTagTitles.addAll(newUpstreamTagTitles);
}
if (useDownstream) {
newDownstreamTagTitles = tagsToDownstreamLocalizedTagTitles(tags, locale, tagManager, new ArrayList<String>(), 0);
newTagTitles.addAll(newDownstreamTagTitles);
}
if (!useUpstream && !useDownstream) {
newTagTitles.addAll(tagsToLocalizedTagTitles(tags, locale));
}
}
try {
// Get the node in the JCR the payload points to
final Node node = session.getNode(contentResource.getPath());
// If the currently applied Tag Titles are the same as the derived Tag titles then skip!
if (!isSame(newTagTitles.toArray(new String[] {}), previousTagTitles)) {
// If changes have been made to the Tag Names, then apply to the tag-titles property
// on the content resource.
node.setProperty(PROPERTY_TAG_TITLES, newUpstreamTagTitles.toArray(new String[newUpstreamTagTitles.size()]));
} else {
log.debug("No change in Tag Titles. Do not update this content resource.");
}
} catch (PathNotFoundException ex) {
log.error(ex.getMessage());
} catch (RepositoryException ex) {
log.error(ex.getMessage());
}
} catch (LoginException ex) {
log.error(ex.getMessage());
} finally {
// Clean up after yourself please!!!
if (resolver != null) {
resolver.close();
resolver = null;
}
}
}Example 3
| Project: acs-aem-tools-master File: TagMakerServlet.java View source code |
@Override
protected final void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
final JSONObject jsonResponse = new JSONObject();
final TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class);
final RequestParameter charsetParam = request.getRequestParameter("charset");
final RequestParameter cleanParam = request.getRequestParameter("clean");
final RequestParameter delimiterParam = request.getRequestParameter("delimiter");
final RequestParameter fileParameter = request.getRequestParameter("file");
final RequestParameter separatorParam = request.getRequestParameter("separator");
final RequestParameter converterParam = request.getRequestParameter("converter");
final RequestParameter fallbackConverterParam = request.getRequestParameter("fallbackConverter");
boolean clean = DEFAULT_CLEAN;
if (cleanParam != null) {
clean = Boolean.valueOf(StringUtils.defaultIfEmpty(cleanParam.toString(), String.valueOf(DEFAULT_CLEAN)));
}
String converter = DEFAULT_CONVERTER;
if (converterParam != null) {
converter = StringUtils.defaultIfEmpty(converterParam.toString(), DEFAULT_CONVERTER);
}
String fallbackConverter = NONE_CONVERTER;
if (fallbackConverterParam != null) {
fallbackConverter = StringUtils.defaultIfEmpty(fallbackConverterParam.toString(), NONE_CONVERTER);
}
String charset = DEFAULT_CHARSET;
if (charsetParam != null) {
charset = StringUtils.defaultIfEmpty(charsetParam.toString(), DEFAULT_CHARSET);
}
Character delimiter = null;
if (delimiterParam != null && StringUtils.isNotBlank(delimiterParam.toString())) {
delimiter = delimiterParam.toString().charAt(0);
}
Character separator = null;
if (separatorParam != null && StringUtils.isNotBlank(separatorParam.toString())) {
separator = separatorParam.toString().charAt(0);
}
final List<TagDataConverter> tagDataConverters = new ArrayList<TagDataConverter>();
final TagDataConverter primaryTagConverter = this.getTagDataConverter(converter);
if (primaryTagConverter != null) {
tagDataConverters.add(primaryTagConverter);
}
final TagDataConverter fallbackTagConverter = this.getTagDataConverter(fallbackConverter);
if (fallbackTagConverter != null) {
tagDataConverters.add(fallbackTagConverter);
}
if (tagDataConverters.isEmpty()) {
log.error("Could not find Tag Data Converter [ {} ]", converter);
response.setStatus(SlingHttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} else if (fileParameter != null && fileParameter.getInputStream() != null) {
InputStream is = fileParameter.getInputStream();
final Csv csv = new Csv();
if (delimiter != null) {
log.debug("Setting Field Delimiter to [ {} ]", delimiter);
csv.setFieldDelimiter(delimiter);
}
if (separator != null) {
log.debug("Setting Field Separator to [ {} ]", separator);
csv.setFieldSeparatorRead(separator);
}
if (clean) {
is = this.stripLineEnds(is, charset, csv.getFieldSeparatorRead());
}
final Iterator<String[]> rows = csv.read(is, charset);
try {
request.getResourceResolver().adaptTo(Session.class).getWorkspace().getObservationManager().setUserData("acs-aem-tools.tag-maker");
final List<String> result = this.makeTags(tagManager, tagDataConverters, rows);
try {
jsonResponse.put("tagIds", result);
} catch (JSONException e) {
log.error("Could not serialized Tag Maker results into JSON", e);
}
this.addMessage(jsonResponse, result.size() + " tags were processed");
} catch (InvalidTagFormatException e) {
log.error("Could not create Tag due to illegal formatting", e);
this.addMessage(jsonResponse, "Could not create tags due to illegal formatting");
response.setStatus(SlingHttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} catch (RepositoryException e) {
log.error("Could not save Tags to JCR", e);
this.addMessage(jsonResponse, "Could not save tags");
response.setStatus(SlingHttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
} else {
log.error("Could not find CSV file in request.");
this.addMessage(jsonResponse, "CSV file is missing");
response.setStatus(SlingHttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
response.getWriter().print(jsonResponse.toString());
}Example 4
| Project: wcm-io-wcm-master File: SlingFolderVirtualPage.java View source code |
@Override public Tag[] getTags() { return new Tag[0]; }