diff --git a/performanceDb/src/main/java/org/lucares/performance/db/StorageUtils.java b/performanceDb/src/main/java/org/lucares/performance/db/StorageUtils.java index d117a8d..1541739 100644 --- a/performanceDb/src/main/java/org/lucares/performance/db/StorageUtils.java +++ b/performanceDb/src/main/java/org/lucares/performance/db/StorageUtils.java @@ -1,11 +1,16 @@ package org.lucares.performance.db; -import java.io.File; import java.nio.file.Path; +import java.util.UUID; public class StorageUtils { - static File createStorageFile(final Path parent, final Day day, final String name) { - return new File(parent.toFile(), day.format(File.separator) + File.separator + name); + public static Path createStorageFile(final Path parent, final String tagBaseDir, final Day day) { + + final Path tagSpecificFolder = parent.resolve(tagBaseDir); + final Path dateSpecificFolder = tagSpecificFolder.resolve(day.format("/")); + final Path storageFile = dateSpecificFolder.resolve(UUID.randomUUID().toString()); + + return storageFile; } } diff --git a/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java b/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java index 36e0989..edf4cb0 100644 --- a/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java +++ b/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java @@ -145,16 +145,16 @@ public class TagsToFile implements CollectionUtils { private File createNewFile(final OffsetDateTime date, final Tags tags) { final Day day = new Day(date); - final String name = tags.abbreviatedRepresentation() + UUID.randomUUID().toString(); + final String tagBaseDir = tags.abbreviatedRepresentation() + UUID.randomUUID().toString(); - final File result = StorageUtils.createStorageFile(dataDirectory, day, name); + final Path result = StorageUtils.createStorageFile(dataDirectory, tagBaseDir, day); try { - Files.createDirectories(result.getParentFile().toPath()); - Files.createFile(result.toPath()); + Files.createDirectories(result.getParent()); + Files.createFile(result); } catch (final IOException e) { throw new IllegalStateException(e); // very unlikely } - return result; + return result.toFile(); } } diff --git a/performanceDb/src/test/java/org/lucares/performance/db/PerformanceDbTest.java b/performanceDb/src/test/java/org/lucares/performance/db/PerformanceDbTest.java index 3feef56..16b14b1 100644 --- a/performanceDb/src/test/java/org/lucares/performance/db/PerformanceDbTest.java +++ b/performanceDb/src/test/java/org/lucares/performance/db/PerformanceDbTest.java @@ -5,11 +5,11 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.time.OffsetDateTime; -import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.lucares.pdb.api.Entry; @@ -92,7 +92,11 @@ public class PerformanceDbTest { try (PerformanceDb db = new PerformanceDb(dataDirectory)) { - final TimeRange timeRange = TimeRange.ofDay(OffsetDateTime.now(ZoneOffset.UTC)); + final int year = 2016; + final int month = 1; + final int day = 2; + + final TimeRange timeRange = TimeRange.ofDay(DateUtils.getDate(year, month, day, 1, 1, 1)); final long numberOfEntries = 2; final Tags tags = Tags.create("myKey", "one"); @@ -107,10 +111,14 @@ public class PerformanceDbTest { final List actualEntries = db.get(Query.createQuery(tags)).singleGroup().asList(); Assert.assertEquals(actualEntries, entries); - final File storageFileForToday = StorageUtils.createStorageFile(dataDirectory, new Day(timeRange.getFrom()), - "name doesn't matter"); - final File storageFolderForToday = storageFileForToday.getParentFile(); - final File[] filesInStorage = storageFolderForToday.listFiles(); + final List foldersInStorage = Files.list(dataDirectory).filter(Files::isDirectory) + .collect(Collectors.toList()); + Assert.assertEquals(foldersInStorage.size(), 1); + + final Path dateSpecificFolder = foldersInStorage.get(0) + .resolve(new Day(timeRange.getFrom()).format(File.separator)); + + final File[] filesInStorage = dateSpecificFolder.toFile().listFiles(); Assert.assertEquals(filesInStorage.length, 1, "one file in storage, but was: " + Arrays.asList(filesInStorage)); }