use of com.agiletec.plugins.jacms.aps.system.services.content.model.CmsAttributeReference in project entando-core by entando.
the class BaseContentGroupBulkCommand method checkContentReferences.
protected boolean checkContentReferences(Content content) {
List<Lang> systemLangs = this.getSystemLangs();
IPageManager pageManager = this.getPageManager();
SymbolicLinkValidator validator = new SymbolicLinkValidator(this.getApplier(), pageManager);
for (AttributeInterface attribute : content.getAttributeList()) {
if (attribute instanceof IReferenceableAttribute) {
List<CmsAttributeReference> references = ((IReferenceableAttribute) attribute).getReferences(systemLangs);
if (references != null) {
for (CmsAttributeReference reference : references) {
SymbolicLink symbolicLink = this.convertToSymbolicLink(reference);
if (symbolicLink != null) {
String result = validator.scan(symbolicLink, content);
if (ICmsAttributeErrorCodes.INVALID_CONTENT_GROUPS.equals(result) || ICmsAttributeErrorCodes.INVALID_RESOURCE_GROUPS.equals(result) || ICmsAttributeErrorCodes.INVALID_PAGE_GROUPS.equals(result)) {
return false;
}
}
}
}
}
}
return true;
}
use of com.agiletec.plugins.jacms.aps.system.services.content.model.CmsAttributeReference in project entando-core by entando.
the class ContentInspectionAction method getReferencedContentsId.
/**
* Return the list of the id of the referenced contents
* @return The list of content id.
*/
public List<String> getReferencedContentsId() {
List<String> referencedContentsId = new ArrayList<String>();
try {
Content content = this.getContent();
if (null == content)
return referencedContentsId;
EntityAttributeIterator attributeIter = new EntityAttributeIterator(content);
while (attributeIter.hasNext()) {
AttributeInterface currAttribute = (AttributeInterface) attributeIter.next();
if (currAttribute instanceof IReferenceableAttribute) {
IReferenceableAttribute cmsAttribute = (IReferenceableAttribute) currAttribute;
List<CmsAttributeReference> refs = cmsAttribute.getReferences(this.getLangs());
for (int scanRefs = 0; scanRefs < refs.size(); scanRefs++) {
CmsAttributeReference ref = refs.get(scanRefs);
String contentId = ref.getRefContent();
if (null == contentId)
continue;
if (!referencedContentsId.contains(contentId))
referencedContentsId.add(contentId);
}
}
}
} catch (Throwable t) {
_logger.error("Error getting referenced contents id by content {}", this.getContentId(), t);
String msg = "Error getting referenced contents id by content " + this.getContentId();
throw new RuntimeException(msg, t);
}
return referencedContentsId;
}
use of com.agiletec.plugins.jacms.aps.system.services.content.model.CmsAttributeReference in project entando-core by entando.
the class ContentInspectionAction method getReferencedPages.
public List<IPage> getReferencedPages() {
List<IPage> referencedPages = new ArrayList<IPage>();
try {
Content content = this.getContent();
if (null == content)
return referencedPages;
EntityAttributeIterator attributeIter = new EntityAttributeIterator(content);
while (attributeIter.hasNext()) {
AttributeInterface currAttribute = (AttributeInterface) attributeIter.next();
if (currAttribute instanceof IReferenceableAttribute) {
IReferenceableAttribute cmsAttribute = (IReferenceableAttribute) currAttribute;
List<CmsAttributeReference> refs = cmsAttribute.getReferences(this.getLangs());
for (int scanRefs = 0; scanRefs < refs.size(); scanRefs++) {
CmsAttributeReference ref = refs.get(scanRefs);
if (null == ref.getRefPage())
continue;
IPage page = this.getPageManager().getOnlinePage(ref.getRefPage());
if (null == page)
continue;
if (!referencedPages.contains(page)) {
referencedPages.add(page);
}
}
}
}
} catch (Throwable t) {
_logger.error("Error getting referenced pages by content {}", this.getContentId(), t);
String msg = "Error getting referenced pages by content " + this.getContentId();
throw new RuntimeException(msg, t);
}
return referencedPages;
}
use of com.agiletec.plugins.jacms.aps.system.services.content.model.CmsAttributeReference in project entando-core by entando.
the class AbstractResourceAttribute method getReferences.
@Override
public List<CmsAttributeReference> getReferences(List<Lang> systemLangs) {
List<CmsAttributeReference> refs = new ArrayList<>();
for (int i = 0; i < systemLangs.size(); i++) {
Lang lang = systemLangs.get(i);
ResourceInterface res = this.getResource(lang.getCode());
if (null != res) {
CmsAttributeReference ref = new CmsAttributeReference(null, null, res.getId());
refs.add(ref);
}
}
return refs;
}
use of com.agiletec.plugins.jacms.aps.system.services.content.model.CmsAttributeReference in project entando-core by entando.
the class CmsHypertextAttribute method getReferences.
@Override
public List<CmsAttributeReference> getReferences(List<Lang> systemLangs) {
List<CmsAttributeReference> refs = new ArrayList<>();
for (Lang lang : systemLangs) {
String text = this.getTextMap().get(lang.getCode());
List<SymbolicLink> links = HypertextAttributeUtil.getSymbolicLinksOnText(text);
if (null != links && !links.isEmpty()) {
for (SymbolicLink symbLink : links) {
if (symbLink.getDestType() != SymbolicLink.URL_TYPE) {
CmsAttributeReference ref = new CmsAttributeReference(symbLink.getPageDest(), symbLink.getContentDest(), symbLink.getResourceDest());
refs.add(ref);
}
}
}
}
return refs;
}
Aggregations