diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/app/DirectoryScanner.java b/src/main/java/dev/mateuszkowalczyk/ffm/app/DirectoryScanner.java index 085e232..8f68b62 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/app/DirectoryScanner.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/app/DirectoryScanner.java @@ -1,17 +1,14 @@ package dev.mateuszkowalczyk.ffm.app; -import dev.mateuszkowalczyk.ffm.data.database.image.Photo; -import dev.mateuszkowalczyk.ffm.data.database.image.PhotoDAO; +import dev.mateuszkowalczyk.ffm.data.database.photo.Photo; +import dev.mateuszkowalczyk.ffm.data.database.photo.PhotoDAO; import dev.mateuszkowalczyk.ffm.utils.PropertiesLoader; import dev.mateuszkowalczyk.ffm.utils.Property; import javafx.application.Platform; import javafx.scene.image.Image; import javafx.scene.image.ImageView; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheService.java b/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheService.java new file mode 100644 index 0000000..94dd522 --- /dev/null +++ b/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheService.java @@ -0,0 +1,14 @@ +package dev.mateuszkowalczyk.ffm.app.cache; + +public class CacheService { + private static final CacheService instance = new CacheService(); + + private CacheService () { + CacheStructureChecker cacheStructureChecker = new CacheStructureChecker(); + cacheStructureChecker.check(); + } + + public static CacheService getInstance() { + return instance; + } +} diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheStructureChecker.java b/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheStructureChecker.java new file mode 100644 index 0000000..8cbe6dc --- /dev/null +++ b/src/main/java/dev/mateuszkowalczyk/ffm/app/cache/CacheStructureChecker.java @@ -0,0 +1,44 @@ +package dev.mateuszkowalczyk.ffm.app.cache; + +import dev.mateuszkowalczyk.ffm.utils.PropertiesLoader; +import dev.mateuszkowalczyk.ffm.utils.Property; + +import java.io.File; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +public class CacheStructureChecker { + private String path = PropertiesLoader.getInstance().get(Property.PATH_TO_DIRECTORY) + "/.cache"; + private List listToCheck = new ArrayList(); + + public void check() { + this.setupPathsToCheck(); + + this.listToCheck.forEach(s -> this.checkDirectory(s)); + } + + private void setupPathsToCheck() { + this.listToCheck.add(this.path); + this.listToCheck.add(this.path + "/thumbnails"); + } + + + private void checkDirectory(String path) { + if (!this.directoryExists(path)) { + this.createDirectory(path); + } + } + + private void createDirectory(String path) { + File file = new File(path); + + file.mkdir(); + } + + private boolean directoryExists(String path) { + File file = new File(path); + + return file.exists(); + } +} diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseService.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseService.java index 972c1c8..7d8dc07 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseService.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseService.java @@ -1,5 +1,6 @@ package dev.mateuszkowalczyk.ffm.data; +import dev.mateuszkowalczyk.ffm.data.database.utils.DatabaseCreator; import dev.mateuszkowalczyk.ffm.utils.ResourceLoader; import java.sql.Connection; diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/Photo.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/Photo.java similarity index 85% rename from src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/Photo.java rename to src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/Photo.java index 2fde04e..0efb2d0 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/Photo.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/Photo.java @@ -1,13 +1,13 @@ -package dev.mateuszkowalczyk.ffm.data.database.image; +package dev.mateuszkowalczyk.ffm.data.database.photo; import dev.mateuszkowalczyk.ffm.data.database.annotation.Column; import dev.mateuszkowalczyk.ffm.data.database.annotation.PrimaryKey; import dev.mateuszkowalczyk.ffm.data.database.annotation.Table; -@Table(name = "photo") +@Table(name = "photos") public class Photo { - @Column + @Column(type = Column.Type.INT) @PrimaryKey private long id; diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/PhotoDAO.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/PhotoDAO.java similarity index 94% rename from src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/PhotoDAO.java rename to src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/PhotoDAO.java index 6f139b0..49b0dcf 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/image/PhotoDAO.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/photo/PhotoDAO.java @@ -1,4 +1,4 @@ -package dev.mateuszkowalczyk.ffm.data.database.image; +package dev.mateuszkowalczyk.ffm.data.database.photo; import dev.mateuszkowalczyk.ffm.data.DatabaseService; import dev.mateuszkowalczyk.ffm.data.database.Dao; diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseCreator.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/DatabaseCreator.java similarity index 79% rename from src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseCreator.java rename to src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/DatabaseCreator.java index d0090eb..055e552 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/data/DatabaseCreator.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/DatabaseCreator.java @@ -1,7 +1,6 @@ -package dev.mateuszkowalczyk.ffm.data; +package dev.mateuszkowalczyk.ffm.data.database.utils; -import dev.mateuszkowalczyk.ffm.data.database.image.Photo; -import dev.mateuszkowalczyk.ffm.data.database.utils.TableCreator; +import dev.mateuszkowalczyk.ffm.data.database.photo.Photo; import dev.mateuszkowalczyk.ffm.utils.ResourceLoader; import java.sql.Connection; @@ -32,6 +31,6 @@ public class DatabaseCreator { private void createTables(Connection connection) { TableCreator creator = new TableCreator(connection); - creator.create("photos", new Photo()); + creator.create(Photo.class); } } diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableCreator.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableCreator.java index 95e4704..1918daa 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableCreator.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableCreator.java @@ -3,6 +3,7 @@ package dev.mateuszkowalczyk.ffm.data.database.utils; import dev.mateuszkowalczyk.ffm.data.DatabaseService; import dev.mateuszkowalczyk.ffm.data.database.annotation.Column; import dev.mateuszkowalczyk.ffm.data.database.annotation.PrimaryKey; +import dev.mateuszkowalczyk.ffm.data.database.annotation.Table; import java.lang.reflect.Field; import java.lang.reflect.Type; @@ -13,17 +14,17 @@ import java.util.ArrayList; import java.util.List; public class TableCreator { - + private TableMapper tableMapper = new TableMapper(); private final Connection connection; public TableCreator(Connection connection) { this.connection = connection; } - public void create(String name, Object object) { - String sql = "CREATE TABLE IF NOT EXISTS " + name; + public void create(Class object) { + String sql = "CREATE TABLE IF NOT EXISTS " + this.tableMapper.getName(object); - Field[] fields = object.getClass().getDeclaredFields(); + Field[] fields = object.getDeclaredFields(); sql += this.addFields(fields); diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableMapper.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableMapper.java new file mode 100644 index 0000000..27999c0 --- /dev/null +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/database/utils/TableMapper.java @@ -0,0 +1,18 @@ +package dev.mateuszkowalczyk.ffm.data.database.utils; + +import dev.mateuszkowalczyk.ffm.data.database.annotation.Table; + +public class TableMapper { + + public String getName(Class object) { + if (object.isAnnotationPresent(Table.class)) { + Table annotation = (Table) object.getAnnotation(Table.class); + String name = annotation.name(); + if (name.length() > 0) { + return name; + } + } + + return object.getSimpleName().toLowerCase(); + } +}