package com.constellio.app.modules.rm.extensions; import com.constellio.app.api.extensions.DownloadContentVersionLinkExtension; import com.constellio.app.modules.rm.ui.components.content.ConstellioAgentLink; import com.constellio.app.modules.rm.ui.util.ConstellioAgentUtils; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.ui.entities.ContentVersionVO; import com.constellio.app.ui.entities.MetadataSchemaVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.components.content.DownloadContentVersionLink; import com.constellio.model.entities.records.wrappers.UserDocument; import com.vaadin.ui.Component; public class RMDownloadContentVersionLinkExtension implements DownloadContentVersionLinkExtension { @Override public Component getDownloadLink(RecordVO recordVO, ContentVersionVO contentVersionVO, String caption) { Component downloadLink; if (!isDocumentOrUserDocument(recordVO)) { // Do not enable agent for non-rm entities return null; } String agentURL = ConstellioAgentUtils.getAgentURL(recordVO, contentVersionVO); if (agentURL != null) { downloadLink = new ConstellioAgentLink(agentURL, recordVO, contentVersionVO, caption); } else { downloadLink = new DownloadContentVersionLink(contentVersionVO, caption); } return downloadLink; } private boolean isDocumentOrUserDocument(RecordVO recordVO) { String schemaType = getSchemaType(recordVO.getSchema()); return Document.SCHEMA_TYPE.equals(schemaType) || UserDocument.SCHEMA_TYPE.equals(schemaType); } private String getSchemaType(MetadataSchemaVO schema) { return schema.getCode().split("_")[0]; } }