From 42888f8e2d586e86196bacd92d43600eb9aae6a1 Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 10:53:10 +0100
Subject: [PATCH 1/7] Add basic flow for populating album fields when viewing
 single album

---
 .../java/NTNU/IDATT1002/ApplicationState.java |   4 +-
 .../IDATT1002/controllers/ExploreAlbums.java  |  13 +-
 .../NTNU/IDATT1002/controllers/ViewAlbum.java | 216 +++++++++++++++++-
 .../NTNU/IDATT1002/database/LoadDatabase.java |  20 +-
 .../resources/NTNU/IDATT1002/view_album.fxml  |  93 ++++----
 5 files changed, 278 insertions(+), 68 deletions(-)

diff --git a/src/main/java/NTNU/IDATT1002/ApplicationState.java b/src/main/java/NTNU/IDATT1002/ApplicationState.java
index b53dc857..1b65e202 100644
--- a/src/main/java/NTNU/IDATT1002/ApplicationState.java
+++ b/src/main/java/NTNU/IDATT1002/ApplicationState.java
@@ -21,7 +21,7 @@ public final class ApplicationState {
     /**
      * Anonymous user for developing purposes.
      */
-    private static User anonymousUser;
+    private static String anonymousUserUsername = "Anonymous";
 
     private static UserRepository userRepository;
 
@@ -47,7 +47,7 @@ public final class ApplicationState {
      */
     public static User getCurrentUser() {
         return userRepository.findById(currentUser.getUsername())
-                .orElseGet(() -> userRepository.findById(anonymousUser.getUsername())
+                .orElseGet(() -> userRepository.findById(anonymousUserUsername)
                         .orElseThrow(IllegalArgumentException::new));
     }
 }
diff --git a/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java b/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java
index 794925c1..a545a48e 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java
@@ -59,7 +59,7 @@ public class ExploreAlbums implements Initializable {
 
     @FXML
     private GridPane albums_grid_pane;
-    private Pane paneContainer;
+    private Pane album_pane_container;
 
     private ImageAlbumService imageAlbumService;
 
@@ -67,7 +67,6 @@ public class ExploreAlbums implements Initializable {
         imageAlbumService = new ImageAlbumService();
     }
 
-
     /**
      * Initialize page with all albums. Max 5 per page.
      *
@@ -81,13 +80,13 @@ public class ExploreAlbums implements Initializable {
         int maxPerPage = Math.min(albums.size(), 5);
 
         for(int i = 0; i<maxPerPage; i++) {
-            paneContainer = new Pane();
-            paneContainer.setPrefWidth(200);
-            paneContainer.setPrefHeight(100);
+            album_pane_container = new Pane();
+            album_pane_container.setPrefWidth(200);
+            album_pane_container.setPrefHeight(100);
 
-            addSingleAlbumContentToPane(albums.get(i), paneContainer);
+            addSingleAlbumContentToPane(albums.get(i), album_pane_container);
 
-            albums_grid_pane.add(paneContainer, 0, i);
+            albums_grid_pane.add(album_pane_container, 0, i);
         }
     }
 
diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index 878dd1a0..a6e1d670 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -2,28 +2,39 @@ package NTNU.IDATT1002.controllers;
 
 import NTNU.IDATT1002.App;
 import NTNU.IDATT1002.models.ImageAlbum;
+import NTNU.IDATT1002.models.Tag;
 import NTNU.IDATT1002.service.ImageAlbumService;
 import NTNU.IDATT1002.utils.PdfDocument;
 import javafx.application.HostServices;
 import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
 import javafx.scene.control.Button;
 import javafx.scene.control.TextField;
+import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.GridPane;
 import javafx.scene.layout.Pane;
+import javafx.scene.shape.StrokeType;
+import javafx.scene.text.Font;
 import javafx.scene.text.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URL;
+import java.util.Optional;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
 
 /**
  * Controls the buttons and changeable elements on view_album.fxml,
  * a page where get a more detailed view of an album
  * @version 1.0 22.03.2020
  */
-public class ViewAlbum {
+public class ViewAlbum implements Initializable {
     public TextField tbar_search;
     public ImageView tbar_logo;
     public Button tbar_explore;
@@ -48,12 +59,209 @@ public class ViewAlbum {
     public Button tbar_searchBtn;
     public Button tbar_albums;
 
-    private ImageAlbumService imageAlbumService;
+    @FXML
+    public GridPane album_fields_grid_pane;
+    private Pane album_field_container;
 
-    private static Logger logger = LoggerFactory.getLogger(ViewAlbum.class);
+    private ImageAlbumService imageAlbumService;
+    private Long currentAlbumId;
 
     public ViewAlbum() {
-        this.imageAlbumService =  new ImageAlbumService();
+        imageAlbumService = new ImageAlbumService();
+        currentAlbumId = App.ex.getChosenAlbumId();
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        album_field_container = new Pane();
+        album_field_container.setPrefWidth(200);
+        album_field_container.setPrefHeight(100);
+
+        Optional<ImageAlbum> foundImageAlbum = imageAlbumService.getImageAlbumById(currentAlbumId);
+        foundImageAlbum.ifPresent(imageAlbum -> addAlbumToPane(imageAlbum, album_field_container));
+    }
+
+    private void addAlbumToPane(ImageAlbum imageAlbum, Pane pane) {
+        addAlbumFieldsToPane(imageAlbum, pane);
+    }
+
+    /**
+     * Add all components needed to display an album.
+     *
+     * @param album the album to display
+     * @param pane the pane to add the album to
+     */
+    private void addAlbumFieldsToPane(ImageAlbum album, Pane pane) {
+        insertAlbumTitleLabelToPane(pane);
+        insertAlbumTitleToPane(album, pane);
+
+        insertAlbumTagsLabelToPane(pane);
+        insertAlbumTagsToPane(album, pane);
+
+        insertAlbumDescriptionLabelToPane(pane);
+        insertAlbumDescriptionToPane(album, pane);
+
+        // TODO: author?
+        insertAlbumAuthorLabelToPane(pane);
+        insertAlbumAuthorToPane(album, pane);
+    }
+
+
+    /**
+     * Insert album title label to given pane.
+     *
+     * @param pane the pane to add the title to
+     */
+    private void insertAlbumTitleLabelToPane(Pane pane) {
+        Text text = new Text();
+        text.setText("ALBUM: ");
+        text.setFont(Font.font(48.0));
+        text.setLayoutX(551.0);
+        text.setLayoutY(63.0);
+        text.setStrokeType(StrokeType.OUTSIDE);
+        text.setStrokeWidth(0.0);
+        text.setWrappingWidth(200);
+
+        pane.getChildren().add(text);
+    }
+
+    /**
+     * Insert author label of the given album to the given pane
+     *
+     * @param pane the pane to add the author label to
+     */
+    private void insertAlbumAuthorLabelToPane(Pane pane) {
+        Text authorLabel = new Text();
+        authorLabel.setText("AUTHOR: ");
+        authorLabel.setFont(Font.font(24));
+        authorLabel.setLayoutX(551.0);
+        authorLabel.setLayoutY(97.0);
+        authorLabel.setStrokeType(StrokeType.OUTSIDE);
+        authorLabel.setStrokeWidth(0.0);
+        authorLabel.setWrappingWidth(150.0);
+
+        pane.getChildren().add(authorLabel);
+    }
+
+    /**
+     * Insert description label of the given album to the given pane
+     *
+     * @param pane the pane to add the description label to
+     */
+    private void insertAlbumDescriptionLabelToPane(Pane pane) {
+        Text descriptionLabel = new Text();
+        descriptionLabel.setText("DESCRIPTION: ");
+        descriptionLabel.setFont(Font.font(18.0));
+        descriptionLabel.setLayoutX(551.0);
+        descriptionLabel.setLayoutY(157.0);
+        descriptionLabel.setStrokeType(StrokeType.OUTSIDE);
+        descriptionLabel.setStrokeWidth(0.0);
+        descriptionLabel.setWrappingWidth(129.0);
+
+        pane.getChildren().add(descriptionLabel);
+    }
+
+    /**
+     * Insert author of the given album to the given pane
+     *
+     * @param album the album which author to display
+     * @param pane the pane to add the author to
+     */
+    private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) {
+        album_author = new Text();
+        album_author.setId("album_author");
+        album_author.setText(album.getUser().getUsername());
+        album_author.setFont(Font.font(24.0));
+        album_author.setLayoutX(707.0);
+        album_author.setLayoutY(97.0);
+        album_author.setStrokeType(StrokeType.OUTSIDE);
+        album_author.setStrokeWidth(0.0);
+        album_author.setWrappingWidth(270.0);
+
+        pane.getChildren().add(album_author);
+    }
+
+    /**
+     * Insert title of the given album to the given pane
+     *
+     * @param album the album which title to display
+     * @param pane the pane to add the title to
+     */
+    private void insertAlbumTitleToPane(ImageAlbum album, Pane pane) {
+        album_title = new Text();
+        album_title.setId("album_title");
+        album_title.setText(album.getTitle());
+        album_title.setFont(Font.font(48.0));
+        album_title.setLayoutX(751.0);
+        album_title.setLayoutY(65.0);
+        album_title.setStrokeType(StrokeType.OUTSIDE);
+        album_title.setStrokeWidth(0.0);
+        album_title.setWrappingWidth(653.0);
+
+        pane.getChildren().add(album_title);
+    }
+
+    /**
+     * Insert description of the given album to the given pane
+     *
+     * @param album the album which description to display
+     * @param pane the pane to add the description to
+     */
+    private void insertAlbumDescriptionToPane(ImageAlbum album, Pane pane) {
+        album_desc = new Text();
+        album_desc.setId("album_desc");
+        album_desc.setText(album.getDescription());
+        album_desc.setFont(Font.font(18.0));
+        album_desc.setLayoutX(707.0);
+        album_desc.setLayoutY(157.0);
+        album_desc.setStrokeType(StrokeType.OUTSIDE);
+        album_desc.setStrokeWidth(0.0);
+        album_desc.setWrappingWidth(229.0);
+
+        pane.getChildren().add(album_desc);
+    }
+
+    /**
+     * Insert tags label of the given album to the given pane
+     *
+     * @param pane the pane to add the tags label to
+     */
+    private void insertAlbumTagsLabelToPane(Pane pane) {
+        Text tagsLabel = new Text();
+        tagsLabel.setText("TAGS: ");
+        tagsLabel.setFont(Font.font(24));
+        tagsLabel.setLayoutX(551.0);
+        tagsLabel.setLayoutY(129.0);
+        tagsLabel.setStrokeType(StrokeType.OUTSIDE);
+        tagsLabel.setStrokeWidth(0.0);
+        tagsLabel.setWrappingWidth(150.0);
+
+        pane.getChildren().add(tagsLabel);
+    }
+
+    /**
+     * Insert tags of the given album to the given pane
+     *
+     * @param album the album which tags to display
+     * @param pane the pane to add the tags to
+     */
+    private void insertAlbumTagsToPane(ImageAlbum album, Pane pane) {
+        String tagsAsString = album.getTags().stream()
+                .map(Tag::getName)
+                .collect(Collectors.joining(", "));
+
+        System.out.println(tagsAsString);
+
+        album_tags = new Text();
+        album_tags.setText("tag1, tag2");
+        album_tags.setFont(Font.font(24.0));
+        album_tags.setLayoutX(707.0);
+        album_tags.setLayoutY(129.0);
+        album_tags.setStrokeType(StrokeType.OUTSIDE);
+        album_tags.setStrokeWidth(0.0);
+        album_tags.setWrappingWidth(270.0);
+
+        pane.getChildren().add(album_tags);
     }
 
     /**
diff --git a/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java b/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
index 93ea77a9..a527b776 100644
--- a/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
+++ b/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
@@ -48,7 +48,7 @@ public class LoadDatabase {
                 new File("t14-test-images/1.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("First",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
@@ -66,7 +66,7 @@ public class LoadDatabase {
                 new File("t14-test-images/7.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Seventh",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
@@ -93,7 +93,7 @@ public class LoadDatabase {
                 new File("t14-test-images/2.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Second",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -110,7 +110,7 @@ public class LoadDatabase {
                 new File("t14-test-images/10.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Tenth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#fjords"),
                         new Tag("#nature"),
@@ -137,7 +137,7 @@ public class LoadDatabase {
                 new File("t14-test-images/3.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Third",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -155,7 +155,7 @@ public class LoadDatabase {
                 new File("t14-test-images/9.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Ninth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#art"),
                         new Tag("#nature"),
@@ -184,7 +184,7 @@ public class LoadDatabase {
                 tags).get();
 
         imageAlbumService.createImageAlbum("Fourth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#grass"),
@@ -202,7 +202,7 @@ public class LoadDatabase {
                 new File("t14-test-images/5.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Fifth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -230,7 +230,7 @@ public class LoadDatabase {
                 new File("t14-test-images/6.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Sixth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#waterfall"),
@@ -258,7 +258,7 @@ public class LoadDatabase {
                 new File("t14-test-images/8.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Eighth",
-                "Lorem Ipsum",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
diff --git a/src/main/resources/NTNU/IDATT1002/view_album.fxml b/src/main/resources/NTNU/IDATT1002/view_album.fxml
index 8b5e6311..8abf22bd 100644
--- a/src/main/resources/NTNU/IDATT1002/view_album.fxml
+++ b/src/main/resources/NTNU/IDATT1002/view_album.fxml
@@ -11,6 +11,7 @@
 <?import javafx.scene.text.Font?>
 <?import javafx.scene.text.Text?>
 
+<?import javafx.scene.layout.GridPane?>
 <AnchorPane prefHeight="1080.0" prefWidth="1920.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="NTNU.IDATT1002.controllers.ViewAlbum">
     <children>
         <VBox prefHeight="1080.0" prefWidth="1920.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
@@ -85,51 +86,53 @@
                         <Button fx:id="scroll_button_next" layoutX="835.0" layoutY="221.0" mnemonicParsing="false" onAction="#loadNextScrollbarView" text="Next" />
                             </children>
                         </Pane>
-                        <Pane prefHeight="981.0" prefWidth="975.0" style="-fx-background-color: #999999;">
-                            <children>
-                                <Text layoutX="76.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TITLE:">
-                                    <font>
-                                        <Font name="System Bold" size="36.0" />
-                                    </font>
-                                </Text>
-                        <Text fx:id="album_titleField" layoutX="190.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="title">
-                           <font>
-                              <Font size="36.0" />
-                           </font>
-                        </Text>
-                                <Text layoutX="76.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TAGS:">
-                                    <font>
-                                        <Font name="System Bold" size="24.0" />
-                                    </font>
-                                </Text>
-                        <Text fx:id="album_tagsField" layoutX="156.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="#tags">
-                           <font>
-                              <Font size="24.0" />
-                           </font>
-                        </Text>
-                                <Text layoutX="76.0" layoutY="239.0" strokeType="OUTSIDE" strokeWidth="0.0" text="DESCRIPTION:" wrappingWidth="164.24609375">
-                                    <font>
-                                        <Font name="System Bold" size="24.0" />
-                                    </font>
-                                </Text>
-                        <Text fx:id="desc_textField" layoutX="76.0" layoutY="261.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." wrappingWidth="822.0">
-                           <font>
-                              <Font size="14.0" />
-                           </font>
-                        </Text>
-                                <Text layoutX="76.0" layoutY="357.0" strokeType="OUTSIDE" strokeWidth="0.0" text="PICTURE METADATA:">
-                                    <font>
-                                        <Font name="System Bold" size="24.0" />
-                                    </font>
-                                </Text>
-                                <Pane fx:id="metadata_pane" layoutX="76.0" layoutY="371.0" prefHeight="391.0" prefWidth="822.0" style="-fx-background-color: #ffffff;" />
-                                <Button fx:id="create_album_pdf" layoutX="394.0" layoutY="810.0" mnemonicParsing="false" onAction="#createPdf" text="CREATE ALBUM PDF">
-                                    <font>
-                                        <Font size="18.0" />
-                                    </font>
-                                </Button>
-                            </children>
-                        </Pane>
+                        <GridPane fx:id="album_fields_grid_pane">
+                            <Pane prefHeight="981.0" prefWidth="975.0" style="-fx-background-color: #999999;">
+                                <children>
+                                    <Text layoutX="76.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TITLE:">
+                                        <font>
+                                            <Font name="System Bold" size="36.0" />
+                                        </font>
+                                    </Text>
+                                    <Text fx:id="album_titleField" layoutX="190.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="title">
+                                       <font>
+                                          <Font size="36.0" />
+                                       </font>
+                                    </Text>
+                                            <Text layoutX="76.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TAGS:">
+                                                <font>
+                                                    <Font name="System Bold" size="24.0" />
+                                                </font>
+                                            </Text>
+                                    <Text fx:id="album_tagsField" layoutX="156.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="#tags">
+                                       <font>
+                                          <Font size="24.0" />
+                                       </font>
+                                    </Text>
+                                            <Text layoutX="76.0" layoutY="239.0" strokeType="OUTSIDE" strokeWidth="0.0" text="DESCRIPTION:" wrappingWidth="164.24609375">
+                                                <font>
+                                                    <Font name="System Bold" size="24.0" />
+                                                </font>
+                                            </Text>
+                                    <Text fx:id="desc_textField" layoutX="76.0" layoutY="261.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." wrappingWidth="822.0">
+                                       <font>
+                                          <Font size="14.0" />
+                                       </font>
+                                    </Text>
+                                    <Text layoutX="76.0" layoutY="357.0" strokeType="OUTSIDE" strokeWidth="0.0" text="PICTURE METADATA:">
+                                        <font>
+                                            <Font name="System Bold" size="24.0" />
+                                        </font>
+                                    </Text>
+                                    <Pane fx:id="metadata_pane" layoutX="76.0" layoutY="371.0" prefHeight="391.0" prefWidth="822.0" style="-fx-background-color: #ffffff;" />
+                                    <Button fx:id="create_album_pdf" layoutX="394.0" layoutY="810.0" mnemonicParsing="false" onAction="#createPdf" text="CREATE ALBUM PDF">
+                                        <font>
+                                            <Font size="18.0" />
+                                        </font>
+                                    </Button>
+                                </children>
+                            </Pane>
+                        </GridPane>
                     </children>
                 </HBox>
             </children>
-- 
GitLab


From 5af86c29896eaedc921edf946e307ec0d20a3956 Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 15:16:52 +0100
Subject: [PATCH 2/7] Rename dect_textField to picture_dectField in view
 picture for consistency

---
 .../IDATT1002/controllers/ViewPicture.java    |  2 +-
 .../IDATT1002/service/ImageAlbumService.java  | 17 ++-------
 .../NTNU/IDATT1002/service/TagService.java    | 36 +++++++++++++++++++
 .../NTNU/IDATT1002/view_picture.fxml          |  2 +-
 4 files changed, 40 insertions(+), 17 deletions(-)
 create mode 100644 src/main/java/NTNU/IDATT1002/service/TagService.java

diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java b/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
index deffd81f..d13613a2 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
@@ -30,7 +30,7 @@ public class ViewPicture implements Initializable{
     public ImageView picture;
     public Text picture_tagsField;
     public Text picture_title_field;
-    public Text desc_textField;
+    public Text picture_descField;
     public Pane metadata_pane;
     public Button tbar_searchBtn;
     public Button tbar_albums;
diff --git a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
index c9db47d8..3ea88d38 100644
--- a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
+++ b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
@@ -15,7 +15,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
+
+import static NTNU.IDATT1002.service.TagService.getTagsFromString;
 
 
 /**
@@ -106,20 +107,6 @@ public class ImageAlbumService {
         return createImageAlbum(title, description, user, tags, new ArrayList<>());
     }
 
-    /**
-     * Retrieves tags from text field and converts them to a list of tag objects.
-     *
-     * @return the list of tag objects
-     */
-    private List<Tag> getTagsFromString(String tagsAsString) {
-        String[] tags = tagsAsString
-                .trim()
-                .split("[, ?.@]+");
-
-        return Stream.of(tags)
-                .map(Tag::new)
-                .collect(Collectors.toList());
-    }
 
     /**
      * Retrieves all image albums created by the given user by username.
diff --git a/src/main/java/NTNU/IDATT1002/service/TagService.java b/src/main/java/NTNU/IDATT1002/service/TagService.java
new file mode 100644
index 00000000..71519d1f
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/service/TagService.java
@@ -0,0 +1,36 @@
+package NTNU.IDATT1002.service;
+
+import NTNU.IDATT1002.models.Tag;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class TagService {
+    /**
+     * Retrieves tags from text field and converts them to a list of tag objects.
+     *
+     * @return the list of tag objects
+     */
+    public static List<Tag> getTagsFromString(String tagsAsString) {
+        String[] tags = tagsAsString
+                .trim()
+                .split("[, ?.@]+");
+
+        return Stream.of(tags)
+                .map(Tag::new)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * Retrieves tags from list of tags and converts them to a concatenated string.
+     *
+     * @param tags the list of tags
+     * @return the tags as a string
+     */
+    public static String getTagsAsString(List<Tag> tags) {
+        return tags.stream()
+                .map(Tag::getName)
+                .collect(Collectors.joining(", "));
+    }
+}
diff --git a/src/main/resources/NTNU/IDATT1002/view_picture.fxml b/src/main/resources/NTNU/IDATT1002/view_picture.fxml
index 542f1296..f29f42be 100644
--- a/src/main/resources/NTNU/IDATT1002/view_picture.fxml
+++ b/src/main/resources/NTNU/IDATT1002/view_picture.fxml
@@ -56,7 +56,7 @@
                                         <Font name="System Bold" size="24.0" />
                                     </font>
                                 </Text>
-                                <Text fx:id="desc_textField" layoutX="36.0" layoutY="794.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." wrappingWidth="1008.0">
+                                <Text fx:id="picture_descField" layoutX="36.0" layoutY="794.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." wrappingWidth="1008.0">
                                     <font>
                                         <Font size="14.0" />
                                     </font>
-- 
GitLab


From b457c24ca8599d00d5140ebf6740df0faf0ea0b6 Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 15:24:27 +0100
Subject: [PATCH 3/7] Complete fields album title, tags and description to load
 and get populated with real data in view single album

---
 .../NTNU/IDATT1002/controllers/ViewAlbum.java | 240 +++++++++---------
 .../resources/NTNU/IDATT1002/view_album.fxml  |  37 +--
 2 files changed, 123 insertions(+), 154 deletions(-)

diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index a6e1d670..25fd13b1 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -2,8 +2,8 @@ package NTNU.IDATT1002.controllers;
 
 import NTNU.IDATT1002.App;
 import NTNU.IDATT1002.models.ImageAlbum;
-import NTNU.IDATT1002.models.Tag;
 import NTNU.IDATT1002.service.ImageAlbumService;
+import NTNU.IDATT1002.service.TagService;
 import NTNU.IDATT1002.utils.PdfDocument;
 import javafx.application.HostServices;
 import javafx.event.ActionEvent;
@@ -11,7 +11,6 @@ import javafx.fxml.FXML;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Button;
 import javafx.scene.control.TextField;
-import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.GridPane;
@@ -27,7 +26,6 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.Optional;
 import java.util.ResourceBundle;
-import java.util.stream.Collectors;
 
 /**
  * Controls the buttons and changeable elements on view_album.fxml,
@@ -42,7 +40,7 @@ public class ViewAlbum implements Initializable {
     public Button tbar_upload;
     public Button create_album_pdf;
     public Pane metadata_pane;
-    public Text desc_textField;
+    public Text album_descField;
     public Text album_tagsField;
     public Text album_titleField;
     public Button scroll_button_next;
@@ -74,15 +72,19 @@ public class ViewAlbum implements Initializable {
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
         album_field_container = new Pane();
-        album_field_container.setPrefWidth(200);
-        album_field_container.setPrefHeight(100);
+        album_field_container.setPrefHeight(981.0);
+        album_field_container.setPrefWidth(975.0);
+        album_field_container.setStyle("-fx-background-color: #999999;");
 
         Optional<ImageAlbum> foundImageAlbum = imageAlbumService.getImageAlbumById(currentAlbumId);
+        System.out.println(foundImageAlbum.isPresent());
         foundImageAlbum.ifPresent(imageAlbum -> addAlbumToPane(imageAlbum, album_field_container));
+        album_fields_grid_pane.add(album_field_container, 0, 0);
     }
 
     private void addAlbumToPane(ImageAlbum imageAlbum, Pane pane) {
         addAlbumFieldsToPane(imageAlbum, pane);
+
     }
 
     /**
@@ -95,15 +97,16 @@ public class ViewAlbum implements Initializable {
         insertAlbumTitleLabelToPane(pane);
         insertAlbumTitleToPane(album, pane);
 
+
+        // TODO: author?git 
+//        insertAlbumAuthorLabelToPane(pane);
+//        insertAlbumAuthorToPane(album, pane);
+
         insertAlbumTagsLabelToPane(pane);
         insertAlbumTagsToPane(album, pane);
 
         insertAlbumDescriptionLabelToPane(pane);
         insertAlbumDescriptionToPane(album, pane);
-
-        // TODO: author?
-        insertAlbumAuthorLabelToPane(pane);
-        insertAlbumAuthorToPane(album, pane);
     }
 
 
@@ -114,73 +117,15 @@ public class ViewAlbum implements Initializable {
      */
     private void insertAlbumTitleLabelToPane(Pane pane) {
         Text text = new Text();
-        text.setText("ALBUM: ");
-        text.setFont(Font.font(48.0));
-        text.setLayoutX(551.0);
-        text.setLayoutY(63.0);
+        text.setText("TITLE: ");
+        text.setFont(Font.font(36.0));
+        text.setLayoutX(76.0);
+        text.setLayoutY(170.0);
         text.setStrokeType(StrokeType.OUTSIDE);
-        text.setStrokeWidth(0.0);
-        text.setWrappingWidth(200);
 
         pane.getChildren().add(text);
     }
 
-    /**
-     * Insert author label of the given album to the given pane
-     *
-     * @param pane the pane to add the author label to
-     */
-    private void insertAlbumAuthorLabelToPane(Pane pane) {
-        Text authorLabel = new Text();
-        authorLabel.setText("AUTHOR: ");
-        authorLabel.setFont(Font.font(24));
-        authorLabel.setLayoutX(551.0);
-        authorLabel.setLayoutY(97.0);
-        authorLabel.setStrokeType(StrokeType.OUTSIDE);
-        authorLabel.setStrokeWidth(0.0);
-        authorLabel.setWrappingWidth(150.0);
-
-        pane.getChildren().add(authorLabel);
-    }
-
-    /**
-     * Insert description label of the given album to the given pane
-     *
-     * @param pane the pane to add the description label to
-     */
-    private void insertAlbumDescriptionLabelToPane(Pane pane) {
-        Text descriptionLabel = new Text();
-        descriptionLabel.setText("DESCRIPTION: ");
-        descriptionLabel.setFont(Font.font(18.0));
-        descriptionLabel.setLayoutX(551.0);
-        descriptionLabel.setLayoutY(157.0);
-        descriptionLabel.setStrokeType(StrokeType.OUTSIDE);
-        descriptionLabel.setStrokeWidth(0.0);
-        descriptionLabel.setWrappingWidth(129.0);
-
-        pane.getChildren().add(descriptionLabel);
-    }
-
-    /**
-     * Insert author of the given album to the given pane
-     *
-     * @param album the album which author to display
-     * @param pane the pane to add the author to
-     */
-    private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) {
-        album_author = new Text();
-        album_author.setId("album_author");
-        album_author.setText(album.getUser().getUsername());
-        album_author.setFont(Font.font(24.0));
-        album_author.setLayoutX(707.0);
-        album_author.setLayoutY(97.0);
-        album_author.setStrokeType(StrokeType.OUTSIDE);
-        album_author.setStrokeWidth(0.0);
-        album_author.setWrappingWidth(270.0);
-
-        pane.getChildren().add(album_author);
-    }
-
     /**
      * Insert title of the given album to the given pane
      *
@@ -188,38 +133,18 @@ public class ViewAlbum implements Initializable {
      * @param pane the pane to add the title to
      */
     private void insertAlbumTitleToPane(ImageAlbum album, Pane pane) {
-        album_title = new Text();
-        album_title.setId("album_title");
-        album_title.setText(album.getTitle());
-        album_title.setFont(Font.font(48.0));
-        album_title.setLayoutX(751.0);
-        album_title.setLayoutY(65.0);
-        album_title.setStrokeType(StrokeType.OUTSIDE);
-        album_title.setStrokeWidth(0.0);
-        album_title.setWrappingWidth(653.0);
-
-        pane.getChildren().add(album_title);
+        album_titleField = new Text();
+        album_titleField.setId("album_titleField");
+        album_titleField.setText(album.getTitle());
+        album_titleField.setFont(Font.font(36.0));
+        album_titleField.setLayoutX(190.0);
+        album_titleField.setLayoutY(170.0);
+        album_titleField.setStrokeType(StrokeType.OUTSIDE);
+        album_titleField.setStrokeWidth(0.0);
+
+        pane.getChildren().add(album_titleField);
     }
 
-    /**
-     * Insert description of the given album to the given pane
-     *
-     * @param album the album which description to display
-     * @param pane the pane to add the description to
-     */
-    private void insertAlbumDescriptionToPane(ImageAlbum album, Pane pane) {
-        album_desc = new Text();
-        album_desc.setId("album_desc");
-        album_desc.setText(album.getDescription());
-        album_desc.setFont(Font.font(18.0));
-        album_desc.setLayoutX(707.0);
-        album_desc.setLayoutY(157.0);
-        album_desc.setStrokeType(StrokeType.OUTSIDE);
-        album_desc.setStrokeWidth(0.0);
-        album_desc.setWrappingWidth(229.0);
-
-        pane.getChildren().add(album_desc);
-    }
 
     /**
      * Insert tags label of the given album to the given pane
@@ -229,12 +154,11 @@ public class ViewAlbum implements Initializable {
     private void insertAlbumTagsLabelToPane(Pane pane) {
         Text tagsLabel = new Text();
         tagsLabel.setText("TAGS: ");
-        tagsLabel.setFont(Font.font(24));
-        tagsLabel.setLayoutX(551.0);
-        tagsLabel.setLayoutY(129.0);
+        tagsLabel.setFont(Font.font(24.0));
+        tagsLabel.setLayoutX(76.0);
+        tagsLabel.setLayoutY(206.0);
         tagsLabel.setStrokeType(StrokeType.OUTSIDE);
         tagsLabel.setStrokeWidth(0.0);
-        tagsLabel.setWrappingWidth(150.0);
 
         pane.getChildren().add(tagsLabel);
     }
@@ -246,24 +170,96 @@ public class ViewAlbum implements Initializable {
      * @param pane the pane to add the tags to
      */
     private void insertAlbumTagsToPane(ImageAlbum album, Pane pane) {
-        String tagsAsString = album.getTags().stream()
-                .map(Tag::getName)
-                .collect(Collectors.joining(", "));
-
-        System.out.println(tagsAsString);
-
-        album_tags = new Text();
-        album_tags.setText("tag1, tag2");
-        album_tags.setFont(Font.font(24.0));
-        album_tags.setLayoutX(707.0);
-        album_tags.setLayoutY(129.0);
-        album_tags.setStrokeType(StrokeType.OUTSIDE);
-        album_tags.setStrokeWidth(0.0);
-        album_tags.setWrappingWidth(270.0);
-
-        pane.getChildren().add(album_tags);
+        String tagsAsString = TagService.getTagsAsString(album.getTags());
+
+        album_tagsField = new Text();
+        album_tagsField.setText(tagsAsString);
+        album_tagsField.setFont(Font.font(24.0));
+        album_tagsField.setLayoutX(156.0);
+        album_tagsField.setLayoutY(206.0);
+        album_tagsField.setStrokeType(StrokeType.OUTSIDE);
+        album_tagsField.setStrokeWidth(0.0);
+
+        pane.getChildren().add(album_tagsField);
     }
 
+
+    /**
+     * Insert description label of the given album to the given pane
+     *
+     * @param pane the pane to add the description label to
+     */
+    private void insertAlbumDescriptionLabelToPane(Pane pane) {
+        Text descriptionLabel = new Text();
+        descriptionLabel.setText("DESCRIPTION: ");
+        descriptionLabel.setFont(Font.font(24.0));
+        descriptionLabel.setLayoutX(76.0);
+        descriptionLabel.setLayoutY(239.0);
+        descriptionLabel.setStrokeType(StrokeType.OUTSIDE);
+        descriptionLabel.setStrokeWidth(0.0);
+        descriptionLabel.setWrappingWidth(164.24609375);
+
+        pane.getChildren().add(descriptionLabel);
+    }
+
+    /**
+     * Insert description of the given album to the given pane
+     *
+     * @param album the album which description to display
+     * @param pane the pane to add the description to
+     */
+    private void insertAlbumDescriptionToPane(ImageAlbum album, Pane pane) {
+        album_descField = new Text();
+        album_descField.setId("album_descField");
+        album_descField.setText(album.getDescription());
+        album_descField.setFont(Font.font(14.0));
+        album_descField.setLayoutX(76.0);
+        album_descField.setLayoutY(261.0);
+        album_descField.setStrokeType(StrokeType.OUTSIDE);
+        album_descField.setStrokeWidth(0.0);
+        album_descField.setWrappingWidth(822.0);
+
+        pane.getChildren().add(album_descField);
+    }
+
+//    /**
+//     * Insert author label of the given album to the given pane
+//     *
+//     * @param pane the pane to add the author label to
+//     */
+//    private void insertAlbumAuthorLabelToPane(Pane pane) {
+//        Text authorLabel = new Text();
+//        authorLabel.setText("AUTHOR: ");
+//        authorLabel.setFont(Font.font(24));
+//        authorLabel.setLayoutX(551.0);
+//        authorLabel.setLayoutY(97.0);
+//        authorLabel.setStrokeType(StrokeType.OUTSIDE);
+//        authorLabel.setStrokeWidth(0.0);
+//        authorLabel.setWrappingWidth(150.0);
+//
+//        pane.getChildren().add(authorLabel);
+//    }
+//
+//    /**
+//     * Insert author of the given album to the given pane
+//     *
+//     * @param album the album which author to display
+//     * @param pane the pane to add the author to
+//     */
+//    private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) {
+//        album_author = new Text();
+//        album_author.setId("album_author");
+//        album_author.setText(album.getUser().getUsername());
+//        album_author.setFont(Font.font(24.0));
+//        album_author.setLayoutX(707.0);
+//        album_author.setLayoutY(97.0);
+//        album_author.setStrokeType(StrokeType.OUTSIDE);
+//        album_author.setStrokeWidth(0.0);
+//        album_author.setWrappingWidth(270.0);
+//
+//        pane.getChildren().add(album_author);
+//    }
+
     /**
      * Method that changes scene to Main page
      * @param mouseEvent
diff --git a/src/main/resources/NTNU/IDATT1002/view_album.fxml b/src/main/resources/NTNU/IDATT1002/view_album.fxml
index 8abf22bd..7d874a5a 100644
--- a/src/main/resources/NTNU/IDATT1002/view_album.fxml
+++ b/src/main/resources/NTNU/IDATT1002/view_album.fxml
@@ -86,39 +86,12 @@
                         <Button fx:id="scroll_button_next" layoutX="835.0" layoutY="221.0" mnemonicParsing="false" onAction="#loadNextScrollbarView" text="Next" />
                             </children>
                         </Pane>
-                        <GridPane fx:id="album_fields_grid_pane">
-                            <Pane prefHeight="981.0" prefWidth="975.0" style="-fx-background-color: #999999;">
+                        <GridPane fx:id="album_fields">
+                            <Pane>
                                 <children>
-                                    <Text layoutX="76.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TITLE:">
-                                        <font>
-                                            <Font name="System Bold" size="36.0" />
-                                        </font>
-                                    </Text>
-                                    <Text fx:id="album_titleField" layoutX="190.0" layoutY="170.0" strokeType="OUTSIDE" strokeWidth="0.0" text="title">
-                                       <font>
-                                          <Font size="36.0" />
-                                       </font>
-                                    </Text>
-                                            <Text layoutX="76.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TAGS:">
-                                                <font>
-                                                    <Font name="System Bold" size="24.0" />
-                                                </font>
-                                            </Text>
-                                    <Text fx:id="album_tagsField" layoutX="156.0" layoutY="206.0" strokeType="OUTSIDE" strokeWidth="0.0" text="#tags">
-                                       <font>
-                                          <Font size="24.0" />
-                                       </font>
-                                    </Text>
-                                            <Text layoutX="76.0" layoutY="239.0" strokeType="OUTSIDE" strokeWidth="0.0" text="DESCRIPTION:" wrappingWidth="164.24609375">
-                                                <font>
-                                                    <Font name="System Bold" size="24.0" />
-                                                </font>
-                                            </Text>
-                                    <Text fx:id="desc_textField" layoutX="76.0" layoutY="261.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." wrappingWidth="822.0">
-                                       <font>
-                                          <Font size="14.0" />
-                                       </font>
-                                    </Text>
+                                    <GridPane fx:id="album_fields_grid_pane">
+                                    </GridPane>
+
                                     <Text layoutX="76.0" layoutY="357.0" strokeType="OUTSIDE" strokeWidth="0.0" text="PICTURE METADATA:">
                                         <font>
                                             <Font name="System Bold" size="24.0" />
-- 
GitLab


From 041d02fa15fb6057b75d81147ccc9557749e285a Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 15:57:14 +0100
Subject: [PATCH 4/7] Add album author and label to view single album

---
 .../NTNU/IDATT1002/controllers/ViewAlbum.java | 115 +++++++++---------
 .../resources/NTNU/IDATT1002/view_album.fxml  |   6 +
 2 files changed, 64 insertions(+), 57 deletions(-)

diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index 25fd13b1..057a43af 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -38,24 +38,30 @@ public class ViewAlbum implements Initializable {
     public Button tbar_explore;
     public Button tbar_map;
     public Button tbar_upload;
-    public Button create_album_pdf;
-    public Pane metadata_pane;
-    public Text album_descField;
-    public Text album_tagsField;
+    public Button tbar_searchBtn;
+    public Button tbar_albums;
+
+
     public Text album_titleField;
-    public Button scroll_button_next;
-    public Button scroll_button_previous;
+    public Text album_authorField;
+    public Text album_tagsField;
+    public Text album_descField;
+
+    public Pane metadata_pane;
+    public Button create_album_pdf;
+
+    public ImageView main_picture;
+
     public ImageView scroll_picture6;
     public ImageView scroll_picture5;
     public ImageView scroll_picture4;
     public ImageView scroll_picture3;
     public ImageView scroll_picture2;
     public ImageView scroll_picture1;
+    public Button scroll_button_next;
+    public Button scroll_button_previous;
     public Text picture_title_field;
     public Text picture_tagsField;
-    public ImageView main_picture;
-    public Button tbar_searchBtn;
-    public Button tbar_albums;
 
     @FXML
     public GridPane album_fields_grid_pane;
@@ -72,13 +78,13 @@ public class ViewAlbum implements Initializable {
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
         album_field_container = new Pane();
-        album_field_container.setPrefHeight(981.0);
+        album_field_container.setPrefHeight(1011.0);
         album_field_container.setPrefWidth(975.0);
         album_field_container.setStyle("-fx-background-color: #999999;");
 
         Optional<ImageAlbum> foundImageAlbum = imageAlbumService.getImageAlbumById(currentAlbumId);
-        System.out.println(foundImageAlbum.isPresent());
         foundImageAlbum.ifPresent(imageAlbum -> addAlbumToPane(imageAlbum, album_field_container));
+
         album_fields_grid_pane.add(album_field_container, 0, 0);
     }
 
@@ -97,10 +103,8 @@ public class ViewAlbum implements Initializable {
         insertAlbumTitleLabelToPane(pane);
         insertAlbumTitleToPane(album, pane);
 
-
-        // TODO: author?git 
-//        insertAlbumAuthorLabelToPane(pane);
-//        insertAlbumAuthorToPane(album, pane);
+        insertAlbumAuthorLabelToPane(pane);
+        insertAlbumAuthorToPane(album, pane);
 
         insertAlbumTagsLabelToPane(pane);
         insertAlbumTagsToPane(album, pane);
@@ -145,6 +149,41 @@ public class ViewAlbum implements Initializable {
         pane.getChildren().add(album_titleField);
     }
 
+    /**
+     * Insert author label of the given album to the given pane
+     *
+     * @param pane the pane to add the author label to
+     */
+    private void insertAlbumAuthorLabelToPane(Pane pane) {
+        Text authorLabel = new Text();
+        authorLabel.setText("AUTHOR: ");
+        authorLabel.setFont(Font.font(24.0));
+        authorLabel.setLayoutX(76.0);
+        authorLabel.setLayoutY(206.0);
+        authorLabel.setStrokeType(StrokeType.OUTSIDE);
+        authorLabel.setStrokeWidth(0.0);
+
+        pane.getChildren().add(authorLabel);
+    }
+
+    /**
+     * Insert author of the given album to the given pane
+     *
+     * @param album the album which author to display
+     * @param pane the pane to add the author to
+     */
+    private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) {
+        album_authorField = new Text();
+        album_authorField.setId("album_authorField");
+        album_authorField.setText(album.getUser().getUsername());
+        album_authorField.setFont(Font.font(24.0));
+        album_authorField.setLayoutX(200.0);
+        album_authorField.setLayoutY(206.0);
+        album_authorField.setStrokeType(StrokeType.OUTSIDE);
+        album_authorField.setStrokeWidth(0.0);
+
+        pane.getChildren().add(album_authorField);
+    }
 
     /**
      * Insert tags label of the given album to the given pane
@@ -156,7 +195,7 @@ public class ViewAlbum implements Initializable {
         tagsLabel.setText("TAGS: ");
         tagsLabel.setFont(Font.font(24.0));
         tagsLabel.setLayoutX(76.0);
-        tagsLabel.setLayoutY(206.0);
+        tagsLabel.setLayoutY(239.0);
         tagsLabel.setStrokeType(StrokeType.OUTSIDE);
         tagsLabel.setStrokeWidth(0.0);
 
@@ -176,7 +215,7 @@ public class ViewAlbum implements Initializable {
         album_tagsField.setText(tagsAsString);
         album_tagsField.setFont(Font.font(24.0));
         album_tagsField.setLayoutX(156.0);
-        album_tagsField.setLayoutY(206.0);
+        album_tagsField.setLayoutY(239.0);
         album_tagsField.setStrokeType(StrokeType.OUTSIDE);
         album_tagsField.setStrokeWidth(0.0);
 
@@ -194,7 +233,7 @@ public class ViewAlbum implements Initializable {
         descriptionLabel.setText("DESCRIPTION: ");
         descriptionLabel.setFont(Font.font(24.0));
         descriptionLabel.setLayoutX(76.0);
-        descriptionLabel.setLayoutY(239.0);
+        descriptionLabel.setLayoutY(271.0);
         descriptionLabel.setStrokeType(StrokeType.OUTSIDE);
         descriptionLabel.setStrokeWidth(0.0);
         descriptionLabel.setWrappingWidth(164.24609375);
@@ -214,7 +253,7 @@ public class ViewAlbum implements Initializable {
         album_descField.setText(album.getDescription());
         album_descField.setFont(Font.font(14.0));
         album_descField.setLayoutX(76.0);
-        album_descField.setLayoutY(261.0);
+        album_descField.setLayoutY(294.0);
         album_descField.setStrokeType(StrokeType.OUTSIDE);
         album_descField.setStrokeWidth(0.0);
         album_descField.setWrappingWidth(822.0);
@@ -222,44 +261,6 @@ public class ViewAlbum implements Initializable {
         pane.getChildren().add(album_descField);
     }
 
-//    /**
-//     * Insert author label of the given album to the given pane
-//     *
-//     * @param pane the pane to add the author label to
-//     */
-//    private void insertAlbumAuthorLabelToPane(Pane pane) {
-//        Text authorLabel = new Text();
-//        authorLabel.setText("AUTHOR: ");
-//        authorLabel.setFont(Font.font(24));
-//        authorLabel.setLayoutX(551.0);
-//        authorLabel.setLayoutY(97.0);
-//        authorLabel.setStrokeType(StrokeType.OUTSIDE);
-//        authorLabel.setStrokeWidth(0.0);
-//        authorLabel.setWrappingWidth(150.0);
-//
-//        pane.getChildren().add(authorLabel);
-//    }
-//
-//    /**
-//     * Insert author of the given album to the given pane
-//     *
-//     * @param album the album which author to display
-//     * @param pane the pane to add the author to
-//     */
-//    private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) {
-//        album_author = new Text();
-//        album_author.setId("album_author");
-//        album_author.setText(album.getUser().getUsername());
-//        album_author.setFont(Font.font(24.0));
-//        album_author.setLayoutX(707.0);
-//        album_author.setLayoutY(97.0);
-//        album_author.setStrokeType(StrokeType.OUTSIDE);
-//        album_author.setStrokeWidth(0.0);
-//        album_author.setWrappingWidth(270.0);
-//
-//        pane.getChildren().add(album_author);
-//    }
-
     /**
      * Method that changes scene to Main page
      * @param mouseEvent
diff --git a/src/main/resources/NTNU/IDATT1002/view_album.fxml b/src/main/resources/NTNU/IDATT1002/view_album.fxml
index 7d874a5a..2a31bec9 100644
--- a/src/main/resources/NTNU/IDATT1002/view_album.fxml
+++ b/src/main/resources/NTNU/IDATT1002/view_album.fxml
@@ -89,7 +89,13 @@
                         <GridPane fx:id="album_fields">
                             <Pane>
                                 <children>
+
                                     <GridPane fx:id="album_fields_grid_pane">
+                                        <Text layoutX="76.0" layoutY="357.0" strokeType="OUTSIDE" strokeWidth="0.0" text="We're sorry, but we could not find the album you were looking for :(">
+                                            <font>
+                                                <Font name="System Bold" size="24.0" />
+                                            </font>
+                                        </Text>
                                     </GridPane>
 
                                     <Text layoutX="76.0" layoutY="357.0" strokeType="OUTSIDE" strokeWidth="0.0" text="PICTURE METADATA:">
-- 
GitLab


From 9fe8c699d0117cfdc01917a0c2a6617e7459511c Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 16:06:05 +0100
Subject: [PATCH 5/7] Edit album field populating methods javadoc in ViewAlbum
 to reflect intent

---
 .../NTNU/IDATT1002/controllers/ViewAlbum.java    | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index 057a43af..9003f14b 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -75,6 +75,12 @@ public class ViewAlbum implements Initializable {
         currentAlbumId = App.ex.getChosenAlbumId();
     }
 
+    /**
+     * Initialize view with real album data.
+     *
+     * @param url
+     * @param resourceBundle
+     */
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
         album_field_container = new Pane();
@@ -88,13 +94,19 @@ public class ViewAlbum implements Initializable {
         album_fields_grid_pane.add(album_field_container, 0, 0);
     }
 
+    /**
+     * Add given album to given pane.
+     *
+     * @param imageAlbum the album to add
+     * @param pane the pane to add the album to 
+     */
     private void addAlbumToPane(ImageAlbum imageAlbum, Pane pane) {
         addAlbumFieldsToPane(imageAlbum, pane);
-
     }
 
     /**
-     * Add all components needed to display an album.
+     * Add albums fields and labels to display an album by.
+     * This includes title, author, tags and description
      *
      * @param album the album to display
      * @param pane the pane to add the album to
-- 
GitLab


From c642fc9ac3bd8eda64e71eab89f4e46998aa6df4 Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 16:07:54 +0100
Subject: [PATCH 6/7] Shorten album descriptions in LoadDatabase.load to fit in
 255 character restriction in MySQL VARCHAR-field

---
 .../NTNU/IDATT1002/database/LoadDatabase.java | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java b/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
index a527b776..769283e4 100644
--- a/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
+++ b/src/main/java/NTNU/IDATT1002/database/LoadDatabase.java
@@ -48,7 +48,7 @@ public class LoadDatabase {
                 new File("t14-test-images/1.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("First",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
@@ -66,7 +66,7 @@ public class LoadDatabase {
                 new File("t14-test-images/7.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Seventh",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
@@ -93,7 +93,7 @@ public class LoadDatabase {
                 new File("t14-test-images/2.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Second",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -110,7 +110,7 @@ public class LoadDatabase {
                 new File("t14-test-images/10.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Tenth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#fjords"),
                         new Tag("#nature"),
@@ -137,7 +137,7 @@ public class LoadDatabase {
                 new File("t14-test-images/3.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Third",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -155,7 +155,7 @@ public class LoadDatabase {
                 new File("t14-test-images/9.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Ninth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#art"),
                         new Tag("#nature"),
@@ -184,7 +184,7 @@ public class LoadDatabase {
                 tags).get();
 
         imageAlbumService.createImageAlbum("Fourth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#grass"),
@@ -202,7 +202,7 @@ public class LoadDatabase {
                 new File("t14-test-images/5.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Fifth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#water"),
@@ -230,7 +230,7 @@ public class LoadDatabase {
                 new File("t14-test-images/6.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Sixth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#mountains"),
                         new Tag("#waterfall"),
@@ -258,7 +258,7 @@ public class LoadDatabase {
                 new File("t14-test-images/8.jpg"),
                 tags).get();
         imageAlbumService.createImageAlbum("Eighth",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ",
                 user,
                 Arrays.asList(new Tag("#winter"),
                         new Tag("#nature"),
-- 
GitLab


From b17cf62ca5955f560c1fb946190d2b0204f78b20 Mon Sep 17 00:00:00 2001
From: Eirik Steira <eirsteir@stud.ntnu.no>
Date: Thu, 26 Mar 2020 16:09:27 +0100
Subject: [PATCH 7/7] Add class javadoc to TagRepository

---
 src/main/java/NTNU/IDATT1002/service/TagService.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/main/java/NTNU/IDATT1002/service/TagService.java b/src/main/java/NTNU/IDATT1002/service/TagService.java
index 71519d1f..2cc38805 100644
--- a/src/main/java/NTNU/IDATT1002/service/TagService.java
+++ b/src/main/java/NTNU/IDATT1002/service/TagService.java
@@ -6,7 +6,16 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+
+/**
+ * Tag Service. Supports common domain specific operations such as converting a list of tags to a string
+ * and opposite.
+ *
+ * @author Eirik Steira
+ * @version 1.0 26.03.20
+ */
 public class TagService {
+
     /**
      * Retrieves tags from text field and converts them to a list of tag objects.
      *
-- 
GitLab