/**
* http://auzll.iteye.com/
*/
package com.gengweibo.dao.mem;
import java.util.List;
import java.util.Map;
import com.gengweibo.dao.WeiboDao;
import com.gengweibo.weibo.IWeibo;
import com.google.inject.internal.Lists;
import com.google.inject.internal.Maps;
/**
* @author auzll@msn.com
* @since 2011-3-18
*/
public class WeiboDaoMemoryImpl implements WeiboDao {
private static final Map<String, List<IWeibo>> accountMap = Maps.newHashMap();
private static final Map<String, IWeibo> weiboMap = Maps.newHashMap();
public void save(IWeibo weibo) {
String accountId = weibo.getAccountId();
String weiboId = weibo.getWeiboId();
// 先尝试删除
delete(weiboId);
weiboMap.put(weiboId, weibo);
List<IWeibo> weiboList = accountMap.get(accountId);
if (null == weiboList) {
weiboList = Lists.newArrayList();
accountMap.put(accountId, weiboList);
}
weiboList.add(weibo);
}
public void delete(String weiboId) {
IWeibo weibo = weiboMap.get(weiboId);
if (null != weibo) {
weiboMap.remove(weiboId);
String accountId = weibo.getAccountId();
List<IWeibo> weiboList = accountMap.get(accountId);
if (null != weiboList && weiboList.size() > 0) {
int find = -1;
for (int i = 0; i < weiboList.size(); i++) {
IWeibo w = weiboList.get(i);
if (w.getWeiboId().equals(weiboId)) {
find = i;
break;
}
}
weiboList.remove(find);
}
}
}
public List<IWeibo> queryRelatedList(String weiboId) {
IWeibo weibo = weiboMap.get(weiboId);
if (null != weibo) {
return accountMap.get(weibo.getAccountId());
}
return null;
}
public void updateSyn(String weiboId, boolean synUpdate) {
IWeibo weibo = weiboMap.get(weiboId);
if (null != weibo) {
weibo.setSynUpdate(synUpdate);
}
}
}