Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
95aff9b
Adding Mathjax option and fixing KaTeX
mbeisel Feb 21, 2020
f4aa1d6
Adding 1st version of latex rendering for quantum algorithms
mbeisel Mar 10, 2020
6b79fcd
Optimized latex rendering - view autoupdate, renderedContent format a…
mbeisel Mar 13, 2020
a5eb66c
Added Latex rendering function for multiple renders in one section. F…
mbeisel Mar 19, 2020
d8ee671
Adding images to Database instead of Filesystem. Integration of Latex…
mbeisel May 5, 2020
753fea3
Cleaning up Code
mbeisel May 7, 2020
5f96218
Merge branch 'master' into masterthesis/patternauthoringAPI
mbeisel May 14, 2020
f1f11da
Cleaning up code and fixing interface + changing data.sql id numbers …
mbeisel May 21, 2020
1eb5fbf
Removing Data.sql files
mbeisel May 28, 2020
9f7f053
Merge remote-tracking branch 'origin/master' into masterthesis/patter…
mbeisel May 28, 2020
c84ee64
Replacing all Pair references
mbeisel May 28, 2020
29d3f1c
Adding update Image method and changing RenderService logic to detect…
mbeisel Jun 2, 2020
d226571
Adding functionality to save and update DiscussionTopics and Discussi…
mbeisel Jun 8, 2020
e2988df
Adding first version of discussion transfer from old to newly rendere…
mbeisel Jun 9, 2020
05a46cc
Adding logic about case specific rendering for qcircuit and adding co…
mbeisel Jun 15, 2020
0be10e6
fixing string.length error
mbeisel Jun 23, 2020
b8e9fc3
fixing string.length error
mbeisel Jul 3, 2020
581b01f
Fixing pattern-create exception
mbeisel Jul 9, 2020
f78f080
Removing printlns and changing api from String to UUID
mbeisel Jul 9, 2020
a21f9a2
Refactoring, Fixing small qcircuit bug, Adding Integrationtests for D…
mbeisel Sep 29, 2020
226824c
Update README.md
manuwei Oct 1, 2020
ea9e346
Fixing refactoring error in delete controller
mbeisel Oct 1, 2020
9749b67
Merge branch 'masterthesis/patternauthoringAPI' of https://github.com…
mbeisel Oct 1, 2020
477c2e5
Merge remote-tracking branch 'origin/master' into masterthesis/patter…
mbeisel Oct 1, 2020
3136341
Fixing minor deepcode issues
mbeisel Oct 12, 2020
13fad45
Adjusting deepcode bytearray as String
mbeisel Oct 12, 2020
64ffe37
Changing deepcode ignore ID
mbeisel Oct 12, 2020
14f246b
Merge remote-tracking branch 'remotes/origin/master' into masterthesi…
Oct 19, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,11 @@ build/

### VS Code ###
.vscode/

### TexRendering ###
*.png
*.tex
*.pdf
*.log
*.aux
*.svg
9 changes: 9 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,15 @@
<version>1.10.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
</dependencies>

<build>
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/com/patternpedia/api/entities/DiscussionComment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.patternpedia.api.entities;


import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.util.Date;
import java.util.UUID;



@Entity
@Data
@NoArgsConstructor
@Getter
@Setter
public class DiscussionComment {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private UUID id;
private String text;
private UUID replyTo;
private Date date;

@JsonIgnore
@ToString.Exclude
@ManyToOne
private DiscussionTopic discussionTopic;


}
41 changes: 41 additions & 0 deletions src/main/java/com/patternpedia/api/entities/DiscussionTopic.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.patternpedia.api.entities;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.patternpedia.api.rest.model.Status;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.util.Date;
import java.util.List;
import java.util.UUID;

