/** * Stores uploaded file in database. If there are several files, they are compressed into zip * archive (with filename = user_login.zip). * * @param user Owner of the attachment * @param files List of uploaded files to be saved into database * @return ID of attachment in the database or null if operation failed. */ @Override public Attachment uploadFiles(User user, List<ReshakaUploadedFile> files, String tags) { if (log.isTraceEnabled()) { log.trace(">> uploadFiles(): " + files); } if (!checkUploadRights(user)) { return null; } if (files.isEmpty()) { if (log.isDebugEnabled()) { log.debug("List of files is empty! Nothing to compress."); } return null; } try { Attachment att = prepareAttachment(user, files, tags); if (att.getSize() > MAX_ZIP_SIZE) { if (log.isTraceEnabled()) { log.trace("File too large!"); } throw new IOException("File too large."); } em.persist(att); Set<User> uset = new HashSet(); uset.add(user); att.setUser(uset); em.merge(att); if (log.isTraceEnabled()) { log.trace("<< uploadFiles(): " + att); } return att; } catch (Exception ex) { log.error("uploadFiles(): Failed to upload files. ", ex); return null; } }