#5 -- save metadata

This commit is contained in:
Anton Romanov 2021-07-29 10:40:44 +04:00
parent c8c53abdec
commit e3ce7c0647
3 changed files with 25 additions and 7 deletions

View File

@ -72,24 +72,31 @@ public class DbFileService implements DbService {
} }
@Override @Override
public boolean addSet(String key) { public void addSet(String key) {
TimeSeriesSet timeSeriesSet = new TimeSeriesSet(key); TimeSeriesSet timeSeriesSet = new TimeSeriesSet(key);
if (isTimeSeriesSetExists(timeSeriesSet)) { if (isTimeSeriesSetExists(timeSeriesSet)) {
throw new RuntimeException(String.format("Time series set %s already exists", timeSeriesSet.getKey())); throw new RuntimeException(String.format("Time series set %s already exists", timeSeriesSet.getKey()));
} else { } else {
return Paths.get(timeSeriesDbPath, timeSeriesSet.getKey()).toFile().mkdirs(); Paths.get(timeSeriesDbPath, timeSeriesSet.getKey()).toFile().mkdirs();
} }
} }
@Override @Override
public boolean addTimeSeries(TimeSeriesSet timeSeriesSet, TimeSeries timeSeries) throws IOException { public void addTimeSeries(TimeSeriesSet timeSeriesSet, TimeSeries timeSeries) throws IOException {
if (!isTimeSeriesSetExists(timeSeriesSet)) { if (!isTimeSeriesSetExists(timeSeriesSet)) {
addSet(timeSeriesSet.getKey()); addSet(timeSeriesSet.getKey());
} }
BufferedWriter writer = new BufferedWriter(new FileWriter(Paths.get(getSetPath(timeSeriesSet).getAbsolutePath(), timeSeries.getName() + ".csv").toFile())); BufferedWriter writer = new BufferedWriter(new FileWriter(Paths.get(getSetPath(timeSeriesSet).getAbsolutePath(), timeSeries.getName() + ".csv").toFile()));
writer.write(new UtilService().getTimeSeriesToDateValueString(timeSeries)); writer.write(new UtilService().getTimeSeriesToDateValueString(timeSeries));
writer.close(); writer.close();
return true; createMetaFile(timeSeriesSet, timeSeries);
}
private void createMetaFile(TimeSeriesSet timeSeriesSet, TimeSeries timeSeries) throws IOException {
TimeSeriesMeta timeSeriesMeta = new TimeSeriesMeta(timeSeries);
new ObjectMapper()
.writeValue(Paths.get(getSetPath(timeSeriesSet).getAbsolutePath(), timeSeries.getName() + ".csv.meta")
.toFile(), timeSeriesMeta);
} }
@Override @Override
@ -138,7 +145,7 @@ public class DbFileService implements DbService {
} }
private List<File> getTimeSeriesMetaFiles(TimeSeriesSet timeSeriesSet) { private List<File> getTimeSeriesMetaFiles(TimeSeriesSet timeSeriesSet) {
return Arrays.asList(getSetPath(timeSeriesSet).listFiles(f -> f.getName().endsWith(".meta"))); return Arrays.asList(getSetPath(timeSeriesSet).listFiles(f -> f.getName().endsWith(".csv.meta")));
} }
private File getTimeSeriesFile(TimeSeriesSet timeSeriesSet, String timeSeriesKey) { private File getTimeSeriesFile(TimeSeriesSet timeSeriesSet, String timeSeriesKey) {

View File

@ -20,9 +20,9 @@ public interface DbService {
TimeSeries getTimeSeries(TimeSeriesSet timeSeriesSet, String timeSeriesKey) throws IOException; TimeSeries getTimeSeries(TimeSeriesSet timeSeriesSet, String timeSeriesKey) throws IOException;
boolean addSet(String key); void addSet(String key);
boolean addTimeSeries(TimeSeriesSet timeSeriesSet, TimeSeries timeSeries) throws IOException; void addTimeSeries(TimeSeriesSet timeSeriesSet, TimeSeries timeSeries) throws IOException;
void deleteTimeSeries(TimeSeriesSet set, String timeSeriesKey) throws IOException; void deleteTimeSeries(TimeSeriesSet set, String timeSeriesKey) throws IOException;

View File

@ -6,11 +6,22 @@
package ru.ulstu.db.model; package ru.ulstu.db.model;
import ru.ulstu.datamodel.ts.TimeSeries;
public class TimeSeriesMeta { public class TimeSeriesMeta {
private String key; private String key;
private int size; private int size;
private boolean hasDateTime; private boolean hasDateTime;
public TimeSeriesMeta() {
}
public TimeSeriesMeta(TimeSeries timeSeries) {
this.key = timeSeries.getName();
this.hasDateTime = timeSeries.getValues().stream().anyMatch(v -> v.getDate() != null);
this.size = timeSeries.getLength();
}
public String getKey() { public String getKey() {
return key; return key;
} }