package com.niklim.clicktrace.model.dao;
import java.io.IOException;
import java.util.List;
import com.google.common.base.Joiner;
import com.niklim.clicktrace.ErrorNotifier;
import com.niklim.clicktrace.model.Click;
import com.niklim.clicktrace.model.ScreenShot;
import com.niklim.clicktrace.model.Session;
import com.niklim.clicktrace.msg.ErrorMsgs;
import com.niklim.clicktrace.props.UserProperties;
import com.niklim.clicktrace.service.SessionManager;
/**
* Writes to {@link Session}'s properties file.
*/
public class SessionPropertiesWriter extends SessionPropertiesIO {
public SessionPropertiesWriter(Session session, UserProperties props) {
super(session, props);
}
public void clearShotProps(ScreenShot shot) {
props.clearProperty(shot.getFilename() + ".clicks");
props.clearProperty(shot.getFilename() + ".description");
props.clearProperty(shot.getFilename() + ".label");
save();
}
public void saveShotLabel(ScreenShot shot) {
saveSessionProperty(shot.getFilename() + SessionManager.PROP_SUFFIX_LABEL, shot.getLabel());
}
public void saveShotDescription(ScreenShot shot) {
saveSessionProperty(shot.getFilename() + SessionManager.PROP_SUFFIX_DESCRIPTION, shot.getDescription());
}
public void saveSessionDescription() {
saveSessionProperty(SessionManager.PROP_SESSION_DESCRIPTION, session.getDescription());
}
public void saveShotClicks(String shotFilename, List<Click> clicks) {
if (!clicks.isEmpty()) {
saveSessionProperty(shotFilename + SessionManager.PROP_SUFFIX_CLICKS, Click.getString(clicks));
}
}
public void saveOrdering(List<String> imgFilenames) {
saveSessionProperty(SessionManager.PROP_SESSION_ORDERING, Joiner.on(";").join(imgFilenames));
}
private void saveSessionProperty(String key, String value) {
props.setProperty(key, value);
save();
}
private void save() {
try {
props.save();
} catch (IOException e) {
log.error(ErrorMsgs.SESSION_SAVE_PROPS_ERROR, e);
ErrorNotifier.notify(ErrorMsgs.SESSION_SAVE_PROPS_ERROR);
}
}
}