From 1d491dc32e616a0fd687d1cb799cda1a93b4d9df Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Tue, 24 Mar 2020 15:51:33 +0100 Subject: [PATCH 1/9] testing junit viewer --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc62202..7c9965c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -47,6 +47,8 @@ test: - build/test-results/test/TEST-*.xml reports: junit: build/test-results/test/TEST-*.xml + after_script: + - npm junit-viewer --results=build/test-results/test --port=3000 #Runs a quality check on the code and creates a report on the codes code_quality: From 9c471294ba44176704bb0b5cb1aa6435623cdd14 Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Tue, 24 Mar 2020 17:04:11 +0100 Subject: [PATCH 2/9] testing junit viewer 2 --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7c9965c..8520495 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,13 +42,14 @@ test: stage: test script: - gradle test + - npm junit-viewer --results=/home/git/gitlab/shared/artifacts/build/test-results/test --port=3000 artifacts: paths: - build/test-results/test/TEST-*.xml reports: junit: build/test-results/test/TEST-*.xml - after_script: - - npm junit-viewer --results=build/test-results/test --port=3000 +# after_script: +# - npm junit-viewer --results=/home/git/gitlab/shared/artifacts/build/test-results/test --port=3000 #Runs a quality check on the code and creates a report on the codes code_quality: From 8179e0ff19027992a69701362678dbcfed8309cc Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Tue, 24 Mar 2020 17:09:45 +0100 Subject: [PATCH 3/9] testing junit viewer 3 --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8520495..4ea8d59 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,6 +42,7 @@ test: stage: test script: - gradle test + - npm install junit-viewer -g - npm junit-viewer --results=/home/git/gitlab/shared/artifacts/build/test-results/test --port=3000 artifacts: paths: From bdf0f87d772e234cd51a173367c4016f2f7472aa Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Thu, 9 Apr 2020 13:41:58 +0200 Subject: [PATCH 4/9] Added curtains --- .gitlab-ci.yml | 9 ++- .../controller/CurtainsController.java | 56 +++++++++++++++++++ .../smarthut/dto/CurtainsSaveRequest.java | 52 +++++++++++++++++ .../sanmarinoes/smarthut/models/Curtains.java | 46 +++++++++++++++ .../smarthut/models/CurtainsRepository.java | 3 + .../sanmarinoes/smarthut/CurtainsTests.java | 45 +++++++++++++++ 6 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/CurtainsRepository.java create mode 100644 src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4ea8d59..75fbcfc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,7 @@ stages: - test - code_quality - deploy + - hopeItWorks #Sets up the docker smarthut_deploy: @@ -42,9 +43,8 @@ test: stage: test script: - gradle test - - npm install junit-viewer -g - - npm junit-viewer --results=/home/git/gitlab/shared/artifacts/build/test-results/test --port=3000 artifacts: + when: always paths: - build/test-results/test/TEST-*.xml reports: @@ -63,3 +63,8 @@ code_quality: #create a report on the quality of the code expose_as: 'Code Quality Report' allow_failure: true + +Robe: + stage: hopeItWorks + script: + - curl -L \ No newline at end of file diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java new file mode 100644 index 0000000..11f7aee --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java @@ -0,0 +1,56 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; + +import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.CurtainsSaveRequest; +import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Curtains; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.CurtainsRepository; +import java.util.List; +import javax.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.web.bind.annotation.*; + +@RestController +@EnableAutoConfiguration +@RequestMapping("/curtains") +public class CurtainsController { + @Autowired private CurtainsRepository curtainsService; + + @GetMapping + List findAll() { + return toList(curtainsService.findAll()); + } + + @GetMapping("/{id}") + public Curtains findById(@PathVariable("id") long id) throws NotFoundException { + return curtainsService.findById(id).orElseThrow(NotFoundException::new); + } + + private Curtains save(Curtains newRL, CurtainsSaveRequest s) { + newRL.setName(s.getName()); + newRL.setRoomId(s.getRoomId()); + newRL.setOpening(s.getOpening()); + + return curtainsService.save(newRL); + } + + @PostMapping + public Curtains create(@Valid @RequestBody CurtainsSaveRequest curtain) { + return save(new Curtains(), curtain); + } + + @PutMapping + public Curtains update(@Valid @RequestBody CurtainsSaveRequest curtain) + throws NotFoundException { + return save( + curtainsService.findById(curtain.getId()).orElseThrow(NotFoundException::new), + curtain); + } + + @DeleteMapping("/{id}") + public void delete(@PathVariable("id") long id) { + curtainsService.deleteById(id); + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java new file mode 100644 index 0000000..876d770 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java @@ -0,0 +1,52 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import javax.validation.constraints.NotNull; + +public class CurtainsSaveRequest { + /** The state of this switch */ + private int openedAmount; + + /** Device identifier */ + private long id; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public int getOpening() { + return this.openedAmount; + } + + public void setOpening(int newOpening) { + this.openedAmount = newOpening; + } + + public void setId(long id) { + this.id = id; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java new file mode 100644 index 0000000..35c0ab9 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java @@ -0,0 +1,46 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.models; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +@Entity +public class Curtains extends OutputDevice { + + @Column(name = "curtains_id") + private Long curtainsId; + + public void setCurtainsId(Long curtainsId) { + this.curtainsId = curtainsId; + } + + @NotNull + @Column(nullable = false) + @Min(0) + @Max(100) + /*it represents how much the curtains are opened, 0 is completely closed 100 is completely open*/ + private int openedAmount; + + public Curtains() { + super("curtains"); + this.openedAmount = 0; + } + + /*return the current state of the curtain*/ + public int getOpening() { + return this.openedAmount; + } + + /*sets the state to a desired one*/ + public void setOpening(int newOpening) { + if (newOpening < 0) { + this.openedAmount = 0; + } else if (newOpening > 100) { + this.openedAmount = 100; + } else { + this.openedAmount = newOpening; + } + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/CurtainsRepository.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/CurtainsRepository.java new file mode 100644 index 0000000..83f4d16 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/CurtainsRepository.java @@ -0,0 +1,3 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.models; + +public interface CurtainsRepository extends DeviceRepository {} diff --git a/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java new file mode 100644 index 0000000..c7ceeee --- /dev/null +++ b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java @@ -0,0 +1,45 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Curtains; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +@DisplayName("Curtains tests") +public class CurtainsTests { + public Curtains curtains; + + @BeforeEach + public void createCurtains() { + this.curtains = new Curtains(); + } + + @Test + @DisplayName("State when just created") + public void initialState() { + assertEquals(0, this.curtains.getOpening()); + } + + @Test + @DisplayName("Check wether setting the opening works") + public void normalSet() { + this.curtains.setOpening(42); + assertEquals(42, this.curtains.getOpening()); + } + + @Test + @DisplayName("Set setting a negative number") + public void setNeg() { + this.curtains.setOpening(-1); + assertEquals(0, this.curtains.getOpening()); + } + + @Test + @DisplayName("Setting state to a number greater than 100") + public void setLarge() { + this.curtains.setOpening(32768); + assertEquals(100, this.curtains.getOpening()); + } +} From e5d3c95f3e428a1b8d61f85865a1d3612ad74908 Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Thu, 9 Apr 2020 14:01:40 +0200 Subject: [PATCH 5/9] Added curtains --- .gitlab-ci.yml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 75fbcfc..ba82901 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,12 +6,13 @@ stages: - test - code_quality - deploy - - hopeItWorks #Sets up the docker smarthut_deploy: stage: deploy image: docker:latest + tags: + - dind services: - docker:dind variables: @@ -21,11 +22,13 @@ smarthut_deploy: - docker info - docker login -u smarthutsm -p $CI_DOCKER_PASS #GiovanniRoberto script: - - "docker build -t smarthutsm/smarthut:${CI_COMMIT_BRANCH} --pull ." - - "docker push smarthutsm/smarthut:${CI_COMMIT_BRANCH}" + - "docker build -t smarthutsm/smarthut-backend:${CI_COMMIT_BRANCH} --pull ." + - "docker push smarthutsm/smarthut-backend:${CI_COMMIT_BRANCH}" after_script: - docker logout - + only: + - dev + - master #base checks for the code build: @@ -44,27 +47,19 @@ test: script: - gradle test artifacts: - when: always paths: - build/test-results/test/TEST-*.xml reports: junit: build/test-results/test/TEST-*.xml -# after_script: -# - npm junit-viewer --results=/home/git/gitlab/shared/artifacts/build/test-results/test --port=3000 #Runs a quality check on the code and creates a report on the codes code_quality: stage: code_quality + allow_failure: true script: - gradle cpdCheck artifacts: paths: - build/reports/cpd/cpdCheck.xml #create a report on the quality of the code - expose_as: 'Code Quality Report' - allow_failure: true - -Robe: - stage: hopeItWorks - script: - - curl -L \ No newline at end of file + expose_as: 'Code Quality Report' \ No newline at end of file From 290927ff1f22674933a1f43e76258cfd484e71e4 Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Thu, 9 Apr 2020 14:07:41 +0200 Subject: [PATCH 6/9] Added curtains --- .../java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java index c7ceeee..8ca86e3 100644 --- a/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java +++ b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; @DisplayName("Curtains tests") public class CurtainsTests { - public Curtains curtains; + private Curtains curtains; @BeforeEach public void createCurtains() { From 831a2d07c6c1e75292ccb1a0eb125387c4713477 Mon Sep 17 00:00:00 2001 From: Jacob Salvi Date: Thu, 9 Apr 2020 15:17:20 +0200 Subject: [PATCH 7/9] removed id from Curtains.java --- .../usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java index 35c0ab9..df533a3 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java @@ -9,13 +9,6 @@ import javax.validation.constraints.NotNull; @Entity public class Curtains extends OutputDevice { - @Column(name = "curtains_id") - private Long curtainsId; - - public void setCurtainsId(Long curtainsId) { - this.curtainsId = curtainsId; - } - @NotNull @Column(nullable = false) @Min(0) From e5011110e7d3a738f19d52d20c7abebe31c1fce9 Mon Sep 17 00:00:00 2001 From: omenem Date: Sun, 12 Apr 2020 18:35:22 +0200 Subject: [PATCH 8/9] Added fields tags (@NotNull etc...) also so CurtainSaveRequest --- .../sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java index 876d770..1dc9122 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/CurtainsSaveRequest.java @@ -1,13 +1,18 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; public class CurtainsSaveRequest { /** The state of this switch */ + @NotNull + @Min(0) + @Max(100) private int openedAmount; /** Device identifier */ - private long id; + @NotNull private long id; /** * The room this device belongs in, as a foreign key id. To use when updating and inserting from From d964f8846f356297424e638726a77b7f0b5b28c3 Mon Sep 17 00:00:00 2001 From: Claudio Maggioni Date: Wed, 15 Apr 2020 16:36:51 +0200 Subject: [PATCH 9/9] Code review for Curtains --- .../smarthut/config/SpringFoxConfig.java | 1 + .../smarthut/controller/CurtainsController.java | 4 ++-- .../sa4/sanmarinoes/smarthut/models/Curtains.java | 12 +++++++----- .../sa4/sanmarinoes/smarthut/CurtainsTests.java | 14 +++++++------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java index 971a7fb..49b9c37 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/config/SpringFoxConfig.java @@ -75,6 +75,7 @@ public class SpringFoxConfig { .or(PathSelectors.regex("/smartPlug.*")::apply) .or(PathSelectors.regex("/switch.*")::apply) .or(PathSelectors.regex("/motionSensor.*")::apply) + .or(PathSelectors.regex("/curtains.*")::apply) .or(PathSelectors.regex("/auth/profile.*")::apply); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java index 11f7aee..5095966 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/CurtainsController.java @@ -19,7 +19,7 @@ public class CurtainsController { @Autowired private CurtainsRepository curtainsService; @GetMapping - List findAll() { + public List findAll() { return toList(curtainsService.findAll()); } @@ -31,7 +31,7 @@ public class CurtainsController { private Curtains save(Curtains newRL, CurtainsSaveRequest s) { newRL.setName(s.getName()); newRL.setRoomId(s.getRoomId()); - newRL.setOpening(s.getOpening()); + newRL.setOpenedAmount(s.getOpening()); return curtainsService.save(newRL); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java index df533a3..cfc3c2f 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java @@ -9,11 +9,13 @@ import javax.validation.constraints.NotNull; @Entity public class Curtains extends OutputDevice { + /** + * it represents how much the curtains are opened, 0 is completely closed 100 is completely open + */ @NotNull @Column(nullable = false) @Min(0) @Max(100) - /*it represents how much the curtains are opened, 0 is completely closed 100 is completely open*/ private int openedAmount; public Curtains() { @@ -21,13 +23,13 @@ public class Curtains extends OutputDevice { this.openedAmount = 0; } - /*return the current state of the curtain*/ - public int getOpening() { + /** return the current state of the curtain */ + public int getOpenedAmount() { return this.openedAmount; } - /*sets the state to a desired one*/ - public void setOpening(int newOpening) { + /** sets the state to a desired one */ + public void setOpenedAmount(int newOpening) { if (newOpening < 0) { this.openedAmount = 0; } else if (newOpening > 100) { diff --git a/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java index 8ca86e3..e49f736 100644 --- a/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java +++ b/src/test/java/ch/usi/inf/sa4/sanmarinoes/smarthut/CurtainsTests.java @@ -19,27 +19,27 @@ public class CurtainsTests { @Test @DisplayName("State when just created") public void initialState() { - assertEquals(0, this.curtains.getOpening()); + assertEquals(0, this.curtains.getOpenedAmount()); } @Test @DisplayName("Check wether setting the opening works") public void normalSet() { - this.curtains.setOpening(42); - assertEquals(42, this.curtains.getOpening()); + this.curtains.setOpenedAmount(42); + assertEquals(42, this.curtains.getOpenedAmount()); } @Test @DisplayName("Set setting a negative number") public void setNeg() { - this.curtains.setOpening(-1); - assertEquals(0, this.curtains.getOpening()); + this.curtains.setOpenedAmount(-1); + assertEquals(0, this.curtains.getOpenedAmount()); } @Test @DisplayName("Setting state to a number greater than 100") public void setLarge() { - this.curtains.setOpening(32768); - assertEquals(100, this.curtains.getOpening()); + this.curtains.setOpenedAmount(32768); + assertEquals(100, this.curtains.getOpenedAmount()); } }