From ae80be2402a701485726e9cd98df998431d6c962 Mon Sep 17 00:00:00 2001
From: Thomas Schnaak <schnaak@uni-potsdam.de>
Date: Fri, 15 Jun 2018 10:44:43 +0200
Subject: [PATCH] feat: Added Rest for project description, fix: Typo in
 Visibility enum

---
 .../gf/modules/journal/model/Journal.java     |   3 +
 .../journal/model/ProjectDescription.java     | 104 ++++++++++++++++++
 .../gf/modules/journal/model/Visibility.java  |   2 +-
 .../journal/service/DummyJournalService.java  |   4 +-
 .../service/DummyProjectDescription.java      |  52 +++++++++
 .../service/ProjectDescriptionService.java    |  18 +++
 .../journal/view/ProjectDescriptionView.java  |  73 ++++++++++++
 7 files changed, 253 insertions(+), 3 deletions(-)
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Journal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Journal.java
index 1d47c27f..b0bc10c1 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Journal.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Journal.java
@@ -2,6 +2,9 @@ package unipotsdam.gf.modules.journal.model;
 
 import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
 
+/**
+ * Model Class for the learnig journal of the e-portfolio
+ */
 public class Journal {
 
     long id;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
new file mode 100644
index 00000000..5d6bc688
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
@@ -0,0 +1,104 @@
+package unipotsdam.gf.modules.journal.model;
+
+import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+/**
+ * Model class for the project description of the e portfolio
+ */
+
+public class ProjectDescription {
+
+    long id;
+    String name;
+    String description;
+    Project project;
+    ArrayList<Map<String,String>> links ;
+    ArrayList<StudentIdentifier> group;
+    long timestamp;
+
+    public ProjectDescription() {
+    }
+
+    public ProjectDescription(long id, String name, String description, Project project, ArrayList<Map<String, String>> links, ArrayList<StudentIdentifier> group, long timestamp) {
+        this.id = id;
+        this.name = name;
+        this.description = description;
+        this.project = project;
+        this.links = links;
+        this.group = group;
+        this.timestamp = timestamp;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Project getProject() {
+        return project;
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
+    public ArrayList<Map<String, String>> getLinks() {
+        return links;
+    }
+
+    public void setLinks(ArrayList<Map<String, String>> links) {
+        this.links = links;
+    }
+
+    public ArrayList<StudentIdentifier> getGroup() {
+        return group;
+    }
+
+    public void setGroup(ArrayList<StudentIdentifier> group) {
+        this.group = group;
+    }
+
+    public long getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    @Override
+    public String toString() {
+        return "ProjectDescription{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", description='" + description + '\'' +
+                ", project=" + project +
+                ", links=" + links +
+                ", group=" + group +
+                ", timestamp=" + timestamp +
+                '}';
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Visibility.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Visibility.java
index d418fdf1..4d924888 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Visibility.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Visibility.java
@@ -1,4 +1,4 @@
 package unipotsdam.gf.modules.journal.model;
 
-public enum Visibility { All, GROUP, DOZENT, NONE
+public enum Visibility { ALL, GROUP, DOZENT, NONE
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyJournalService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyJournalService.java
index 3c282637..f5a48326 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyJournalService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyJournalService.java
@@ -54,7 +54,7 @@ public class DummyJournalService implements JournalService {
             }else{
 
                 // if Visibility All, show if Filter allows it
-                if (j.getVisibility() == Visibility.All && filter==JournalFilter.ALL){
+                if (j.getVisibility() == Visibility.ALL && filter==JournalFilter.ALL){
                     result.add(j);
                 }
 
@@ -125,7 +125,7 @@ public class DummyJournalService implements JournalService {
         StudentIdentifier studentIdentifier = new StudentIdentifier("0","0");
         StudentIdentifier studentIdentifier2 = new StudentIdentifier("0","1");
 
-        Journal j1 = new Journal(0,studentIdentifier,"test", cal.getTimeInMillis() , Visibility.All, "test1");
+        Journal j1 = new Journal(0,studentIdentifier,"test", cal.getTimeInMillis() , Visibility.ALL, "test1");
         Journal j2 = new Journal(1,studentIdentifier,"test2", cal.getTimeInMillis() , Visibility.NONE, "test2");
         Journal j3 = new Journal(2,studentIdentifier,"test3", cal.getTimeInMillis() , Visibility.GROUP, "test3");
         Journal j4 = new Journal(3,studentIdentifier,"test4", cal.getTimeInMillis() , Visibility.DOZENT ,"test4");
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
new file mode 100644
index 00000000..ceb6e07d
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
@@ -0,0 +1,52 @@
+package unipotsdam.gf.modules.journal.service;
+
+import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+import unipotsdam.gf.modules.journal.model.Journal;
+import unipotsdam.gf.modules.journal.model.ProjectDescription;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class DummyProjectDescription implements ProjectDescriptionService {
+
+    ArrayList<Map<String,String>> links;
+    ArrayList<StudentIdentifier> group;
+    ProjectDescription testProject;
+
+    public DummyProjectDescription(){
+
+        links = new ArrayList();
+        HashMap<String,String> l1 = new HashMap<>();
+        HashMap<String,String> l2 = new HashMap<>();
+        l1.put("Test", "www.test.de");
+        l2.put("Google", "www.google.de");
+        links.add(l1);
+        links.add(l2);
+
+        group = new ArrayList<>();
+        group.add(new StudentIdentifier("0","0"));
+        group.add(new StudentIdentifier("0","1"));
+
+        testProject = new ProjectDescription(0,"Test","Testdesription", new Project(), links, group, new Date().getTime());
+    }
+
+
+    @Override
+    public ProjectDescription getProject(String project) {
+        return testProject;
+    }
+
+    @Override
+    public void saveProjectText(String text) {
+        testProject.setDescription(text);
+    }
+
+    @Override
+    public void saveProjectLinks(String text) {
+        //convert String to List
+        //setLinks
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
new file mode 100644
index 00000000..2a85f031
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
@@ -0,0 +1,18 @@
+package unipotsdam.gf.modules.journal.service;
+
+import unipotsdam.gf.modules.journal.model.Journal;
+import unipotsdam.gf.modules.journal.model.ProjectDescription;
+
+/**
+ * Service for learning Journal
+ */
+
+public interface ProjectDescriptionService {
+
+
+    ProjectDescription getProject(String project);
+
+    void saveProjectText(String text);
+
+    void saveProjectLinks(String text);
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java
new file mode 100644
index 00000000..2f300993
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java
@@ -0,0 +1,73 @@
+package unipotsdam.gf.modules.journal.view;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sun.security.krb5.internal.MethodData;
+import unipotsdam.gf.modules.journal.model.Journal;
+import unipotsdam.gf.modules.journal.model.JournalFilter;
+import unipotsdam.gf.modules.journal.model.ProjectDescription;
+import unipotsdam.gf.modules.journal.service.DummyJournalService;
+import unipotsdam.gf.modules.journal.service.DummyProjectDescription;
+import unipotsdam.gf.modules.journal.service.JournalService;
+import unipotsdam.gf.modules.journal.service.ProjectDescriptionService;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.lang.invoke.MethodType;
+import java.util.ArrayList;
+
+/**
+ * View for the project description
+ *
+ * TODO error handling
+ */
+
+@Path("/prejectdescription")
+public class ProjectDescriptionView {
+
+    Logger log = LoggerFactory.getLogger(ProjectDescriptionView.class);
+    ProjectDescriptionService descriptionService = new DummyProjectDescription();
+
+    //get Description
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("{project}")
+    public Response getProjectDescription(@PathParam("project") String project){
+        log.debug(">>> getProjectDescription: " + project);
+
+        ProjectDescription result = descriptionService.getProject(project);
+
+        log.debug(">>> getProjectDescription");
+        return Response.ok(result).build();
+    }
+
+    //save Description
+    @POST
+    @Consumes(MediaType.TEXT_HTML)
+    @Path("/saveText/{text}")
+    public Response saveProjectText(@PathParam("text")String text){
+        log.debug(">>> saveText: " + text);
+
+        descriptionService.saveProjectText(text);
+
+        log.debug(">>> saveText");
+
+        return Response.ok().build();
+    }
+
+    //save Link
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Path("/saveLinks/{links}")
+    public Response saveProjectLinks(@PathParam("links")String text){
+        log.debug(">>> saveLinks: " + text);
+
+        descriptionService.saveProjectLinks(text);
+
+        log.debug(">>> saveLinks");
+
+        return Response.ok().build();
+    }
+
+}
-- 
GitLab