FileIoDb.java 2.7 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
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("未实现");
	}
}