package com.starcharge.component.datastore.fileio; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import com.ihidea.core.support.exception.ServiceException; import com.ihidea.core.util.JSONUtilsEx; import com.starcharge.component.datastore.DataStoreService; import com.starcharge.component.datastore.dao.model.CptDataStore; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; /** * 七牛云存储 * 暂未集成, 参考官方文档 https://developer.qiniu.com/kodo/sdk/1239/java */ @Component @Lazy public class FileIoQiniu implements IFileIo { private static Log logger = LogFactory.getLog(FileIoQiniu.class); @Autowired private DataStoreService dataStoreService; /** * 保存到存储路径 */ @Override public void save(FileIoEntity entity) { saveFile(entity.getDataInfo().getId(), entity.getContent(), entity.getDataInfo().getStoreName()); } /** * 保存到备份存储路径 */ @Override public void saveBak(FileIoEntity entity) { throw new ServiceException("未实现"); } private static Map<String, Map<String, String>> bucketMap = new HashMap<String, Map<String, String>>(); @SuppressWarnings("unchecked") private synchronized Map<String, String> initBucketInfo(String storeName) { CptDataStore cptDataStore = dataStoreService.getInfoByName(storeName); Map<String, String> bucketInfo = JSONUtilsEx.deserialize(cptDataStore.getPath(), Map.class); bucketMap.put(storeName, bucketInfo); return bucketInfo; } /** * 持久化 */ private void saveFile(String id, InputStream is, String storeName) { //TODO 集成上传 } private void saveFile(String id, byte[] content, String storeName) { try { InputStream is = new ByteArrayInputStream(content); saveFile(id, is, storeName); } catch (Exception e) { throw new ServiceException("云存储上传出现异常:" + e.getMessage(), e); } } public boolean remove(String id, String sotreName) { //TODO 集成删除 return false; } @Override public boolean remove(FileIoEntity entity) { return remove(entity.getDataInfo().getId(), entity.getDataInfo().getStoreName()); } @Override public byte[] get(String id) { return null; } @Override public void execute(FileIoEntity fileIoEntity, IFileInputStream fileInputStreamImpl) throws Exception { throw new ServiceException("未实现"); } /** * 先删除,后上传 */ @Override public void updateContent(String id, byte[] content) { throw new ServiceException("未实现"); } }