package com.boco.nbd.wios.downloadfile.fileio; import com.boco.nbd.wios.downloadfile.mapper.def.CptDataInfoMapper; import com.boco.nbd.wios.downloadfile.model.CptDataInfo; import com.boco.nbd.wios.downloadfile.service.DataStoreService; import com.ihidea.core.support.exception.ServiceException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; /** * 存储数据库IO(不推荐使用) */ @Component class FileIoDb implements IFileIo { private Log logger = LogFactory.getLog(FileIoDb.class); @Autowired private DataStoreService dataStoreService; @Autowired private CptDataInfoMapper dataInfoDao; @Autowired private JdbcTemplate jdbcTemplate; /** * 保存到存储路径 */ @Override public void save(FileIoEntity entity) { saveFile(entity.getDataInfo().getId(), entity.getContent(), dataStoreService.getInfoByName(entity.getDataInfo().getStoreName()).getPath()); } /** * 保存到备份存储路径 */ @Override public void saveBak(FileIoEntity entity) { saveFile(entity.getDataInfo().getId(), entity.getContent(), dataStoreService.getInfoByName(entity.getDataInfo().getStoreName()).getBakPath()); } /** * 持久化 */ private void saveFile(final String id, final byte[] content, String storePath) { //TODO 序列化后存入数据库 } @Override public boolean remove(FileIoEntity entity) { String storePath = dataStoreService.getInfoByName(entity.getDataInfo().getStoreName()).getPath(); try { jdbcTemplate.update("delete from " + storePath + " where id = ?", new Object[] { entity.getDataInfo().getId() }); } catch (Exception e) { logger.error(e.getMessage(), e); return false; } return true; } @Override @SuppressWarnings("unchecked") public byte[] get(String id) { CptDataInfo dataInfo = dataInfoDao.selectByPrimaryKey(id); String storePath = dataStoreService.getInfoByName(dataInfo.getStoreName()).getPath(); final List<byte[]> byteBody = new ArrayList<>(8); return byteBody.get(0); } @Override public void updateContent(final String id, final byte[] content) { CptDataInfo dataInfo = dataInfoDao.selectByPrimaryKey(id); String storePath = dataStoreService.getInfoByName(dataInfo.getStoreName()).getPath(); try { //TODo 序列化后更新 } catch (Exception e) { logger.error(e.getMessage(), e); } } @Override public void execute(FileIoEntity fileIoEntity, IFileInputStream fileInputStreamImpl) { throw new ServiceException("未实现"); } }