package logbook.config;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import logbook.constants.AppConstants;
import logbook.data.context.GlobalContext;
import logbook.dto.DeckMissionDto;
import logbook.dto.ItemDto;
import logbook.internal.CondTiming;
import logbook.internal.LoggerHolder;
import logbook.util.BeanUtils;
/**
* ユーザーゲームデータを保存・復元します
*
*/
public class UserDataConfig {
/** ロガー */
private static final LoggerHolder LOG = new LoggerHolder(UserDataConfig.class);
private List<ItemDto> items;
private DeckMissionDto[] previousMissions;
private CondTiming.TimeSpan condTiming;
private Date akashiStartTime;
/**
* ユーザーゲームデータをファイルに書き込みます
*/
public static void store() throws IOException {
UserDataConfig config = new UserDataConfig();
config.items = new ArrayList<ItemDto>(GlobalContext.getItemMap().values());
config.previousMissions = GlobalContext.getPreviousMissions();
config.condTiming = GlobalContext.getCondTiming().getUpdateTiming();
config.akashiStartTime = GlobalContext.getAkashiTimer().getStartTime();
BeanUtils.writeObject(AppConstants.USER_DATA_CONFIG, config);
}
/**
* ユーザーゲームデータをファイルから読み込みます
*
* @param properties
* @return
*/
public static void load() {
try {
UserDataConfig config = BeanUtils.readObject(AppConstants.USER_DATA_CONFIG, UserDataConfig.class);
if (config != null) {
GlobalContext.load(config);
}
} catch (Exception e) {
LOG.get().warn("ユーザーゲームデータファイルから読み込みますに失敗しました", e);
}
}
/**
* @return items
*/
public List<ItemDto> getItems() {
return this.items;
}
/**
* @param items セットする items
*/
public void setItems(List<ItemDto> items) {
this.items = items;
}
/**
* @return previousMissions
*/
public DeckMissionDto[] getPreviousMissions() {
return this.previousMissions;
}
/**
* @param previousMissions セットする previousMissions
*/
public void setPreviousMissions(DeckMissionDto[] previousMissions) {
this.previousMissions = previousMissions;
}
/**
* @return condTiming
*/
public CondTiming.TimeSpan getCondTiming() {
return this.condTiming;
}
/**
* @param condTiming セットする condTiming
*/
public void setCondTiming(CondTiming.TimeSpan condTiming) {
this.condTiming = condTiming;
}
/**
* @return akashiStartTime
*/
public Date getAkashiStartTime() {
return akashiStartTime;
}
/**
* @param akashiStartTime セットする akashiStartTime
*/
public void setAkashiStartTime(Date akashiStartTime) {
this.akashiStartTime = akashiStartTime;
}
}