Skip to content
Snippets Groups Projects
Commit f1891d57 authored by Eirik Steira's avatar Eirik Steira
Browse files

Refactor image metadata and histogram upload

parent 4bb69fef
No related branches found
No related tags found
2 merge requests!104Weekly merge to Master,!75Single photo upload
......@@ -18,6 +18,7 @@ public class DataExchange {
searchField = "";
}
public List<File> getUploadedFiles() {
System.out.println("SHITFUCK111");
return uploadedFiles;
}
......
......@@ -2,13 +2,8 @@ package NTNU.IDATT1002.controllers;
import NTNU.IDATT1002.App;
import NTNU.IDATT1002.ApplicationState;
import NTNU.IDATT1002.models.Tag;
import NTNU.IDATT1002.service.ImageService;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javafx.event.ActionEvent;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
......@@ -18,9 +13,12 @@ import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javax.persistence.Table;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
/**
......@@ -141,7 +139,8 @@ public class UploadedSingle implements Initializable {
List<File> list = App.ex.getUploadedFiles();
File fil = list.get(0);
ArrayList<Tag> tags = new ArrayList<>();
imageService.createImage(applicationState.getCurrentUser(), fil, tags);
System.out.println("SHITFUCK");
imageService.createImage(ApplicationState.getCurrentUser(), fil, tags);
/* list.stream().forEach(x -> {
image = imageService.createImage(applicationState.getCurrentUser(), x).get();
List tags = tagStringSplit(photo_tag);
......
......@@ -2,7 +2,6 @@ package NTNU.IDATT1002.models;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
/**
* Creates histogram table
......@@ -27,21 +26,14 @@ public class Histogram {
@JoinColumn(name = "metadata_id")
private Metadata metadata;
@NotBlank (message = "Data may not be blank")
// @Column(name="data", length=294967295)
// @NotBlank (message = "Data may not be blank")
@Lob
private String data;
public Histogram() {
}
/**
* Constrtuctor for Histogram, taking in both histogramId and data
*
* @param data
*/
public Histogram(String data){
this.data = data;
}
public Long getHistogramId() {
return histogramId;
}
......
package NTNU.IDATT1002.service;
import NTNU.IDATT1002.models.Image;
import NTNU.IDATT1002.models.Metadata;
import NTNU.IDATT1002.models.Tag;
import NTNU.IDATT1002.models.User;
import NTNU.IDATT1002.repository.ImageRepository;
import NTNU.IDATT1002.repository.MetadataRepository;
import NTNU.IDATT1002.repository.TagRepository;
import NTNU.IDATT1002.models.*;
import NTNU.IDATT1002.repository.*;
import NTNU.IDATT1002.service.filters.ImageFilter;
import NTNU.IDATT1002.utils.ImageUtil;
import NTNU.IDATT1002.utils.MetaDataExtractor;
......@@ -30,6 +25,8 @@ public class ImageService {
private ImageRepository imageRepository;
private MetadataRepository metadataRepository;
private TagRepository tagRepository;
private HistorgramRepository historgramRepository;
private GeoLocatioRepository geoLocatioRepository;
private MetaDataExtractor metaDataExtractor;
/**
......@@ -42,6 +39,8 @@ public class ImageService {
this.imageRepository = new ImageRepository(entityManager);
this.metadataRepository = new MetadataRepository(entityManager);
this.tagRepository = new TagRepository(entityManager);
this.historgramRepository = new HistorgramRepository(entityManager);
this.geoLocatioRepository = new GeoLocatioRepository(entityManager);
this.metaDataExtractor = new MetaDataExtractor();
}
......@@ -54,21 +53,32 @@ public class ImageService {
* @return Optional containing the saved image
*/
public Optional<Image> createImage(User user, File file, ArrayList<Tag> tags) {
GeoLocation geoLocation = metaDataExtractor.getGeoLocation(file);
Histogram histogram = metaDataExtractor.getHistogram(file);
geoLocation = geoLocatioRepository.save(geoLocation).orElse(null);
histogram = historgramRepository.save(histogram).orElse(null);
Image image = new Image();
Metadata metadata = metaDataExtractor.assembleMetaData(file, image);
Metadata metadata = new Metadata();
metadata.setImage(image);
metadata.setGeoLocation(geoLocation);
metadata.setHistogram(histogram);
System.out.println(metadata.getGeoLocation().getLatitude());
System.out.println(metadata.getHistogram().getData());
metadata = metadataRepository.save(metadata).orElse(null);
byte[] bFile = ImageUtil.convertToBytes(file.getPath());
metadata = metadataRepository.save(metadata).get();
//TODO: Unsure what to do with imageAlbum
image.setRawImage(bFile);
image.setUser(user);
image.setMetadata(metadata);
image.setPath(file.getPath());
//image.addTags(tags);
// image.addTags(tags);
return imageRepository.save(image);
}
......
......@@ -5,25 +5,19 @@ 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;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.*;
import com.drew.metadata.jpeg.JpegDirectory;
import com.drew.metadata.exif.GpsDirectory;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
public class MetaDataExtractor {
......@@ -47,7 +41,7 @@ public class MetaDataExtractor {
* @throws IOException
* @throws MetadataException
*/
private GeoLocation getGPS(File file) throws ImageProcessingException, IOException, MetadataException {
public GeoLocation getGeoLocation(File file) {
String gps = "";
String latitude = "";
String longitude = "";
......@@ -64,26 +58,32 @@ public class MetaDataExtractor {
geoLocation.setLatitude(latitude);
geoLocation.setLongitude(longitude);
geoLocationRepository.save(geoLocation);
}
catch (NullPointerException e) {
catch (NullPointerException | ImageProcessingException | IOException e) {
e.printStackTrace();
}
return geoLocation;
}
public Histogram getHistorgram(File file) throws ImageProcessingException, IOException {
String text = "";
Metadata metadata = ImageMetadataReader.readMetadata(file);
Histogram histogram = new Histogram();
public Histogram getHistogram(File file) {
Metadata metadata = null;
try {
metadata = ImageMetadataReader.readMetadata(file);
} catch (IOException | ImageProcessingException e) {
e.printStackTrace();
}
StringBuilder data = new StringBuilder();
assert metadata != null;
for(Directory d : metadata.getDirectories()) {
for (Tag t : d.getTags()) {
text += t.toString() + " | ";
data.append(t.toString()).append(" | ");
}
}
histogram.setData(text);
historgramRepository.save(histogram);
Histogram histogram = new Histogram();
histogram.setData(data.toString());
return histogram;
}
......@@ -92,8 +92,8 @@ public class MetaDataExtractor {
NTNU.IDATT1002.models.Metadata metadata = new NTNU.IDATT1002.models.Metadata();
try {
metadata.setImage(image);
metadata.setGeoLocation(getGPS(file));
metadata.setHistogram(getHistorgram(file));
metadata.setGeoLocation(getGeoLocation(file));
metadata.setHistogram(getHistogram(file));
}
catch (Exception e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment