package com.baidu.disconf.web.service.config.dao.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Service;
import com.baidu.disconf.core.common.constants.DisConfigTypeEnum;
import com.baidu.disconf.web.common.Constants;
import com.baidu.disconf.web.service.config.bo.Config;
import com.baidu.disconf.web.service.config.dao.ConfigDao;
import com.baidu.dsp.common.constant.DataFormatConstants;
import com.baidu.dsp.common.dao.AbstractDao;
import com.baidu.dsp.common.dao.Columns;
import com.baidu.dsp.common.form.RequestListBase.Page;
import com.baidu.dsp.common.utils.DaoUtils;
import com.baidu.ub.common.db.DaoPage;
import com.baidu.ub.common.db.DaoPageResult;
import com.baidu.unbiz.common.genericdao.operator.Match;
import com.baidu.unbiz.common.genericdao.operator.Modify;
import com.baidu.unbiz.common.genericdao.operator.Order;
import com.github.knightliao.apollo.utils.time.DateUtils;
/**
* @author liaoqiqi
* @version 2014-6-16
*/
@Service
public class ConfigDaoImpl extends AbstractDao<Long, Config> implements ConfigDao {
/**
*
*/
@Override
public Config getByParameter(Long appId, Long envId, String version, String key,
DisConfigTypeEnum disConfigTypeEnum) {
return findOne(new Match(Columns.APP_ID, appId), new Match(Columns.ENV_ID, envId),
new Match(Columns.VERSION, version), new Match(Columns.TYPE, disConfigTypeEnum.getType()),
new Match(Columns.NAME, key), new Match(Columns.STATUS, Constants.STATUS_NORMAL));
}
/**
*
*/
@Override
public List<Config> getConfByAppEnv(Long appId, Long envId) {
if (envId == null) {
return find(new Match(Columns.APP_ID, appId), new Match(Columns.STATUS, Constants.STATUS_NORMAL));
} else {
return find(new Match(Columns.APP_ID, appId), new Match(Columns.ENV_ID, envId),
new Match(Columns.STATUS, Constants.STATUS_NORMAL));
}
}
/**
*
*/
@Override
public DaoPageResult<Config> getConfigList(Long appId, Long envId, String version, Page page) {
DaoPage daoPage = DaoUtils.daoPageAdapter(page);
List<Match> matchs = new ArrayList<Match>();
matchs.add(new Match(Columns.APP_ID, appId));
matchs.add(new Match(Columns.ENV_ID, envId));
matchs.add(new Match(Columns.VERSION, version));
matchs.add(new Match(Columns.STATUS, Constants.STATUS_NORMAL));
return page2(matchs, daoPage);
}
/**
*
*/
@Override
public List<Config> getConfigList(Long appId, Long envId, String version, Boolean hasValue) {
List<Match> matchs = new ArrayList<Match>();
matchs.add(new Match(Columns.APP_ID, appId));
matchs.add(new Match(Columns.ENV_ID, envId));
matchs.add(new Match(Columns.VERSION, version));
matchs.add(new Match(Columns.STATUS, Constants.STATUS_NORMAL));
if (hasValue) {
return find(matchs, new ArrayList<Order>());
} else {
return findColumns(matchs, new String[] {Columns.CONFIG_ID, Columns.TYPE, Columns.NAME, Columns.CREATE_TIME
, Columns.UPDATE_TIME, Columns.STATUS, Columns.APP_ID, Columns.ENV_ID, Columns.VERSION});
}
}
/**
* @param configId
*/
@Override
public void deleteItem(Long configId) {
String curTime = DateUtils.format(new Date(), DataFormatConstants.COMMON_TIME_FORMAT);
List<Modify> modifyList = new ArrayList<Modify>();
modifyList.add(modify(Columns.STATUS, Constants.STATUS_DELETE));
modifyList.add(modify(Columns.UPDATE_TIME, curTime));
update(modifyList, match(Columns.CONFIG_ID, configId));
}
/**
*
*/
@Override
public void updateValue(Long configId, String value) {
// 时间
String curTime = DateUtils.format(new Date(), DataFormatConstants.COMMON_TIME_FORMAT);
List<Modify> modifyList = new ArrayList<Modify>();
modifyList.add(modify(Columns.VALUE, value));
modifyList.add(modify(Columns.UPDATE_TIME, curTime));
update(modifyList, match(Columns.CONFIG_ID, configId));
}
@Override
public String getValue(Long configId) {
Config config = get(configId);
return config.getValue();
}
}