X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FUploadAttachments.java;fp=org.argeo.slc.core%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FUploadAttachments.java;h=13cc519184888de33786e01285551d0ee8938c80;hb=a9b97cc33383ded70277f49aa287f84903334e70;hp=0000000000000000000000000000000000000000;hpb=d1298659fe6f179d1cbbc8c89f108a0bbc5b4edf;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/org/argeo/slc/core/execution/tasks/UploadAttachments.java b/org.argeo.slc.core/src/org/argeo/slc/core/execution/tasks/UploadAttachments.java new file mode 100644 index 000000000..13cc51918 --- /dev/null +++ b/org.argeo.slc.core/src/org/argeo/slc/core/execution/tasks/UploadAttachments.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2007-2012 Argeo GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.argeo.slc.core.execution.tasks; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.argeo.slc.SlcException; +import org.argeo.slc.core.attachment.Attachment; +import org.argeo.slc.core.attachment.AttachmentUploader; +import org.argeo.slc.core.attachment.AttachmentsEnabled; +import org.springframework.core.io.Resource; + +public class UploadAttachments implements Runnable { + private AttachmentUploader attachmentUploader; + private Attachment attachment = null; + private Resource resource = null; + private Map attachments = new HashMap(); + private List attachTo = new ArrayList(); + private Boolean newUuidPerExecution = true; + + public void run() { + if (attachment != null) { + if (resource == null) + throw new SlcException("A resource must be specified."); + uploadAndAdd(attachment, resource); + } + + for (Attachment attachmentT : attachments.keySet()) { + Resource resourceT = attachments.get(attachmentT); + uploadAndAdd(attachmentT, resourceT); + } + + } + + protected void uploadAndAdd(Attachment attachment, Resource resource) { + if (newUuidPerExecution) + attachment.setUuid(UUID.randomUUID().toString()); + attachmentUploader.upload(attachment, resource); + for (AttachmentsEnabled attachmentsEnabled : attachTo) { + attachmentsEnabled.addAttachment(attachment); + } + } + + public void setAttachmentUploader(AttachmentUploader attachmentUploader) { + this.attachmentUploader = attachmentUploader; + } + + public void setAttachments(Map attachments) { + this.attachments = attachments; + } + + public void setAttachTo(List attachTo) { + this.attachTo = attachTo; + } + + public void setAttachment(Attachment attachment) { + this.attachment = attachment; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + + public void setNewUuidPerExecution(Boolean newUuidPerExecution) { + this.newUuidPerExecution = newUuidPerExecution; + } + +}