package cc.blynk.utils;
import cc.blynk.server.core.reporting.average.AggregationKey;
import cc.blynk.server.core.reporting.average.AggregationValue;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 04.09.15.
*/
public class ReportingUtil {
private final static Logger log = LogManager.getLogger(ReportingUtil.class);
public static String getReportingFolder(String dataFolder) {
return Paths.get(dataFolder, "data").toString();
}
@SuppressWarnings("unchecked")
public static ConcurrentHashMap<AggregationKey, AggregationValue> read(Path path) {
if (Files.exists(path)) {
try (InputStream is = Files.newInputStream(path);
ObjectInputStream objectinputstream = new ObjectInputStream(is)) {
return (ConcurrentHashMap<AggregationKey, AggregationValue>) objectinputstream.readObject();
} catch (Exception e) {
log.error(e);
}
}
return new ConcurrentHashMap<>();
}
public static void write(Path path, Map<AggregationKey, AggregationValue> map) {
if (map.size() > 0) {
try (OutputStream os = Files.newOutputStream(path);
ObjectOutputStream oos = new ObjectOutputStream(os)) {
oos.writeObject(map);
} catch (Exception e) {
log.error(e);
}
}
}
}