diff --git a/src/main/java/NTNU/IDATT1002/service/ImageService.java b/src/main/java/NTNU/IDATT1002/service/ImageService.java index b7089fd5d216e10371b6fcdf9af895a05d140735..cec0fdc26cf0214cd5dd17cf13fb5c3a35a0f386 100644 --- a/src/main/java/NTNU/IDATT1002/service/ImageService.java +++ b/src/main/java/NTNU/IDATT1002/service/ImageService.java @@ -30,6 +30,7 @@ public class ImageService { private ImageRepository imageRepository; private MetadataRepository metadataRepository; private TagRepository tagRepository; + private MetaDataExtractor metaDataExtractor; /** * Inject entity manager instance to the repositories. @@ -41,6 +42,8 @@ public class ImageService { this.imageRepository = new ImageRepository(entityManager); this.metadataRepository = new MetadataRepository(entityManager); this.tagRepository = new TagRepository(entityManager); + this.metaDataExtractor = new MetaDataExtractor(); + } /** @@ -52,14 +55,17 @@ public class ImageService { */ public Optional<Image> createImage(User user, File file, ArrayList<Tag> tags) { Image image = new Image(); + Metadata metadata = metaDataExtractor.assembleMetaData(file, image); + System.out.println(metadata.getGeoLocation().getLatitude()); + System.out.println(metadata.getHistogram().getData()); + + byte[] bFile = ImageUtil.convertToBytes(file.getPath()); - Metadata metadata = MetaDataExtractor.assembleMetaData(file, image); - metadata = metadataRepository.save(metadata).orElse(null); + metadata = metadataRepository.save(metadata).get(); //TODO: Unsure what to do with imageAlbum image.setRawImage(bFile); image.setUser(user); - image.setUser(null); image.setMetadata(metadata); image.setPath(file.getPath()); //image.addTags(tags); diff --git a/src/main/java/NTNU/IDATT1002/utils/MetaDataExtractor.java b/src/main/java/NTNU/IDATT1002/utils/MetaDataExtractor.java index 591f8e20e150630952ae094e01ea70d7b6b8f5c7..63af4bcbb28d287c23bb202dcd2b94f678852ad9 100644 --- a/src/main/java/NTNU/IDATT1002/utils/MetaDataExtractor.java +++ b/src/main/java/NTNU/IDATT1002/utils/MetaDataExtractor.java @@ -3,6 +3,9 @@ package NTNU.IDATT1002.utils; import NTNU.IDATT1002.models.GeoLocation; import NTNU.IDATT1002.models.Histogram; import NTNU.IDATT1002.models.Image; +import NTNU.IDATT1002.repository.GeoLocatioRepository; +import NTNU.IDATT1002.repository.HistorgramRepository; +import NTNU.IDATT1002.repository.MetadataRepository; import com.drew.imaging.ImageMetadataReader; import com.drew.imaging.ImageProcessingException; import com.drew.metadata.Directory; @@ -12,6 +15,9 @@ import com.drew.metadata.Tag; import com.drew.metadata.exif.*; import com.drew.metadata.jpeg.JpegDirectory; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -22,6 +28,17 @@ import java.util.Arrays; public class MetaDataExtractor { + private GeoLocatioRepository geoLocationRepository; + private HistorgramRepository historgramRepository; + + public MetaDataExtractor() { + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplication"); + EntityManager entityManager = entityManagerFactory.createEntityManager(); + + this.historgramRepository = new HistorgramRepository(entityManager); + this.geoLocationRepository = new GeoLocatioRepository(entityManager); + } + /** * Returns a string with the GPS position * @@ -30,7 +47,7 @@ public class MetaDataExtractor { * @throws IOException * @throws MetadataException */ - private static GeoLocation getGPS(File file) throws ImageProcessingException, IOException, MetadataException { + private GeoLocation getGPS(File file) throws ImageProcessingException, IOException, MetadataException { String gps = ""; String latitude = ""; String longitude = ""; @@ -47,14 +64,15 @@ public class MetaDataExtractor { geoLocation.setLatitude(latitude); geoLocation.setLongitude(longitude); - - } catch (NullPointerException e) { + geoLocationRepository.save(geoLocation); + } + catch (NullPointerException e) { e.printStackTrace(); } return geoLocation; } - public static Histogram getHistorgram(File file) throws ImageProcessingException, IOException { + public Histogram getHistorgram(File file) throws ImageProcessingException, IOException { String text = ""; Metadata metadata = ImageMetadataReader.readMetadata(file); Histogram histogram = new Histogram(); @@ -65,10 +83,11 @@ public class MetaDataExtractor { } } histogram.setData(text); + historgramRepository.save(histogram); return histogram; } - public static NTNU.IDATT1002.models.Metadata assembleMetaData(File file, Image image) { + public NTNU.IDATT1002.models.Metadata assembleMetaData(File file, Image image) { NTNU.IDATT1002.models.Metadata metadata = new NTNU.IDATT1002.models.Metadata(); try {