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;
public class UploadAttachments implements Runnable {
private AttachmentUploader attachmentUploader;
+ private Attachment attachment = null;
+ private Resource resource = null;
private Map<Attachment, Resource> attachments = new HashMap<Attachment, Resource>();
private List<AttachmentsEnabled> attachTo = new ArrayList<AttachmentsEnabled>();
+ private Boolean newUuidPerExecution = true;
public void run() {
- for (Attachment attachment : attachments.keySet()) {
- Resource resource = attachments.get(attachment);
- attachmentUploader.upload(attachment, resource);
- for (AttachmentsEnabled attachmentsEnabled : attachTo) {
- attachmentsEnabled.addAttachment(attachment);
- }
+ 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.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;
+ }
+
}