package com.celements.filebase; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xwiki.component.annotation.Component; import org.xwiki.component.annotation.Requirement; import org.xwiki.model.reference.AttachmentReference; import org.xwiki.model.reference.DocumentReference; import org.xwiki.script.service.ScriptService; import com.celements.filebase.exceptions.FileBaseLoadException; import com.celements.filebase.exceptions.FileNotExistsException; import com.celements.filebase.matcher.IAttachmentMatcher; import com.celements.rights.access.exceptions.NoAccessRightsException; import com.celements.web.plugin.cmd.TokenBasedUploadCommand; import com.celements.web.service.IWebUtilsService; import com.xpn.xwiki.XWikiException; import com.xpn.xwiki.api.Attachment; import com.xpn.xwiki.doc.XWikiAttachment; @Component("filebase") public class FileBaseScriptService implements ScriptService { @Requirement IWebUtilsService webUtilsService; private static Logger _LOGGER = LoggerFactory.getLogger(FileBaseScriptService.class); @Requirement IAttachmentServiceRole attachmentService; @Requirement(SingleDocFileBaseService.FILEBASE_SINGLE_DOC) IFileBaseServiceRole filebaseService; public String clearFileName(String fileName) { return attachmentService.clearFileName(fileName); } public int tokenBasedUpload(DocumentReference attachToDocRef, String fieldName, String userToken) { return tokenBasedUpload(attachToDocRef, fieldName, userToken, false); } public int tokenBasedUpload(DocumentReference attachToDocRef, String fieldName, String userToken, Boolean createIfNotExists) { try { return new TokenBasedUploadCommand().tokenBasedUploadDocRef(attachToDocRef, fieldName, userToken, createIfNotExists); } catch (XWikiException exp) { _LOGGER.error("token based attachment upload failed: ", exp); } return 0; } public int deleteAttachmentList(List<AttachmentReference> attachmentRefList) { return attachmentService.deleteAttachmentList(attachmentRefList); } public boolean existsFileNameEqual(String filename) throws FileBaseLoadException { return filebaseService.existsFileNameEqual(filename); } public Attachment getFileNameEqual(String filename) throws FileBaseLoadException { try { XWikiAttachment xwikiAtt = filebaseService.getFileNameEqual(filename); return attachmentService.getApiAttachment(xwikiAtt); } catch (FileNotExistsException e) { _LOGGER.trace("Filebase could not find file [" + filename + "]"); } catch (NoAccessRightsException nare) { _LOGGER.info("User {} was refused {} access on file base document {}", nare.getUser(), nare.getExpectedAccessLevel(), nare.getEntityRef()); } return null; } public List<Attachment> getFilesNameMatch(IAttachmentMatcher attMatcher) throws FileBaseLoadException { List<XWikiAttachment> xwikiAttList = filebaseService.getFilesNameMatch(attMatcher); List<Attachment> attList = new ArrayList<Attachment>(); for (XWikiAttachment xwikiAtt : xwikiAttList) { try { attList.add(attachmentService.getApiAttachment(xwikiAtt)); } catch (NoAccessRightsException nare) { _LOGGER.info("User {} was refused {} access on file base document {}", nare.getUser(), nare.getExpectedAccessLevel(), nare.getEntityRef()); } } return attList; } }