/* * Gets the Author Tag for a specific topic */ public RESTTagV1 getAuthorForTopic(final int topicId, final Integer rev) { if (rev == null) { final List<RESTTagV1> tags = this.getTagsByTopicId(topicId); if (tags != null) { for (RESTTagV1 tag : tags) { if (ComponentTagV1.containedInCategory(tag, CSConstants.WRITER_CATEGORY_ID)) return tag; } } } else { final RESTTopicV1 topic = this.getTopicById(topicId, rev); if (topic != null) { for (RESTTopicV1 topicRevision : topic.getRevisions().getItems()) { if (topicRevision.getRevision().equals(rev)) { List<RESTTagV1> writerTags = ComponentBaseTopicV1.returnTagsInCategoriesByID( topicRevision, CollectionUtilities.toArrayList(CSConstants.WRITER_CATEGORY_ID)); if (writerTags.size() == 1) return writerTags.get(0); break; } } } } return null; }
/* * Gets a list of Revision's from the CSProcessor database for a specific * content spec */ public List<Object[]> getContentSpecRevisionsById(final Integer csId) { final List<Object[]> results = new ArrayList<Object[]>(); try { final List<String> additionalKeys = CollectionUtilities.toArrayList("revision", "topic" + csId); final BaseRestCollectionV1<RESTTopicV1, RESTTopicCollectionV1> topicRevisions; if (collectionsCache.containsKey(RESTTopicV1.class, additionalKeys)) { topicRevisions = collectionsCache.get(RESTTopicV1.class, RESTTopicCollectionV1.class, additionalKeys); } else { /* We need to expand the Revisions collection */ final ExpandDataTrunk expand = new ExpandDataTrunk(); final ExpandDataTrunk expandTags = new ExpandDataTrunk(new ExpandDataDetails("tags")); final ExpandDataTrunk expandRevs = new ExpandDataTrunk(new ExpandDataDetails("revisions")); expandTags.setBranches( CollectionUtilities.toArrayList( new ExpandDataTrunk(new ExpandDataDetails("categories")))); expandRevs.setBranches( CollectionUtilities.toArrayList( expandTags, new ExpandDataTrunk(new ExpandDataDetails("sourceUrls")), new ExpandDataTrunk(new ExpandDataDetails("properties")), new ExpandDataTrunk(new ExpandDataDetails("outgoingRelationships")), new ExpandDataTrunk(new ExpandDataDetails("incomingRelationships")))); expand.setBranches(CollectionUtilities.toArrayList(expandTags, expandRevs)); final String expandString = mapper.writeValueAsString(expand); // final String expandEncodedString = URLEncoder.encode(expandString, "UTF-8"); final RESTTopicV1 topic = client.getJSONTopic(csId, expandString); // Check that the topic is a content spec if (!ComponentBaseTopicV1.hasTag(topic, CSConstants.CONTENT_SPEC_TAG_ID)) return null; // Add the content spec revisions to the cache collectionsCache.add(RESTTopicV1.class, topic.getRevisions(), additionalKeys, true); topicRevisions = topic.getRevisions(); } // Create the unique array from the revisions if (topicRevisions != null && topicRevisions.getItems() != null) { for (RESTTopicV1 topicRev : topicRevisions.getItems()) { Object[] revision = new Object[2]; revision[0] = topicRev.getRevision(); revision[1] = topicRev.getLastModified(); results.add(revision); } } return results; } catch (Exception e) { log.error(ExceptionUtilities.getStackTrace(e)); } return null; }
/* * Gets a ContentSpec tuple for a specified id. */ public RESTTopicV1 getContentSpecById( final int id, final Integer rev, final boolean expandTranslations) { final RESTTopicV1 cs = getTopicById(id, rev, expandTranslations); if (cs == null) return null; final List<RESTTagV1> topicTypes = ComponentBaseTopicV1.returnTagsInCategoriesByID( cs, CollectionUtilities.toArrayList(CSConstants.TYPE_CATEGORY_ID)); for (final RESTTagV1 type : topicTypes) { if (type.getId().equals(CSConstants.CONTENT_SPEC_TAG_ID)) { return cs; } } return null; }
/* * Gets a ContentSpec tuple for a specified id. */ public RESTTranslatedTopicV1 getTranslatedContentSpecById( final int id, final Integer rev, final String locale) { if (locale == null) return null; final RESTTopicV1 cs = getTopicById(id, rev, true); if (cs == null) return null; final List<RESTTagV1> topicTypes = ComponentBaseTopicV1.returnTagsInCategoriesByID( cs, CollectionUtilities.toArrayList(CSConstants.TYPE_CATEGORY_ID)); if (cs.getTranslatedTopics_OTM() != null && cs.getTranslatedTopics_OTM().getItems() != null) { for (final RESTTagV1 type : topicTypes) { if (type.getId().equals(CSConstants.CONTENT_SPEC_TAG_ID)) { for (final RESTTranslatedTopicV1 topic : cs.getTranslatedTopics_OTM().getItems()) { if (topic.getLocale().equals(locale)) return topic; } } } } return null; }