From a4bbb152f3c0dbf52a723e20781d0bfa558d8cf1 Mon Sep 17 00:00:00 2001 From: Jan Tymel <jan.tymel@notix.cz> Date: Mon, 6 Jul 2020 13:15:14 +0200 Subject: [PATCH] Add initial version of entities --- pom.xml | 8 +++++ .../com/example/demo/DemoApplication.java | 23 +++++++++++++++ .../example/demo/domain/AssessmentLevel.java | 19 ++++++++++++ .../com/example/demo/domain/BaseLevel.java | 12 ++++++++ .../com/example/demo/domain/GameLevel.java | 29 +++++++++++++++++++ .../java/com/example/demo/domain/Hint.java | 18 ++++++++++++ .../com/example/demo/domain/InfoLevel.java | 15 ++++++++++ .../com/example/demo/{ => domain}/Person.java | 2 +- .../repository/AssessmentLevelRepository.java | 7 +++++ .../demo/repository/BaseLevelRepository.java | 7 +++++ .../demo/repository/GameLevelRepository.java | 7 +++++ .../{ => repository}/PersonRepository.java | 3 +- 12 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/AssessmentLevel.java create mode 100644 src/main/java/com/example/demo/domain/BaseLevel.java create mode 100644 src/main/java/com/example/demo/domain/GameLevel.java create mode 100644 src/main/java/com/example/demo/domain/Hint.java create mode 100644 src/main/java/com/example/demo/domain/InfoLevel.java rename src/main/java/com/example/demo/{ => domain}/Person.java (97%) create mode 100644 src/main/java/com/example/demo/repository/AssessmentLevelRepository.java create mode 100644 src/main/java/com/example/demo/repository/BaseLevelRepository.java create mode 100644 src/main/java/com/example/demo/repository/GameLevelRepository.java rename src/main/java/com/example/demo/{ => repository}/PersonRepository.java (69%) diff --git a/pom.xml b/pom.xml index e2432201..8e0c6095 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,8 @@ <properties> <java.version>11</java.version> + + <projectlombok.version>1.18.12</projectlombok.version> </properties> <dependencies> @@ -45,6 +47,12 @@ </exclusion> </exclusions> </dependency> + + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>${projectlombok.version}</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index 41072b94..41df739f 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -1,5 +1,9 @@ package com.example.demo; +import com.example.demo.domain.GameLevel; +import com.example.demo.domain.Person; +import com.example.demo.repository.GameLevelRepository; +import com.example.demo.repository.PersonRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; @@ -9,6 +13,7 @@ import org.springframework.context.annotation.Bean; import java.util.Arrays; import java.util.List; +import java.util.Optional; @SpringBootApplication public class DemoApplication { @@ -56,4 +61,22 @@ public class DemoApplication { "\t" + personRepository.findByName(person.getName()).toString())); }; } + + @Bean + CommandLineRunner anotherDemo(GameLevelRepository gameLevelRepository) { + return args -> { + + gameLevelRepository.deleteAll(); + + GameLevel gameLevel = new GameLevel(); + gameLevel.setTitle("Title"); + + + GameLevel savedGameLevel = gameLevelRepository.save(gameLevel); + log.info("Saved game level: {}", savedGameLevel); + + Optional<GameLevel> foundGameLevel = gameLevelRepository.findById(savedGameLevel.getId()); + log.info("Saved game level: {}", foundGameLevel); + }; + } } diff --git a/src/main/java/com/example/demo/domain/AssessmentLevel.java b/src/main/java/com/example/demo/domain/AssessmentLevel.java new file mode 100644 index 00000000..3b813c47 --- /dev/null +++ b/src/main/java/com/example/demo/domain/AssessmentLevel.java @@ -0,0 +1,19 @@ +package com.example.demo.domain; + +import lombok.Data; +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +@Data +public class AssessmentLevel extends BaseLevel { + + @Id + @GeneratedValue + private Long id; + + private String assessmentType; + + +} diff --git a/src/main/java/com/example/demo/domain/BaseLevel.java b/src/main/java/com/example/demo/domain/BaseLevel.java new file mode 100644 index 00000000..988e4a5c --- /dev/null +++ b/src/main/java/com/example/demo/domain/BaseLevel.java @@ -0,0 +1,12 @@ +package com.example.demo.domain; + +import lombok.Data; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +@Data +public class BaseLevel { + private String title; + private String estimatedDuration; + private Long maxScore; +} diff --git a/src/main/java/com/example/demo/domain/GameLevel.java b/src/main/java/com/example/demo/domain/GameLevel.java new file mode 100644 index 00000000..27a33160 --- /dev/null +++ b/src/main/java/com/example/demo/domain/GameLevel.java @@ -0,0 +1,29 @@ +package com.example.demo.domain; + +import lombok.Data; +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + +import java.util.List; + + +@NodeEntity +@Data +public class GameLevel extends BaseLevel { + + @Id + @GeneratedValue + private Long id; + + private String content; + private String solutionPenalized; + private String flag; + private String solution; + private String attachments; + private String incorrectFlagLimit; + + @Relationship(type = "GAME_LEVEL_HINTS", direction = Relationship.UNDIRECTED) + private List<Hint> hints; +} diff --git a/src/main/java/com/example/demo/domain/Hint.java b/src/main/java/com/example/demo/domain/Hint.java new file mode 100644 index 00000000..e4a2c414 --- /dev/null +++ b/src/main/java/com/example/demo/domain/Hint.java @@ -0,0 +1,18 @@ +package com.example.demo.domain; + +import lombok.Data; +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; + +@Data +public class Hint { + + @Id + @GeneratedValue + private Long id; + + private String title; + private String content; + private String hintPenalty; + private String orderInLevel; +} diff --git a/src/main/java/com/example/demo/domain/InfoLevel.java b/src/main/java/com/example/demo/domain/InfoLevel.java new file mode 100644 index 00000000..eaed3579 --- /dev/null +++ b/src/main/java/com/example/demo/domain/InfoLevel.java @@ -0,0 +1,15 @@ +package com.example.demo.domain; + +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +public class InfoLevel extends BaseLevel { + + @Id + @GeneratedValue + private Long id; + + private String content; +} diff --git a/src/main/java/com/example/demo/Person.java b/src/main/java/com/example/demo/domain/Person.java similarity index 97% rename from src/main/java/com/example/demo/Person.java rename to src/main/java/com/example/demo/domain/Person.java index e764ec89..bea7fdb3 100644 --- a/src/main/java/com/example/demo/Person.java +++ b/src/main/java/com/example/demo/domain/Person.java @@ -1,5 +1,5 @@ -package com.example.demo; +package com.example.demo.domain; import org.neo4j.ogm.annotation.GeneratedValue; import org.neo4j.ogm.annotation.Id; diff --git a/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java b/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java new file mode 100644 index 00000000..8f053645 --- /dev/null +++ b/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java @@ -0,0 +1,7 @@ +package com.example.demo.repository; + +import com.example.demo.domain.AssessmentLevel; +import org.springframework.data.neo4j.repository.Neo4jRepository; + +public interface AssessmentLevelRepository extends Neo4jRepository<AssessmentLevel, Long> { +} diff --git a/src/main/java/com/example/demo/repository/BaseLevelRepository.java b/src/main/java/com/example/demo/repository/BaseLevelRepository.java new file mode 100644 index 00000000..51a0b97b --- /dev/null +++ b/src/main/java/com/example/demo/repository/BaseLevelRepository.java @@ -0,0 +1,7 @@ +package com.example.demo.repository; + +import com.example.demo.domain.BaseLevel; +import org.springframework.data.neo4j.repository.Neo4jRepository; + +public interface BaseLevelRepository extends Neo4jRepository<BaseLevel, Long> { +} diff --git a/src/main/java/com/example/demo/repository/GameLevelRepository.java b/src/main/java/com/example/demo/repository/GameLevelRepository.java new file mode 100644 index 00000000..92a29e07 --- /dev/null +++ b/src/main/java/com/example/demo/repository/GameLevelRepository.java @@ -0,0 +1,7 @@ +package com.example.demo.repository; + +import com.example.demo.domain.GameLevel; +import org.springframework.data.neo4j.repository.Neo4jRepository; + +public interface GameLevelRepository extends Neo4jRepository<GameLevel, Long> { +} diff --git a/src/main/java/com/example/demo/PersonRepository.java b/src/main/java/com/example/demo/repository/PersonRepository.java similarity index 69% rename from src/main/java/com/example/demo/PersonRepository.java rename to src/main/java/com/example/demo/repository/PersonRepository.java index 7d1a977f..a4ef5786 100644 --- a/src/main/java/com/example/demo/PersonRepository.java +++ b/src/main/java/com/example/demo/repository/PersonRepository.java @@ -1,5 +1,6 @@ -package com.example.demo; +package com.example.demo.repository; +import com.example.demo.domain.Person; import org.springframework.data.repository.CrudRepository; public interface PersonRepository extends CrudRepository<Person, Long> { -- GitLab