Java tutorial
/** * Copyright (c) 2012-2014 http://www.eryansky.com * <p/> * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.eryansky.modules.disk.service; import com.eryansky.common.exception.ServiceException; import com.eryansky.common.orm.entity.StatusState; import com.eryansky.common.orm.hibernate.Parameter; import com.eryansky.common.utils.collections.Collections3; import com.eryansky.modules.disk.extend.IFileManager; import com.eryansky.common.utils.io.FileUtils; import com.eryansky.core.security.SessionInfo; import com.eryansky.core.web.upload.FileUploadUtils; import com.eryansky.modules.disk.entity.File; import com.eryansky.modules.disk.entity.Folder; import com.eryansky.modules.disk.entity._enum.FolderAuthorize; import com.eryansky.modules.disk.utils.DiskUtils; import com.eryansky.utils.AppConstants; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.FileOutputStream; import java.util.List; /** * @author &Eryan eryanwcp@gmail.com * @date 2014-12-10 */ @Service public class DiskManager { @Autowired private FolderManager folderManager; @Autowired private FileManager fileManager; @Autowired private IFileManager iFileManager; /** * ??? ? * <br/>? * @param code ? * @return */ public Folder checkSystemFolderByCode(String code) { Validate.notBlank(code, "?[code]?null."); Parameter parameter = new Parameter(StatusState.NORMAL.getValue(), FolderAuthorize.SysTem.getValue(), code); StringBuffer hql = new StringBuffer(); hql.append("from Folder f where f.status = :p1 and f.folderAuthorize = :p2 and f.code = :p3"); List<Folder> list = folderManager.getEntityDao().find(hql.toString(), parameter); Folder folder = list.isEmpty() ? null : list.get(0); if (folder == null) { folder = new Folder(); folder.setFolderAuthorize(FolderAuthorize.SysTem.getValue()); folder.setCode(code); folderManager.saveOrUpdate(folder); } return folder; } /** * ??? ? * <br/>? * @param code ? * @param userId ID * @return */ public Folder checkSystemFolderByCode(String code, String userId) { Validate.notBlank(code, "?[code]?null."); Validate.notNull(userId, "?[userId]?null."); Parameter parameter = new Parameter(StatusState.NORMAL.getValue(), FolderAuthorize.SysTem.getValue(), code, userId); StringBuffer hql = new StringBuffer(); hql.append( "from Folder f where f.status = :p1 and f.folderAuthorize = :p2 and f.code = :p3 and f.userId = :p4"); List<Folder> list = folderManager.getEntityDao().find(hql.toString(), parameter); Folder folder = list.isEmpty() ? null : list.get(0); if (folder == null) { folder = new Folder(); folder.setFolderAuthorize(FolderAuthorize.SysTem.getValue()); folder.setCode(code); folder.setUserId(userId); folderManager.saveOrUpdate(folder); } return folder; } /** * ? * @param folderCode * @param file * @return */ public File saveSystemFile(String folderCode, File file) { Validate.notBlank(folderCode, "?[folderCode]?null."); Validate.notNull(file, "?[file]?null."); Folder folder = checkSystemFolderByCode(folderCode); file.setFolder(folder); fileManager.save(file); return file; } /** * ? * @param fileId ID * @return */ public File getFileById(String fileId) { Validate.notNull(fileId, "?[fileId]?null."); return fileManager.loadById(fileId); } /** * ? * @param file * @return */ public File saveFile(File file) { Validate.notNull(file, "?[file]?null."); fileManager.save(file); return file; } /** * * @param file * @return */ public File updateFile(File file) { Validate.notNull(file, "?[file]?null."); fileManager.update(file); return file; } /** * * @param file * @return */ public void deleteFile(File file) { Validate.notNull(file, "?[file]?null."); fileManager.deleteFile(file.getId()); } /** * * @param fileId */ public void deleteFile(String fileId) { Validate.notNull(fileId, "?[fileId]?null."); fileManager.deleteFile(fileId); } /** * ?ID * @param fileIds ID? * @return */ public List<File> findFilesByIds(List<String> fileIds) { Validate.notEmpty(fileIds, "?[fileIds]?null."); if (Collections3.isNotEmpty(fileIds)) { return fileManager.findFilesByIds(fileIds); } else { return null; } } /** * * @param sessionInfo * @param folder * @param uploadFile * @throws Exception */ public File fileUpload(SessionInfo sessionInfo, Folder folder, MultipartFile uploadFile) throws Exception { File file = null; /* Exception exception = null; */ java.io.File tempFile = null; try { String relativeDir = DiskUtils.getRelativePath(folder, sessionInfo.getUserId()); String fullName = uploadFile.getOriginalFilename(); String code = FileUploadUtils.encodingFilenamePrefix(sessionInfo.getUserId().toString(), fullName); String storePath = iFileManager.getStorePath(folder, sessionInfo.getUserId(), uploadFile.getOriginalFilename()); String fileTemp = AppConstants.getDiskTempDir() + java.io.File.separator + code; tempFile = new java.io.File(fileTemp); FileOutputStream fos = FileUtils.openOutputStream(tempFile); IOUtils.copy(uploadFile.getInputStream(), fos); iFileManager.saveFile(storePath, fileTemp, false); file = new File(); file.setFolder(folder); file.setCode(code); file.setUserId(sessionInfo.getUserId()); file.setName(fullName); file.setFilePath(storePath); file.setFileSize(uploadFile.getSize()); file.setFileSuffix(FilenameUtils.getExtension(fullName)); fileManager.save(file); } catch (Exception e) { // exception = e; throw new ServiceException(DiskUtils.UPLOAD_FAIL_MSG + e.getMessage(), e); } finally { // if (exception != null && file != null) { // DiskUtils.deleteFile(null, file.getId()); // } if (tempFile != null && tempFile.exists()) { tempFile.delete(); } } return file; } }