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];
}