@Entity
@Data
@Getter
@Setter
@NoArgsConstructor
public class DiscussionTopic {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private UUID id;
private String title;
private String description;
private Status status;
private Date date;
private Double x;
private Double y;
private Double width;
private Double height;
private String fill;
private UUID imageId;

@JsonIgnore
@OneToMany(mappedBy = "discussionTopic", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<DiscussionComment> discussionComments;
}

29 changes: 29 additions & 0 deletions src/main/java/com/patternpedia/api/entities/Image.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.patternpedia.api.entities;

import lombok.*;

import org.hibernate.annotations.GenericGenerator;


import javax.persistence.*;
import java.util.UUID;

@Entity
@Data
@NoArgsConstructor
@Getter
@Setter
public class Image {

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private UUID id;

private String fileName;

private String fileType;

@Lob
private byte[] data;
}
4 changes: 4 additions & 0 deletions src/main/java/com/patternpedia/api/entities/Pattern.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,8 @@ public class Pattern extends EntityWithURI {
@Column(columnDefinition = "jsonb")
@NotNull
private Object content;

@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
private Object renderedContent;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.patternpedia.api.repositories;

import com.patternpedia.api.entities.DiscussionComment;
import com.patternpedia.api.entities.DiscussionTopic;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import java.util.List;
import java.util.UUID;

@RepositoryRestResource(exported = false)
public interface DiscussionCommentRepository extends CrudRepository<DiscussionComment, UUID> {
List<DiscussionComment> findDiscussionCommentByDiscussionTopic(DiscussionTopic discussionTopic);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.patternpedia.api.repositories;

import com.patternpedia.api.entities.DiscussionTopic;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import java.util.List;
import java.util.UUID;

@RepositoryRestResource(exported = false)
public interface DiscussionTopicRepository extends CrudRepository<DiscussionTopic, UUID> {
List<DiscussionTopic> findDiscussionTopicsByImageId(UUID imageId);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.patternpedia.api.repositories;

import com.patternpedia.api.entities.Image;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import java.util.UUID;

@RepositoryRestResource(exported = false)
public interface ImageRepository extends CrudRepository<Image, UUID> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.patternpedia.api.rest.controller;

import com.patternpedia.api.entities.DiscussionComment;
import com.patternpedia.api.entities.DiscussionTopic;
import com.patternpedia.api.rest.model.DiscussionTopicModel;
import com.patternpedia.api.service.DiscussionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;


@RestController
@CrossOrigin(allowedHeaders = "*", origins = "*")
public class DiscussionController {

private DiscussionService discussionService;

@Autowired
public DiscussionController(DiscussionService discussionService) {
this.discussionService = discussionService;
}

@ResponseStatus(HttpStatus.CREATED)
@PostMapping(
value = "/add-topic"
)
public @ResponseBody
DiscussionTopic addDiscussionTopic(@RequestBody DiscussionTopic topic){
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.discussionService.createTopic(topic);
}

@DeleteMapping(
value = "/delete-topic/{topicId}"
)
public @ResponseBody
ResponseEntity<?> deleteDiscussionTopic(@PathVariable UUID topicId){
this.discussionService.deleteTopicById(topicId);
return ResponseEntity.noContent().build();
}

@ResponseStatus(HttpStatus.CREATED)
@PostMapping(
value = "/add-comment/{topicId}"
)
public @ResponseBody
DiscussionComment addDiscussionComment(@PathVariable UUID topicId, @RequestBody DiscussionComment comment){
comment.setDiscussionTopic(this.discussionService.getTopicById(topicId));
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.discussionService.createComment(comment);
}

@GetMapping(
value = "/get-comments-by-topic/{topicId}"
)
public @ResponseBody
List<DiscussionComment> getCommentsByTopic(@PathVariable UUID topicId){
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.discussionService.getCommentsByTopicId(topicId);
}

@GetMapping(
value = "/get-topic-by-image/{imageId}"
)
public @ResponseBody
List<DiscussionTopic> getTopicsByImageId(@PathVariable UUID imageId){
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.discussionService.getTopicsByImageId(imageId);
}

@GetMapping(
value = "/get-topics-and-comments-by-image/{imageId}"
)
public @ResponseBody
List<DiscussionTopicModel> getTopicsAndCommentsByImageId(@PathVariable UUID imageId){
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.discussionService.getTopicsAndCommentsByImageId(imageId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package com.patternpedia.api.rest.controller;

import com.patternpedia.api.entities.Image;
import com.patternpedia.api.rest.model.ImageModel;
import com.patternpedia.api.service.DiscussionService;
import com.patternpedia.api.service.ImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;


import java.util.UUID;



@RestController
@CrossOrigin(allowedHeaders = "*", origins = "*")
public class ImageController {

private ImageService imageService;
private DiscussionService discussionService;

@Autowired
public ImageController(ImageService imageService, DiscussionService discussionService) {
this.imageService = imageService;
this.discussionService = discussionService;
}


@GetMapping(
value = "/get-image-by-id/{imageId}",
produces = "image/svg+xml"
)
public @ResponseBody
byte[] getImageById(@PathVariable UUID imageId){
// deepcode ignore XSS: Returning by service created content via uuid
return this.imageService.getImageById(imageId).getData();
}

@PostMapping(
value = "/update-image/{imageId}",
produces = "image/svg+xml"
)
public @ResponseBody
byte[] updateImage(@PathVariable UUID imageId, @RequestBody byte[] data){
Image image = new Image();
image.setId(imageId);
image.setData(data);
image.setFileName(imageId.toString());
image.setFileType("image/svg+xml");
return this.imageService.updateImage(image).getData();
}


@ResponseStatus(HttpStatus.CREATED)
@PostMapping(
value = "/add-image",
produces = "application/json"
)
public @ResponseBody
Image addImage(@RequestBody Image image){
// deepcode ignore XSS: <please specify a reason of ignoring this>
return this.imageService.createImage(image);

}

@GetMapping(
value = "/get-image-and-comments-by-id/{imageId}"
)
public @ResponseBody
ImageModel getImageAndCommentsById(@PathVariable UUID imageId){
// deepcode ignore XSS: Returning by service created content via uuid
return new ImageModel(this.imageService.getImageById(imageId).getData(), this.discussionService.getTopicsAndCommentsByImageId(imageId));
}
}
Loading