package com.starcharge.component.datastore.fileio; import java.util.ArrayList; import java.util.List; import com.ihidea.core.support.exception.ServiceException; import com.starcharge.component.datastore.DataStoreService; import com.starcharge.component.datastore.dao.CptDataInfoMapper; import com.starcharge.component.datastore.dao.model.CptDataInfo; 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; /** * 存储数据库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; } @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<byte[]>(); //TODO 从数据库取出并解析 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("未实现"); } }