package com.google.code.joto.ui.filter; import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.code.joto.eventrecorder.predicate.RecordEventSummaryPredicateUtils; import com.google.code.joto.util.io.XStreamUtils; import com.thoughtworks.xstream.XStream; /** * */ public class RecordEventFilterFileUtils { private static Logger log = LoggerFactory.getLogger(RecordEventFilterFileUtils.class); public static XStream getXStream() { XStream xstream = new XStream(); registerDefaultXStreamAlias(xstream); return xstream; } public static void registerDefaultXStreamAlias(XStream res) { res.alias("eventFilter", RecordEventFilterFile.class); RecordEventSummaryPredicateUtils.registerDefaultXStreamAlias(res); } public static void saveFilterFile(RecordEventFilterFile filterFile) { XStream xstream = RecordEventFilterFileUtils.getXStream(); File file = filterFile.getPersistentFile(); if (file == null) { // "save as..." instead of "save" => prompt filename or generate unique file name? // file path attribute should be set for storing, generate a unique name... for(int i = 1; ; i++) { String testFileName = "tmp-filter-" + i + ".xml"; File testFile = new File(testFileName); if (!testFile.exists()) { file = testFile; break; } } filterFile.setPersistentFile(file); } XStreamUtils.toFile(xstream, filterFile, file); } public static void loadFilterFile(RecordEventFilterFile filterFile) { File file = filterFile.getPersistentFile(); if (file == null) { log.error("file is not set, can not reload"); return; } if (!file.exists()) { log.error("file not found, can not reload"); return; } XStream xstream = RecordEventFilterFileUtils.getXStream(); RecordEventFilterFile newModelData = (RecordEventFilterFile) XStreamUtils.fromFile(xstream, file); filterFile.set(newModelData); } }