Skip to content
Snippets Groups Projects
Commit 847b09ce authored by Simon Jensen's avatar Simon Jensen
Browse files

Merge branch 'needValdigTitleAtAlbum' into 'dev'

Need valdig title at album

See merge request !132
parents 5a44604f 5a0ddcef
No related branches found
No related tags found
2 merge requests!165Weekly merge to Master,!132Need valdig title at album
Pipeline #79515 passed
......@@ -24,7 +24,6 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import org.hibernate.boot.jaxb.internal.stax.HbmEventReader;
import javax.persistence.EntityManager;
import java.io.IOException;
......@@ -38,159 +37,193 @@ import java.util.stream.Collectors;
/**
* Controls the buttons and changeable elements on create_album.fxml,
* a page where you create albums
*
* @version 1.0 22.03.2020
*/
public class CreateAlbum implements Initializable {
public TextField tbar_search;
public ImageView tbar_logo;
public Button tbar_explore;
public Button tbar_map;
public Button tbar_upload;
public TextField album_title_field;
public TextField album_tag_field;
public TextArea album_desc_field;
public Pane metadata_pane;
public GridPane image_grid;
public Button add_images_button;
public Button create_album_button;
public Button tbar_albums;
public Button tbar_searchBtn;
public VBox fileContainer;
private AlbumService albumService;
private ImageService imageService;
public CreateAlbum() {
EntityManager entityManager = App.ex.getEntityManager();
albumService = new AlbumService(entityManager);
imageService = new ImageService(entityManager);
public TextField tbar_search;
public ImageView tbar_logo;
public Button tbar_explore;
public Button tbar_map;
public Button tbar_upload;
public TextField album_title_field;
public TextField album_tag_field;
public TextArea album_desc_field;
public Pane metadata_pane;
public GridPane image_grid;
public Button add_images_button;
public Button create_album_button;
public Button tbar_albums;
public Button tbar_searchBtn;
public VBox fileContainer;
private AlbumService albumService;
private ImageService imageService;
public CreateAlbum() {
EntityManager entityManager = App.ex.getEntityManager();
albumService = new AlbumService(entityManager);
imageService = new ImageService(entityManager);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
List<Image> allImages = imageService.getImageFromUser(ApplicationState.getCurrentUser());
for (Image image : allImages) {
javafx.scene.image.Image convertedImage = ImageUtil.convertToFXImage(image);
HBox container = new HBox();
container.setPrefWidth(450);
container.setAlignment(Pos.TOP_CENTER);
ImageView imageView = new ImageView();
imageView.setFitHeight(200);
imageView.setFitWidth(350);
imageView.setPickOnBounds(true);
imageView.setPreserveRatio(true);
imageView.setImage(convertedImage);
CheckBox checkBox = new CheckBox();
checkBox.setId(image.getId().toString());
container.getChildren().addAll(imageView, checkBox);
fileContainer.getChildren().add(container);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
List<Image> allImages = imageService.getImageFromUser(ApplicationState.getCurrentUser());
for (Image image : allImages){
javafx.scene.image.Image convertedImage = ImageUtil.convertToFXImage(image);
HBox container = new HBox();
container.setPrefWidth(450);
container.setAlignment(Pos.TOP_CENTER);
ImageView imageView = new ImageView();
imageView.setFitHeight(200);
imageView.setFitWidth(350);
imageView.setPickOnBounds(true);
imageView.setPreserveRatio(true);
imageView.setImage(convertedImage);
CheckBox checkBox = new CheckBox();
checkBox.setId(image.getId().toString());
container.getChildren().addAll(imageView, checkBox);
fileContainer.getChildren().add(container);
}
}
/**
* Method that changes stage to Main page
* @param mouseEvent
* @throws IOException
*/
public void switchToMain(MouseEvent mouseEvent) throws IOException {
App.setRoot("main");
}
/**
* Method that changes stage to Main page
*
* @param mouseEvent
* @throws IOException
*/
public void switchToMain(MouseEvent mouseEvent) throws IOException {
App.setRoot("main");
}
/**
* Method that changes stage to Search page. It reads the value of the search
* field and if not empty it is passed to dataexchange
*
* @param actionEvent
* @throws IOException
*/
public void switchToSearch(ActionEvent actionEvent) throws IOException {
if (!tbar_search.getText().isEmpty()) {
App.ex.setSearchField(tbar_search.getText());
}
/**
* Method that changes stage to Search page. It reads the value of the search
* field and if not empty it is passed to dataexchange
* @param actionEvent
* @throws IOException
*/
public void switchToSearch(ActionEvent actionEvent) throws IOException {
if (!tbar_search.getText().isEmpty()){
App.ex.setSearchField(tbar_search.getText());
}
App.setRoot("search");
App.setRoot("search");
}
/**
* Method that changes stage to Explore page
*
* @param actionEvent
* @throws IOException
*/
public void switchToExplore(ActionEvent actionEvent) throws IOException {
App.setRoot("explore");
}
/**
* Method that changes stage to Albums page
*
* @param actionEvent
* @throws IOException
*/
public void switchToAlbums(ActionEvent actionEvent) throws IOException {
App.setRoot("explore_albums");
}
/**
* Method that changes stage to Map page
*
* @param actionEvent
* @throws IOException
*/
public void switchToMap(ActionEvent actionEvent) throws IOException {
App.setRoot("map");
}
/**
* Method that changes stage to Upload page
*
* @param actionEvent the mouse has done something
* @throws IOException this page does not exist
*/
public void switchToUpload(ActionEvent actionEvent) throws IOException {
App.setRoot("upload");
}
/**
* Method that creates album based on the user input and checked images
*
* @param actionEvent
*/
public void createAlbum(ActionEvent actionEvent) {
String title = album_title_field.getText();
String description = album_desc_field.getText();
String tags = album_tag_field.getText();
if (tags.isEmpty()){ tags = " "; }
List<Tag> tagsToAdd = TagService.getTagsFromString(tags);
User user = ApplicationState.getCurrentUser();
//temporary solution for the toString problem with album log creation, along with the if(tag) above
if (description.isEmpty()) {
description = "No desripton added";
}
List<Node> imageContainers = new ArrayList<>(fileContainer.getChildren());
List<String> checkedImagesId = new ArrayList<>();
//Each image and checkbox has an hbox container
imageContainers.forEach(hbox ->
((HBox) hbox).getChildren().stream()
//Filter children that is a checked checkbox
.filter(child -> child instanceof CheckBox && ((CheckBox) child).isSelected())
//Adds all checked image id
.forEach(checked -> checkedImagesId.add(checked.getId()))
);
if (validateInpid()) {
//Find the users images and makes a filter on the checked images
List<Image> albumImages = imageService.getImageFromUser(user).stream().filter(image -> checkedImagesId.contains(image.getId().toString())).collect(Collectors.toList());
if (albumImages.size() > 0) {
Optional<Album> createdAlbum = albumService.createAlbum(title, description, user, tagsToAdd, albumImages);
createdAlbum.ifPresent(album -> {
App.ex.setChosenAlbumId(album.getId());
try {
App.setRoot("view_album");
} catch (IOException e) {
e.printStackTrace();
}
});
} else {
Optional<Album> createdAlbum = albumService.createEmptyAlbum(title, description, user, tagsToAdd);
createdAlbum.ifPresent(album -> {
App.ex.setChosenAlbumId(album.getId());
try {
App.setRoot("view_album");
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
/**
* Method that changes stage to Explore page
* @param actionEvent
* @throws IOException
*/
public void switchToExplore(ActionEvent actionEvent) throws IOException {
App.setRoot("explore");
}
/**
* Method that changes stage to Albums page
* @param actionEvent
* @throws IOException
*/
public void switchToAlbums(ActionEvent actionEvent) throws IOException {
App.setRoot("explore_albums");
}
/**
* Method that changes stage to Map page
* @param actionEvent
* @throws IOException
*/
public void switchToMap(ActionEvent actionEvent) throws IOException {
App.setRoot("map");
}
/**
* Method that changes stage to Upload page
* @param actionEvent the mouse has done something
* @throws IOException this page does not exist
*/
public void switchToUpload(ActionEvent actionEvent) throws IOException {
App.setRoot("upload");
}
/**
* Method that creates album based on the user input and checked images
* @param actionEvent
*/
public void createAlbum(ActionEvent actionEvent){
String title = album_title_field.getText();
String description = album_desc_field.getText();
String tags = album_tag_field.getText();
List<Tag> tagsToAdd = TagService.getTagsFromString(tags);
User user = ApplicationState.getCurrentUser();
List<Node> imageContainers = new ArrayList<>(fileContainer.getChildren());
List<String> checkedImagesId = new ArrayList<>();
//Each image and checkbox has an hbox container
imageContainers.forEach(hbox ->
((HBox) hbox).getChildren().stream()
//Filter children that is a checked checkbox
.filter(child -> child instanceof CheckBox && ((CheckBox) child).isSelected())
//Adds all checked image id
.forEach(checked -> checkedImagesId.add(checked.getId()))
);
//Find the users images and makes a filter on the checked images
List<Image> albumImages = imageService.getImageFromUser(user).stream().filter(image -> checkedImagesId.contains(image.getId().toString())).collect(Collectors.toList());
if (albumImages.size() > 0){
Optional<Album> createdAlbum = albumService.createAlbum(title, description, user, tagsToAdd, albumImages);
createdAlbum.ifPresent(album -> {
App.ex.setChosenAlbumId(album.getId());
try {
App.setRoot("view_album");
} catch (IOException e) {
e.printStackTrace();
}
});
}
else {
Optional<Album> createdAlbum = albumService.createEmptyAlbum(title, description, user, tagsToAdd);
createdAlbum.ifPresent(album -> {
App.ex.setChosenAlbumId(album.getId());
try {
App.setRoot("view_album");
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
/**
* Makes sure that user gave the album a title
* @return
*/
private boolean validateInpid() {
boolean check = true;
if (album_title_field.getText().isEmpty()) {
album_title_field.clear();
album_title_field.setStyle("-fx-prompt-text-fill: red");
album_title_field.setPromptText("* Please enter a title for the album");
check = false;
}
return check;
}
}
......@@ -55,13 +55,23 @@ public class TagService {
* @return the list of tag objects
*/
public static List<Tag> getTagsFromString(String tagsAsString) {
String[] tags = tagsAsString
.trim()
.split("[, ?.@]+");
if (tagsAsString.isBlank()) {
String[] tags = tagsAsString.split(" ");
return Stream.of(tags)
return Stream.of(tags)
.map(Tag::new)
.collect(Collectors.toList());
}else {
String[] tags = tagsAsString
.trim()
.split("[, ?.@]+");
return Stream.of(tags)
.map(Tag::new)
.collect(Collectors.toList());
}
}
/**
......
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