From a31db86400506e6a942e5d2a90260377cc0a9281 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Wed, 21 Sep 2022 15:57:47 -0700 Subject: [PATCH 001/191] [story VSPC-215] added entity --- .../asu/diging/vspace/core/model/impl/Space.java | 4 ++++ .../core/model/impl/SpaceExhibitionLanguage.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 66018dd30..ca84827b5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -57,6 +57,10 @@ public class Space extends VSpaceElement implements ISpace { @Transient private Boolean incomingLinks; + + @JsonIgnore + @OneToMany(mappedBy = "space", targetEntity = SpaceExhibitionLanguage.class) + private List spaceExhibitionLanguage; /* * (non-Javadoc) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java new file mode 100644 index 000000000..a5ee7fb69 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java @@ -0,0 +1,16 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; + +@Entity +public class SpaceExhibitionLanguage { + + private ExhibitionLanguage exhibitionLanague; + + private String title; + + private String description; + +} + + From f723c2ddb2481a0129203ac9aea60115d2b4d2d0 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 22 Sep 2022 15:22:53 -0700 Subject: [PATCH 002/191] [story/VSPC-215] entity changes --- .../vspace/core/model/ISpaceDescription.java | 5 ++ .../diging/vspace/core/model/ISpaceTitle.java | 5 ++ .../diging/vspace/core/model/impl/Space.java | 9 ++- .../core/model/impl/SpaceDescription.java | 50 +++++++++++++++ .../model/impl/SpaceExhibitionLanguage.java | 16 ----- .../vspace/core/model/impl/SpaceTitle.java | 61 +++++++++++++++++++ 6 files changed, 128 insertions(+), 18 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceDescription.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceTitle.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceDescription.java new file mode 100644 index 000000000..0fee8e117 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceDescription.java @@ -0,0 +1,5 @@ +package edu.asu.diging.vspace.core.model; + +public interface ISpaceDescription extends IVSpaceElement{ + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceTitle.java new file mode 100644 index 000000000..93d6ba83c --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpaceTitle.java @@ -0,0 +1,5 @@ +package edu.asu.diging.vspace.core.model; + +public interface ISpaceTitle extends IVSpaceElement { + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index ca84827b5..6caa3e16f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -59,9 +59,14 @@ public class Space extends VSpaceElement implements ISpace { private Boolean incomingLinks; @JsonIgnore - @OneToMany(mappedBy = "space", targetEntity = SpaceExhibitionLanguage.class) - private List spaceExhibitionLanguage; + @OneToMany(mappedBy = "space", targetEntity = SpaceTitle.class) + private List spaceTitle; + + @JsonIgnore + @OneToMany(mappedBy = "space", targetEntity = SpaceDescription.class) + private List spaceDescription; + /* * (non-Javadoc) * diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java new file mode 100644 index 000000000..888dabbd7 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java @@ -0,0 +1,50 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import edu.asu.diging.vspace.core.model.ISpaceDescription; + +@Entity +public class SpaceDescription extends VSpaceElement implements ISpaceDescription { + + + @Id + @GeneratedValue(generator = "space_description_id_generator") + @GenericGenerator(name = "space_description_id_generator", parameters = @Parameter(name = "prefix", value = "SPCDES"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + @OneToOne(targetEntity = ExhibitionLanguage.class) + private ExhibitionLanguage exhibitionLanguage; + + String description; + + @ManyToOne(targetEntity = Space.class) + private Space space; + + @Override + public String getId() { + return null; + } + + @Override + public void setId(String id) { + + } + + public ExhibitionLanguage getExhibitionLanguage() { + return exhibitionLanguage; + } + + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { + this.exhibitionLanguage = exhibitionLanguage; + } + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java deleted file mode 100644 index a5ee7fb69..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceExhibitionLanguage.java +++ /dev/null @@ -1,16 +0,0 @@ -package edu.asu.diging.vspace.core.model.impl; - -import javax.persistence.Entity; - -@Entity -public class SpaceExhibitionLanguage { - - private ExhibitionLanguage exhibitionLanague; - - private String title; - - private String description; - -} - - diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java new file mode 100644 index 000000000..e7657c9a3 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java @@ -0,0 +1,61 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import edu.asu.diging.vspace.core.model.ISpaceTitle; + +@Entity +public class SpaceTitle extends VSpaceElement implements ISpaceTitle { + + @Id + @GeneratedValue(generator = "space_title_id_generator") + @GenericGenerator(name = "space_title_id_generator", parameters = @Parameter(name = "prefix", value = "SPCTTL"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + @OneToOne(targetEntity = ExhibitionLanguage.class) + private ExhibitionLanguage exhibitionLanguage; + + private String title; + + @ManyToOne(targetEntity = Space.class) + private Space space; + + + @Override + public String getId() { + return null; + } + + @Override + public void setId(String id) { + + } + + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public ExhibitionLanguage getExhibitionLanguage() { + return exhibitionLanguage; + } + + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { + this.exhibitionLanguage = exhibitionLanguage; + } + + +} + + From fdc14e6418b78b46a7d7e02a90b756cb24a9f724 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 22 Sep 2022 16:29:33 -0700 Subject: [PATCH 003/191] [story/VSPC-215] entity --- .../edu/asu/diging/vspace/core/model/impl/Space.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 6caa3e16f..a9ef21e9d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -214,5 +214,15 @@ public boolean isHideIncomingLinks() { public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; } + + @Override + public void setDescription(String description) { + + } + + @Override + public void setName(String title) { + + } } \ No newline at end of file From 95befa0559f3073a03c19024dbfc2d7592b16eed Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 30 Sep 2022 15:01:38 -0700 Subject: [PATCH 004/191] [bug/VSPC-232] worked on controller --- .../web/staff/ExhibitionConfigurationController.java | 9 ++++++++- .../webapp/WEB-INF/views/staff/exhibit/aboutPage.html | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index d63b98eb1..50b3ea0e7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -55,7 +55,6 @@ public class ExhibitionConfigurationController { @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { // for now we assume there is just one exhibition - IExhibition exhibition = exhibitManager.getStartExhibition(); if(exhibition==null) { exhibition = (Exhibition) exhibitFactory.createExhibition(); @@ -90,7 +89,15 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, @RequestParam("exhibitLanguage") List languages, @RequestParam("defaultExhibitLanguage") String defaultLanguage, + @RequestParam("exhibitLanguage") String selectedLanguage, RedirectAttributes attributes) throws IOException { + + System.out.println("title"+title); + System.out.println("language"+languages.hashCode()); + System.out.println("S language "+selectedLanguage); + System.out.println("D language "+defaultLanguage); + + ISpace startSpace = spaceManager.getSpace(spaceID); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 3a65d2733..eaffcc341 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -34,6 +34,7 @@

Exhibition About Page

class="form-control" name="title" th:value="${aboutPage.title}" />
+

Bonjour

From 478f1e4f069c2372ac802921ac74e4651677d538 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 4 Oct 2022 16:33:42 -0700 Subject: [PATCH 005/191] [bug/VSPC-232] developed the backend part --- .../web/staff/ExhibitionAboutPageController.java | 5 ++++- .../web/staff/ExhibitionConfigurationController.java | 12 +++++------- .../WEB-INF/views/staff/exhibit/aboutPage.html | 7 ++++++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index 4a4cf7b41..15835edc9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -30,11 +30,14 @@ public class ExhibitionAboutPageController { @Autowired private IExhibitionAboutPageManager aboutPageManager; - + @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.GET) public String showAboutPage(Model model) { List aboutPageList = aboutPageManager.findAll(); ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); + String language = ExhibitionConfigurationController.aboutPageLang; + System.out.println("sdfghfj "+language); + model.addAttribute("selectedLanguage", language); model.addAttribute("aboutPage", exhibitionAboutPage); return "staff/exhibit/aboutPage"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index 50b3ea0e7..ade9abfef 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -48,9 +48,9 @@ public class ExhibitionConfigurationController { @Autowired private ExhibitionLanguageConfig exhibitionLanguageConfig; - - + public static final String EXH_PREVIEW = "EXH_PREVIEW_"; + public static String aboutPageLang = null; @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { @@ -92,13 +92,11 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam("exhibitLanguage") String selectedLanguage, RedirectAttributes attributes) throws IOException { - System.out.println("title"+title); - System.out.println("language"+languages.hashCode()); + System.out.println("S language "+selectedLanguage); - System.out.println("D language "+defaultLanguage); + aboutPageLang = selectedLanguage; + System.out.println("G language "+aboutPageLang); - - ISpace startSpace = spaceManager.getSpace(spaceID); Exhibition exhibition; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index eaffcc341..ace6e98d0 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -33,18 +33,23 @@

Exhibition About Page

+ [[${selectedLanguage}]] + +
-

Bonjour

+

+ + \ No newline at end of file From a0b4b076c30e1072d6b9efbcfce03bb1f56fa1da Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 6 Oct 2022 16:18:30 -0700 Subject: [PATCH 006/191] [story/VSPC-141-rebase] space title getter setter --- .../diging/vspace/core/model/impl/Space.java | 26 ++++++++++++++++--- .../WEB-INF/views/staff/spaces/add.html | 4 +-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index a9ef21e9d..0b505e1a2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -62,7 +62,7 @@ public class Space extends VSpaceElement implements ISpace { @OneToMany(mappedBy = "space", targetEntity = SpaceTitle.class) private List spaceTitle; - + @JsonIgnore @OneToMany(mappedBy = "space", targetEntity = SpaceDescription.class) private List spaceDescription; @@ -215,14 +215,34 @@ public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; } + public List getSpaceTitle() { + return spaceTitle; + } + + public void setSpaceTitle(List spaceTitle) { + this.spaceTitle = spaceTitle; + } + + public List getSpaceDescription() { + return spaceDescription; + } + + public void setSpaceDescription(List spaceDescription) { + this.spaceDescription = spaceDescription; + } + @Override public void setDescription(String description) { - + SpaceDescription spaceDescription = new SpaceDescription(); + spaceDescription.setDescription(description); + this.getSpaceDescription().add(spaceDescription); } @Override public void setName(String title) { - + SpaceTitle spaceTitle = new SpaceTitle(); + spaceTitle.setName(title); + this.getSpaceTitle().add(spaceTitle); } } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 608c01b4d..8541ea0b2 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -61,12 +61,12 @@

Add new Space

- +
- +
From fe5789a8cfc46a33747c9525c03db96e6b1f40c8 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 6 Oct 2022 16:25:14 -0700 Subject: [PATCH 007/191] [bug/VSPC-232] worked on the backend implementation --- .../vspace/web/staff/ExhibitionAboutPageController.java | 2 ++ .../vspace/web/staff/ExhibitionConfigurationController.java | 2 ++ .../main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html | 6 +++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index 15835edc9..3d9fde6db 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -36,8 +36,10 @@ public String showAboutPage(Model model) { List aboutPageList = aboutPageManager.findAll(); ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); String language = ExhibitionConfigurationController.aboutPageLang; + String dlanguage=ExhibitionConfigurationController.aboutPageDefaultLang; System.out.println("sdfghfj "+language); model.addAttribute("selectedLanguage", language); + model.addAttribute("defaultLanguage", dlanguage); model.addAttribute("aboutPage", exhibitionAboutPage); return "staff/exhibit/aboutPage"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index ade9abfef..dd693f534 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -51,6 +51,7 @@ public class ExhibitionConfigurationController { public static final String EXH_PREVIEW = "EXH_PREVIEW_"; public static String aboutPageLang = null; + public static String aboutPageDefaultLang = null; @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { @@ -95,6 +96,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, System.out.println("S language "+selectedLanguage); aboutPageLang = selectedLanguage; + aboutPageDefaultLang= defaultLanguage; System.out.println("G language "+aboutPageLang); ISpace startSpace = spaceManager.getSpace(spaceID); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index ace6e98d0..105fa4d3f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -34,21 +34,21 @@

Exhibition About Page

class="form-control" name="title" th:value="${aboutPage.title}" />
[[${selectedLanguage}]] + [[${defaultLanguage}]] + -
-
+

- From 8de1feaebb14ae26637757a60bca4f3b27356ef3 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 7 Oct 2022 15:00:44 -0700 Subject: [PATCH 008/191] [bug/VSPC-232] Added Entity --- .../vspace/core/model/IExhibitionDescription.java | 6 ++++++ .../diging/vspace/core/model/IExhibitionTitle.java | 6 ++++++ .../vspace/core/model/impl/ExhibitionAboutPage.java | 13 +++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionDescription.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionDescription.java new file mode 100644 index 000000000..c0037052a --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionDescription.java @@ -0,0 +1,6 @@ +package edu.asu.diging.vspace.core.model; + + +public interface IExhibitionDescription extends IVSpaceElement{ + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java new file mode 100644 index 000000000..d001cc76a --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java @@ -0,0 +1,6 @@ +package edu.asu.diging.vspace.core.model; + + +public interface IExhibitionTitle extends IVSpaceElement{ + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index e3090eeac..c3237425d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -6,10 +6,14 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; +import javax.persistence.OneToMany; import javax.persistence.Transient; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; + +import com.fasterxml.jackson.annotation.JsonIgnore; + import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; @@ -32,6 +36,15 @@ public class ExhibitionAboutPage { @Lob private String aboutPageText; + + @JsonIgnore + @OneToMany(mappedBy = "exhibitionAboutPage", targetEntity = ExhibitionTitle.class) + private List exhibitionTitle; + + + @JsonIgnore + @OneToMany(mappedBy = "exhibitionAboutPage", targetEntity = ExhibitionDescription.class) + private List exhibitionAboutPageDescription; public String getId() { return id; From b93c9d55a6ede0d981a7681e8fce10430cea9cf2 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 11 Oct 2022 16:06:04 -0700 Subject: [PATCH 009/191] [bug/VSPC-232] Entity --- .../model/impl/ExhibitionDescription.java | 49 ++++++++++++++++ .../core/model/impl/ExhibitionTitle.java | 58 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java new file mode 100644 index 000000000..f6ef65c9b --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java @@ -0,0 +1,49 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import edu.asu.diging.vspace.core.model.IExhibitionDescription; + + + +@Entity +public class ExhibitionDescription extends VSpaceElement implements IExhibitionDescription{ + + @Id + @GeneratedValue(generator = "exhibition_description_id_generator") + @GenericGenerator(name = "exhibition_description_id_generator", parameters = @Parameter(name = "prefix", value = "EXHDES"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + @OneToOne(targetEntity = ExhibitionLanguage.class) + private ExhibitionLanguage exhibitionLanguage; + + String description; + + @ManyToOne(targetEntity = ExhibitionAboutPage.class) + private ExhibitionAboutPage exhibitionAboutPage; + + @Override + public String getId() { + return null; + } + + @Override + public void setId(String id) { + + } + + public ExhibitionLanguage getExhibitionLanguage() { + return exhibitionLanguage; + } + + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { + this.exhibitionLanguage = exhibitionLanguage; + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java new file mode 100644 index 000000000..2ea4dadbc --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java @@ -0,0 +1,58 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; +import org.hibernate.annotations.Parameter; +import org.hibernate.annotations.GenericGenerator; + +import edu.asu.diging.vspace.core.model.IExhibitionTitle; + +@Entity +public class ExhibitionTitle extends VSpaceElement implements IExhibitionTitle{ + + @Id + @GeneratedValue(generator = "exhibition_title_id_generator") + @GenericGenerator(name = "exhibition_title_id_generator", parameters = @Parameter(name = "prefix", value = "EXBTTL"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + @OneToOne(targetEntity = ExhibitionLanguage.class) + private ExhibitionLanguage exhibitionLanguage; + + private String title; + + @ManyToOne(targetEntity = ExhibitionAboutPage.class) + private ExhibitionAboutPage exhibitionAboutPage; + + + @Override + public String getId() { + return null; + } + + @Override + public void setId(String id) { + + } + + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public ExhibitionLanguage getExhibitionLanguage() { + return exhibitionLanguage; + } + + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { + this.exhibitionLanguage = exhibitionLanguage; + } + + +} From c6cb4ea6db0f32a933f990cc2f1e8e55d1823f84 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Wed, 12 Oct 2022 16:32:10 -0700 Subject: [PATCH 010/191] [story/VSPC-215] added language object entity --- .../core/model/display/impl/SpaceData.java | 18 ++++++ ...ceDescription.java => LanguageObject.java} | 42 ++++++------- .../diging/vspace/core/model/impl/Space.java | 45 +++++++------- .../vspace/core/model/impl/SpaceTitle.java | 61 ------------------- .../vspace/web/staff/AddSpaceController.java | 10 ++- .../WEB-INF/views/staff/spaces/add.html | 21 ++++--- 6 files changed, 82 insertions(+), 115 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/SpaceData.java rename vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/{SpaceDescription.java => LanguageObject.java} (52%) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/SpaceData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/SpaceData.java new file mode 100644 index 000000000..b1975159a --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/SpaceData.java @@ -0,0 +1,18 @@ +package edu.asu.diging.vspace.core.model.display.impl; + +import javax.persistence.Lob; + +public class SpaceData { + + private String id; + + private String name; + + @Lob private String description; + + + + + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java similarity index 52% rename from vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java index 888dabbd7..656df84c0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceDescription.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java @@ -3,48 +3,46 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; -import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import edu.asu.diging.vspace.core.model.ISpaceDescription; - @Entity -public class SpaceDescription extends VSpaceElement implements ISpaceDescription { - +public class LanguageObject { + @Id - @GeneratedValue(generator = "space_description_id_generator") - @GenericGenerator(name = "space_description_id_generator", parameters = @Parameter(name = "prefix", value = "SPCDES"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + @GeneratedValue(generator = "language_object_id_generator") + @GenericGenerator(name = "language_object_id_generator", parameters = @Parameter(name = "prefix", value = "LANGOBJ"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; + @OneToOne(targetEntity = ExhibitionLanguage.class) private ExhibitionLanguage exhibitionLanguage; - - String description; - - @ManyToOne(targetEntity = Space.class) - private Space space; - - @Override - public String getId() { - return null; - } - @Override - public void setId(String id) { - - } + String text; + + public ExhibitionLanguage getExhibitionLanguage() { return exhibitionLanguage; } + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { this.exhibitionLanguage = exhibitionLanguage; } - + + + public String getText() { + return text; + } + + + public void setText(String text) { + this.text = text; + } + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 0b505e1a2..852053717 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -58,15 +58,14 @@ public class Space extends VSpaceElement implements ISpace { @Transient private Boolean incomingLinks; - @JsonIgnore - @OneToMany(mappedBy = "space", targetEntity = SpaceTitle.class) - private List spaceTitle; + @OneToMany(mappedBy = "text", targetEntity = LanguageObject.class) + private List spaceTitles; + + @OneToMany(mappedBy = "text", targetEntity = LanguageObject.class) + private List spaceDescriptions; + - @JsonIgnore - @OneToMany(mappedBy = "space", targetEntity = SpaceDescription.class) - private List spaceDescription; - /* * (non-Javadoc) * @@ -215,34 +214,36 @@ public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; } - public List getSpaceTitle() { - return spaceTitle; + public List getSpaceTitles() { + return spaceTitles; } - public void setSpaceTitle(List spaceTitle) { - this.spaceTitle = spaceTitle; + public void setSpaceTitles(List spaceTitles) { + this.spaceTitles = spaceTitles; } - public List getSpaceDescription() { - return spaceDescription; + public List getSpaceDescriptions() { + return spaceDescriptions; } - public void setSpaceDescription(List spaceDescription) { - this.spaceDescription = spaceDescription; + public void setSpaceDescriptions(List spaceDescriptions) { + this.spaceDescriptions = spaceDescriptions; } @Override - public void setDescription(String description) { - SpaceDescription spaceDescription = new SpaceDescription(); - spaceDescription.setDescription(description); - this.getSpaceDescription().add(spaceDescription); + public void setDescription(String description) { + LanguageObject languageObject = new LanguageObject(); + languageObject.setText(description); + languageObject.setExhibitionLanguage(null); + this.getSpaceDescriptions().add(languageObject); } @Override public void setName(String title) { - SpaceTitle spaceTitle = new SpaceTitle(); - spaceTitle.setName(title); - this.getSpaceTitle().add(spaceTitle); + LanguageObject languageObject = new LanguageObject(); + languageObject.setText(title); + languageObject.setExhibitionLanguage(null); + this.getSpaceTitles().add(languageObject); } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java deleted file mode 100644 index e7657c9a3..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/SpaceTitle.java +++ /dev/null @@ -1,61 +0,0 @@ -package edu.asu.diging.vspace.core.model.impl; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import edu.asu.diging.vspace.core.model.ISpaceTitle; - -@Entity -public class SpaceTitle extends VSpaceElement implements ISpaceTitle { - - @Id - @GeneratedValue(generator = "space_title_id_generator") - @GenericGenerator(name = "space_title_id_generator", parameters = @Parameter(name = "prefix", value = "SPCTTL"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") - private String id; - - @OneToOne(targetEntity = ExhibitionLanguage.class) - private ExhibitionLanguage exhibitionLanguage; - - private String title; - - @ManyToOne(targetEntity = Space.class) - private Space space; - - - @Override - public String getId() { - return null; - } - - @Override - public void setId(String id) { - - } - - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public ExhibitionLanguage getExhibitionLanguage() { - return exhibitionLanguage; - } - - public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { - this.exhibitionLanguage = exhibitionLanguage; - } - - -} - - diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 33e395c3d..c15bd0145 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -17,12 +17,15 @@ import edu.asu.diging.vspace.core.exception.ImageDoesNotExistException; import edu.asu.diging.vspace.core.factory.ISpaceFactory; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; +import edu.asu.diging.vspace.core.services.impl.ExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Controller @@ -38,12 +41,17 @@ public class AddSpaceController { @Autowired private IImageService imageService; + + @Autowired + private IExhibitionManager exhibitionManager; @RequestMapping(value = "/staff/space/add", method = RequestMethod.GET) public String showAddSpace(Model model) { model.addAttribute("space", new SpaceForm()); - model.addAttribute("images", imageService.getImages(1)); + model.addAttribute("images", imageService.getImages(1)); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + model.addAttribute("exhibitionLanguages" , startExhibtion.getLanguages()); return "staff/spaces/add"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 8541ea0b2..e1b885a4a 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -59,16 +59,19 @@

Add new Space

-
- - + +
+

[[${language.label}]]

+
+ + +
+ +
+ + +
- -
- - -
-
From 2df4b0c6bf938a5d39aade225d516a735ee3464b Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 13 Oct 2022 16:18:03 -0700 Subject: [PATCH 011/191] [bug/VSPC-232] modified About page and added object --- .../vspace/core/model/IExhibitionTitle.java | 6 -- .../core/model/impl/ExhibitionAboutPage.java | 49 +++++++++++++--- .../core/model/impl/ExhibitionTitle.java | 58 ------------------- ...on.java => LanguageDescriptionObject.java} | 27 ++++----- .../ExhibitionConfigurationController.java | 13 +---- 5 files changed, 54 insertions(+), 99 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java rename vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/{ExhibitionDescription.java => LanguageDescriptionObject.java} (51%) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java deleted file mode 100644 index d001cc76a..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionTitle.java +++ /dev/null @@ -1,6 +0,0 @@ -package edu.asu.diging.vspace.core.model; - - -public interface IExhibitionTitle extends IVSpaceElement{ - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index c3237425d..19bf1564a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -14,6 +14,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import edu.asu.diging.vspace.core.model.IExhibitionDescription; +import edu.asu.diging.vspace.core.model.IVSpaceElement; + import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; @@ -25,7 +28,7 @@ * */ @Entity -public class ExhibitionAboutPage { +public class ExhibitionAboutPage extends VSpaceElement{ @Id @GeneratedValue(generator = "exh_abtpg_id_generator") @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -37,16 +40,30 @@ public class ExhibitionAboutPage { @Lob private String aboutPageText; - @JsonIgnore - @OneToMany(mappedBy = "exhibitionAboutPage", targetEntity = ExhibitionTitle.class) - private List exhibitionTitle; + @OneToMany(mappedBy = "userText", targetEntity = LanguageDescriptionObject.class) + private List exhibitionTitles; + + @OneToMany(mappedBy = "userText", targetEntity = LanguageDescriptionObject.class) + private List exhibitionTextDescriptions; + + + public List getExhibitionTitles() { + return exhibitionTitles; + } + + public void setExhibitionTitles(List exhibitionTitles) { + this.exhibitionTitles = exhibitionTitles; + } + public List getExhibitionTextDescriptions() { + return exhibitionTextDescriptions; + } - @JsonIgnore - @OneToMany(mappedBy = "exhibitionAboutPage", targetEntity = ExhibitionDescription.class) - private List exhibitionAboutPageDescription; + public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { + this.exhibitionTextDescriptions = exhibitionTextDescriptions; + } - public String getId() { + public String getId() { return id; } @@ -70,6 +87,22 @@ public void setAboutPageText(String aboutPageText) { this.aboutPageText = aboutPageText; } + @Override + public void setDescription(String description) { + LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); + languageObject.setUserText(description); + languageObject.setExhibitionLanguage(null); + this.getExhibitionTextDescriptions().add(languageObject); + } + + @Override + public void setName(String title) { + LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); + languageObject.setUserText(title); + languageObject.setExhibitionLanguage(null); + this.getExhibitionTitles().add(languageObject); + } + /* * (non-Javadoc) * diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java deleted file mode 100644 index 2ea4dadbc..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionTitle.java +++ /dev/null @@ -1,58 +0,0 @@ -package edu.asu.diging.vspace.core.model.impl; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; -import org.hibernate.annotations.Parameter; -import org.hibernate.annotations.GenericGenerator; - -import edu.asu.diging.vspace.core.model.IExhibitionTitle; - -@Entity -public class ExhibitionTitle extends VSpaceElement implements IExhibitionTitle{ - - @Id - @GeneratedValue(generator = "exhibition_title_id_generator") - @GenericGenerator(name = "exhibition_title_id_generator", parameters = @Parameter(name = "prefix", value = "EXBTTL"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") - private String id; - - @OneToOne(targetEntity = ExhibitionLanguage.class) - private ExhibitionLanguage exhibitionLanguage; - - private String title; - - @ManyToOne(targetEntity = ExhibitionAboutPage.class) - private ExhibitionAboutPage exhibitionAboutPage; - - - @Override - public String getId() { - return null; - } - - @Override - public void setId(String id) { - - } - - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public ExhibitionLanguage getExhibitionLanguage() { - return exhibitionLanguage; - } - - public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { - this.exhibitionLanguage = exhibitionLanguage; - } - - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java similarity index 51% rename from vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java index f6ef65c9b..0e762a180 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionDescription.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java @@ -13,32 +13,27 @@ @Entity -public class ExhibitionDescription extends VSpaceElement implements IExhibitionDescription{ +public class LanguageDescriptionObject { @Id - @GeneratedValue(generator = "exhibition_description_id_generator") - @GenericGenerator(name = "exhibition_description_id_generator", parameters = @Parameter(name = "prefix", value = "EXHDES"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + @GeneratedValue(generator = "language_description_id_generator") + @GenericGenerator(name = "language_description_id_generator", parameters = @Parameter(name = "prefix", value = "EXHLANGOBJ"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; @OneToOne(targetEntity = ExhibitionLanguage.class) private ExhibitionLanguage exhibitionLanguage; - String description; + String userText; - @ManyToOne(targetEntity = ExhibitionAboutPage.class) - private ExhibitionAboutPage exhibitionAboutPage; + public String getUserText() { + return userText; + } - @Override - public String getId() { - return null; - } - - @Override - public void setId(String id) { - - } + public void setUserText(String userText) { + this.userText = userText; + } - public ExhibitionLanguage getExhibitionLanguage() { + public ExhibitionLanguage getExhibitionLanguage() { return exhibitionLanguage; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index dd693f534..dbdd3b27f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -50,9 +50,7 @@ public class ExhibitionConfigurationController { public static final String EXH_PREVIEW = "EXH_PREVIEW_"; - public static String aboutPageLang = null; - public static String aboutPageDefaultLang = null; - + @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { // for now we assume there is just one exhibition @@ -90,15 +88,8 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, @RequestParam("exhibitLanguage") List languages, @RequestParam("defaultExhibitLanguage") String defaultLanguage, - @RequestParam("exhibitLanguage") String selectedLanguage, RedirectAttributes attributes) throws IOException { - - - System.out.println("S language "+selectedLanguage); - aboutPageLang = selectedLanguage; - aboutPageDefaultLang= defaultLanguage; - System.out.println("G language "+aboutPageLang); - + ISpace startSpace = spaceManager.getSpace(spaceID); Exhibition exhibition; From 108cfa0a7550c47936118a14c0af00e7e82cf26c Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 13 Oct 2022 16:32:55 -0700 Subject: [PATCH 012/191] [story/VSPC-215] --- .../vspace/core/model/ILanguageObject.java | 5 +++++ .../core/model/impl/LanguageObject.java | 2 +- .../diging/vspace/core/model/impl/Space.java | 15 +++++++++---- .../vspace/web/staff/forms/SpaceForm.java | 21 +++++++++++++++++++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageObject.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageObject.java new file mode 100644 index 000000000..0a4011f46 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageObject.java @@ -0,0 +1,5 @@ +package edu.asu.diging.vspace.core.model; + +public interface ILanguageObject { + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java index 656df84c0..32d472f0b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java @@ -9,7 +9,7 @@ import org.hibernate.annotations.Parameter; @Entity -public class LanguageObject { +public class LanguageObject implements ILanguageObject { @Id diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 852053717..28af2a1f7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -1,5 +1,6 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.ArrayList; import java.util.List; import javax.persistence.Access; @@ -59,10 +60,10 @@ public class Space extends VSpaceElement implements ISpace { private Boolean incomingLinks; @OneToMany(mappedBy = "text", targetEntity = LanguageObject.class) - private List spaceTitles; + private List spaceTitles; @OneToMany(mappedBy = "text", targetEntity = LanguageObject.class) - private List spaceDescriptions; + private List spaceDescriptions; @@ -234,7 +235,10 @@ public void setSpaceDescriptions(List spaceDescriptions) { public void setDescription(String description) { LanguageObject languageObject = new LanguageObject(); languageObject.setText(description); - languageObject.setExhibitionLanguage(null); + languageObject.setExhibitionLanguage(null); + if(this.getSpaceDescriptions() == null) { + this.setSpaceDescriptions(new ArrayList()); + } this.getSpaceDescriptions().add(languageObject); } @@ -242,7 +246,10 @@ public void setDescription(String description) { public void setName(String title) { LanguageObject languageObject = new LanguageObject(); languageObject.setText(title); - languageObject.setExhibitionLanguage(null); + languageObject.setExhibitionLanguage(null); + if(this.getSpaceTitles() == null) { + this.setSpaceTitles(new ArrayList()); + } this.getSpaceTitles().add(languageObject); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index 17c1b104d..02038db43 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -1,10 +1,19 @@ package edu.asu.diging.vspace.web.staff.forms; +import java.util.List; + +import edu.asu.diging.vspace.core.model.impl.LanguageObject; + public class SpaceForm { private String name; private String description; + private List names; + + private List descriptions; + + public String getName() { return name; } @@ -17,4 +26,16 @@ public String getDescription() { public void setDescription(String description) { this.description = description; } + public List getNames() { + return names; + } + public void setNames(List names) { + this.names = names; + } + public List getDescriptions() { + return descriptions; + } + public void setDescriptions(List descriptions) { + this.descriptions = descriptions; + } } From 58b7ce0c2c4b28ed5c63701174102d94959c3eaf Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Fri, 14 Oct 2022 12:00:18 -0700 Subject: [PATCH 013/191] [story/VSPC-215] manager and repo classes for language object --- .../core/data/LanguageObjectRepository.java | 15 ++++++ .../core/model/impl/LanguageObject.java | 2 + .../diging/vspace/core/model/impl/Space.java | 54 ++++++++++--------- .../services/impl/LanguageObjectManager.java | 11 ++++ .../vspace/web/staff/AddSpaceController.java | 1 + .../WEB-INF/views/staff/spaces/add.html | 6 +-- 6 files changed, 61 insertions(+), 28 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageObjectRepository.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageObjectManager.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageObjectRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageObjectRepository.java new file mode 100644 index 000000000..0453bac82 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageObjectRepository.java @@ -0,0 +1,15 @@ +package edu.asu.diging.vspace.core.data; + +import org.javers.spring.annotation.JaversSpringDataAuditable; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import edu.asu.diging.vspace.core.model.ILanguageObject; +import edu.asu.diging.vspace.core.model.impl.LanguageObject; + + +@Repository +@JaversSpringDataAuditable +public interface LanguageObjectRepository extends PagingAndSortingRepository{ + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java index 32d472f0b..03b7c648e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java @@ -8,6 +8,8 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import edu.asu.diging.vspace.core.model.ILanguageObject; + @Entity public class LanguageObject implements ILanguageObject { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 28af2a1f7..f249ffdce 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import edu.asu.diging.vspace.core.model.IExternalLink; +import edu.asu.diging.vspace.core.model.ILanguageObject; import edu.asu.diging.vspace.core.model.IModuleLink; import edu.asu.diging.vspace.core.model.IPrefix; import edu.asu.diging.vspace.core.model.ISpace; @@ -215,42 +216,45 @@ public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; } - public List getSpaceTitles() { + public List getSpaceTitles() { return spaceTitles; } - public void setSpaceTitles(List spaceTitles) { + public void setSpaceTitles(List spaceTitles) { this.spaceTitles = spaceTitles; } - public List getSpaceDescriptions() { + public List getSpaceDescriptions() { return spaceDescriptions; } - public void setSpaceDescriptions(List spaceDescriptions) { + public void setSpaceDescriptions(List spaceDescriptions) { this.spaceDescriptions = spaceDescriptions; } - @Override - public void setDescription(String description) { - LanguageObject languageObject = new LanguageObject(); - languageObject.setText(description); - languageObject.setExhibitionLanguage(null); - if(this.getSpaceDescriptions() == null) { - this.setSpaceDescriptions(new ArrayList()); - } - this.getSpaceDescriptions().add(languageObject); - } - - @Override - public void setName(String title) { - LanguageObject languageObject = new LanguageObject(); - languageObject.setText(title); - languageObject.setExhibitionLanguage(null); - if(this.getSpaceTitles() == null) { - this.setSpaceTitles(new ArrayList()); - } - this.getSpaceTitles().add(languageObject); - } +// @Override +// public void setDescription(String description) { +//// LanguageObject languageObject = new LanguageObject(); +//// languageObject.setText(description); +//// languageObject.setExhibitionLanguage(null); +//// if(this.getSpaceDescriptions() == null) { +//// this.setSpaceDescriptions(new ArrayList()); +//// } +//// this.getSpaceDescriptions().add(languageObject); +// this.setDescription(description); +// } +// +// @Override +// public void setName(String title) { +//// LanguageObject languageObject = new LanguageObject(); +//// languageObject.setText(title); +//// languageObject.setExhibitionLanguage(null); +//// if(this.getSpaceTitles() == null) { +//// this.setSpaceTitles(new ArrayList()); +//// } +//// this.getSpaceTitles().add(languageObject); +// +// this.title = title; +// } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageObjectManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageObjectManager.java new file mode 100644 index 000000000..75ab5cf94 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageObjectManager.java @@ -0,0 +1,11 @@ +package edu.asu.diging.vspace.core.services.impl; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + +@Transactional +@Service +public class LanguageObjectManager { + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index c15bd0145..d5aa1afcc 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -52,6 +52,7 @@ public String showAddSpace(Model model) { model.addAttribute("images", imageService.getImages(1)); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); model.addAttribute("exhibitionLanguages" , startExhibtion.getLanguages()); + return "staff/spaces/add"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index e1b885a4a..9a8b39100 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -60,16 +60,16 @@

Add new Space

-
+

[[${language.label}]]

- +
- +
From 84d0bb6c4d95b98cd295f4d71ce3022328b56ca8 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 14 Oct 2022 14:58:04 -0700 Subject: [PATCH 014/191] [bug/VSPC-232] added labels for title and texts --- .../core/model/display/impl/AboutPageData.java | 12 ++++++++++++ .../web/staff/ExhibitionAboutPageController.java | 11 ++++++----- .../WEB-INF/views/staff/exhibit/aboutPage.html | 13 +++++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java new file mode 100644 index 000000000..15c946459 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java @@ -0,0 +1,12 @@ +package edu.asu.diging.vspace.core.model.display.impl; + +import javax.persistence.Lob; + +public class AboutPageData { + + private String id; + + private String pageTitle; + + @Lob private String pageDescription; +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index 3d9fde6db..8bbd28832 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -15,6 +15,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; import edu.asu.diging.vspace.core.services.IExhibitionManager; @@ -30,17 +31,17 @@ public class ExhibitionAboutPageController { @Autowired private IExhibitionAboutPageManager aboutPageManager; + + @Autowired + private IExhibitionManager exhibitionManager; @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.GET) public String showAboutPage(Model model) { List aboutPageList = aboutPageManager.findAll(); ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); - String language = ExhibitionConfigurationController.aboutPageLang; - String dlanguage=ExhibitionConfigurationController.aboutPageDefaultLang; - System.out.println("sdfghfj "+language); - model.addAttribute("selectedLanguage", language); - model.addAttribute("defaultLanguage", dlanguage); model.addAttribute("aboutPage", exhibitionAboutPage); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + model.addAttribute("exhibitionLanguages" , startExhibtion.getLanguages()); return "staff/exhibit/aboutPage"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 105fa4d3f..a8a43eca8 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -43,7 +43,20 @@

Exhibition About Page

name="aboutPageText" th:text="${aboutPage.aboutPageText}">
+
+

[[${language.label}]]

+
+ + +
+
+ + +
+
+ +

From 0046c12aca29f12f2da229cb4b5cfe3f1fd73a22 Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 18 Oct 2022 12:03:26 -0700 Subject: [PATCH 015/191] [story/VSPC-215] save language object --- .../vspace/core/model/impl/LanguageObject.java | 17 ++++++++++++++--- .../vspace/web/staff/AddSpaceController.java | 12 +++++++++++- .../webapp/WEB-INF/views/staff/spaces/add.html | 8 ++++---- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java index 03b7c648e..93765dab3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java @@ -8,6 +8,7 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILanguageObject; @Entity @@ -20,19 +21,29 @@ public class LanguageObject implements ILanguageObject { private String id; + + @OneToOne(targetEntity = ExhibitionLanguage.class) - private ExhibitionLanguage exhibitionLanguage; + private IExhibitionLanguage exhibitionLanguage; String text; + public String getId() { + return id; + } + + + public void setId(String id) { + this.id = id; + } - public ExhibitionLanguage getExhibitionLanguage() { + public IExhibitionLanguage getExhibitionLanguage() { return exhibitionLanguage; } - public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { + public void setExhibitionLanguage(IExhibitionLanguage exhibitionLanguage) { this.exhibitionLanguage = exhibitionLanguage; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index d5aa1afcc..3001621fe 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -2,6 +2,8 @@ import java.io.IOException; import java.security.Principal; +import java.util.ArrayList; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +22,7 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; +import edu.asu.diging.vspace.core.model.impl.LanguageObject; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; @@ -51,8 +54,15 @@ public String showAddSpace(Model model) { model.addAttribute("space", new SpaceForm()); model.addAttribute("images", imageService.getImages(1)); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - model.addAttribute("exhibitionLanguages" , startExhibtion.getLanguages()); + + List languageObjectList = new ArrayList(); + startExhibtion.getLanguages().forEach(exhibitionLanguage -> { + LanguageObject languageObject = new LanguageObject(); + languageObject.setExhibitionLanguage(exhibitionLanguage); + languageObjectList.add(languageObject); + }); + model.addAttribute("languageObjectList" , languageObjectList); return "staff/spaces/add"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 9a8b39100..bca2297b2 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -60,16 +60,16 @@

Add new Space

-
-

[[${language.label}]]

+
+

[[${languageObject.exhibitionLanguage.label}]]

- +
- +
From d049e120aef1145303ab87caae8773179bf34534 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 18 Oct 2022 16:24:19 -0700 Subject: [PATCH 016/191] [bug/VSPC-232] Added code or saving title and texts --- .../model/ILanguageDescriptionObject.java | 5 +++ .../model/display/impl/AboutPageData.java | 44 ++++++++++++++++++- .../core/model/impl/ExhibitionAboutPage.java | 38 ++++++++-------- 3 files changed, 67 insertions(+), 20 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageDescriptionObject.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageDescriptionObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageDescriptionObject.java new file mode 100644 index 000000000..2af37c693 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILanguageDescriptionObject.java @@ -0,0 +1,5 @@ +package edu.asu.diging.vspace.core.model; + +public interface ILanguageDescriptionObject { + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java index 15c946459..c01b3ad6c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java @@ -1,12 +1,52 @@ package edu.asu.diging.vspace.core.model.display.impl; +import java.util.List; + import javax.persistence.Lob; +import edu.asu.diging.vspace.core.model.impl.LanguageDescriptionObject; + public class AboutPageData { private String id; - private String pageTitle; + private String title; + + @Lob private String aboutPageText; + + private List titles; + + private List aboutPageTexts; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAboutPageText() { + return aboutPageText; + } + + public void setAboutPageText(String aboutPageText) { + this.aboutPageText = aboutPageText; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } + + public List getAboutPageTexts() { + return aboutPageTexts; + } - @Lob private String pageDescription; + public void setAboutPageTexts(List aboutPageTexts) { + this.aboutPageTexts = aboutPageTexts; + } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 19bf1564a..ca8cdae9b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -1,5 +1,6 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.ArrayList; import java.util.List; import javax.persistence.Entity; @@ -15,7 +16,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import edu.asu.diging.vspace.core.model.IExhibitionDescription; +import edu.asu.diging.vspace.core.model.ILanguageDescriptionObject; import edu.asu.diging.vspace.core.model.IVSpaceElement; +import edu.asu.diging.vspace.core.model.display.impl.AboutPageData; import org.commonmark.node.Node; import org.commonmark.parser.Parser; @@ -28,7 +31,7 @@ * */ @Entity -public class ExhibitionAboutPage extends VSpaceElement{ +public class ExhibitionAboutPage extends AboutPageData{ @Id @GeneratedValue(generator = "exh_abtpg_id_generator") @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -41,25 +44,25 @@ public class ExhibitionAboutPage extends VSpaceElement{ private String aboutPageText; @OneToMany(mappedBy = "userText", targetEntity = LanguageDescriptionObject.class) - private List exhibitionTitles; + private List exhibitionTitles; @OneToMany(mappedBy = "userText", targetEntity = LanguageDescriptionObject.class) - private List exhibitionTextDescriptions; + private List exhibitionTextDescriptions; - public List getExhibitionTitles() { + public List getExhibitionTitles() { return exhibitionTitles; } - public void setExhibitionTitles(List exhibitionTitles) { + public void setExhibitionTitles(List exhibitionTitles) { this.exhibitionTitles = exhibitionTitles; } - public List getExhibitionTextDescriptions() { + public List getExhibitionTextDescriptions() { return exhibitionTextDescriptions; } - public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { + public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { this.exhibitionTextDescriptions = exhibitionTextDescriptions; } @@ -75,31 +78,30 @@ public String getTitle() { return title; } - public void setTitle(String title) { - this.title = title; - } - public String getAboutPageText() { return aboutPageText; } - public void setAboutPageText(String aboutPageText) { - this.aboutPageText = aboutPageText; - } @Override - public void setDescription(String description) { + public void setAboutPageText(String description) { LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); languageObject.setUserText(description); - languageObject.setExhibitionLanguage(null); + languageObject.setExhibitionLanguage(null); + if(this.getExhibitionTextDescriptions() == null) { + this.setExhibitionTextDescriptions(new ArrayList()); + } this.getExhibitionTextDescriptions().add(languageObject); } @Override - public void setName(String title) { + public void setTitle(String title) { LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); languageObject.setUserText(title); - languageObject.setExhibitionLanguage(null); + languageObject.setExhibitionLanguage(null); + if(this.getExhibitionTitles() == null) { + this.setExhibitionTitles(new ArrayList()); + } this.getExhibitionTitles().add(languageObject); } From 96d91645dd5e689d1c12c52686ba0c64bfbdbf44 Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 19 Oct 2022 16:30:18 -0700 Subject: [PATCH 017/191] [story/VSPC-215] name and description being sent to backend --- .../diging/vspace/core/model/IExhibitionLanguage.java | 2 ++ .../diging/vspace/core/model/impl/LanguageObject.java | 6 +++--- .../diging/vspace/web/staff/AddSpaceController.java | 5 +++-- .../main/webapp/WEB-INF/views/staff/spaces/add.html | 11 +++++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index fd868906e..3b73e7da5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -9,5 +9,7 @@ public interface IExhibitionLanguage extends IVSpaceElement { boolean isDefault(); void setDefault(boolean isDefault); + + void setLabel(String label); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java index 93765dab3..ffe0fdcfa 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageObject.java @@ -24,7 +24,7 @@ public class LanguageObject implements ILanguageObject { @OneToOne(targetEntity = ExhibitionLanguage.class) - private IExhibitionLanguage exhibitionLanguage; + ExhibitionLanguage exhibitionLanguage; String text; @@ -38,12 +38,12 @@ public void setId(String id) { } - public IExhibitionLanguage getExhibitionLanguage() { + public ExhibitionLanguage getExhibitionLanguage() { return exhibitionLanguage; } - public void setExhibitionLanguage(IExhibitionLanguage exhibitionLanguage) { + public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { this.exhibitionLanguage = exhibitionLanguage; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 3001621fe..e67a081a6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -22,6 +22,7 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LanguageObject; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; import edu.asu.diging.vspace.core.services.IExhibitionManager; @@ -58,11 +59,11 @@ public String showAddSpace(Model model) { List languageObjectList = new ArrayList(); startExhibtion.getLanguages().forEach(exhibitionLanguage -> { LanguageObject languageObject = new LanguageObject(); - languageObject.setExhibitionLanguage(exhibitionLanguage); + languageObject.setExhibitionLanguage((ExhibitionLanguage) exhibitionLanguage); languageObjectList.add(languageObject); }); - model.addAttribute("languageObjectList" , languageObjectList); + model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); return "staff/spaces/add"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index bca2297b2..f037162b9 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -60,16 +60,19 @@

Add new Space

-
-

[[${languageObject.exhibitionLanguage.label}]]

+
+

[[${exhibitionLanguage.label}]]

- + +
- + + +
From bcc35e97c22ef733ac061b8854bc5f2c8f3d7b43 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 20 Oct 2022 16:10:02 -0700 Subject: [PATCH 018/191] [bug/VSPC-232]Added repo and manager class for language object --- .../LanguageDescriptionObjectRepository.java | 13 ++++++ .../model/display/impl/AboutPageData.java | 41 +------------------ .../core/model/impl/ExhibitionAboutPage.java | 32 ++++----------- .../model/impl/LanguageDescriptionObject.java | 19 +++++++-- .../LanguageDescriptionObjectManager.java | 11 +++++ 5 files changed, 49 insertions(+), 67 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageDescriptionObjectManager.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java new file mode 100644 index 000000000..677dd9e1e --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.data; + +import org.javers.spring.annotation.JaversSpringDataAuditable; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import edu.asu.diging.vspace.core.model.impl.LanguageDescriptionObject; + +@Repository +@JaversSpringDataAuditable +public interface LanguageDescriptionObjectRepository extends PagingAndSortingRepository{ + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java index c01b3ad6c..d706c47aa 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java @@ -1,11 +1,7 @@ package edu.asu.diging.vspace.core.model.display.impl; -import java.util.List; - import javax.persistence.Lob; -import edu.asu.diging.vspace.core.model.impl.LanguageDescriptionObject; - public class AboutPageData { private String id; @@ -13,40 +9,5 @@ public class AboutPageData { private String title; @Lob private String aboutPageText; - - private List titles; - - private List aboutPageTexts; - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getAboutPageText() { - return aboutPageText; - } - - public void setAboutPageText(String aboutPageText) { - this.aboutPageText = aboutPageText; - } - - public List getTitles() { - return titles; - } - - public void setTitles(List titles) { - this.titles = titles; - } - - public List getAboutPageTexts() { - return aboutPageTexts; - } - - public void setAboutPageTexts(List aboutPageTexts) { - this.aboutPageTexts = aboutPageTexts; - } + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index ca8cdae9b..ec882002a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -31,7 +31,7 @@ * */ @Entity -public class ExhibitionAboutPage extends AboutPageData{ +public class ExhibitionAboutPage { @Id @GeneratedValue(generator = "exh_abtpg_id_generator") @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -81,31 +81,17 @@ public String getTitle() { public String getAboutPageText() { return aboutPageText; } - - @Override - public void setAboutPageText(String description) { - LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); - languageObject.setUserText(description); - languageObject.setExhibitionLanguage(null); - if(this.getExhibitionTextDescriptions() == null) { - this.setExhibitionTextDescriptions(new ArrayList()); - } - this.getExhibitionTextDescriptions().add(languageObject); - } - @Override public void setTitle(String title) { - LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); - languageObject.setUserText(title); - languageObject.setExhibitionLanguage(null); - if(this.getExhibitionTitles() == null) { - this.setExhibitionTitles(new ArrayList()); - } - this.getExhibitionTitles().add(languageObject); - } - - /* + this.title = title; + } + + public void setAboutPageText(String aboutPageText) { + this.aboutPageText = aboutPageText; + } + + /* * (non-Javadoc) * * @see diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java index 0e762a180..3941c4985 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LanguageDescriptionObject.java @@ -8,12 +8,14 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import edu.asu.diging.vspace.core.model.IExhibitionDescription; +import edu.asu.diging.vspace.core.model.ILanguageDescriptionObject; +import edu.asu.diging.vspace.core.model.IExhibitionDescription; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @Entity -public class LanguageDescriptionObject { +public class LanguageDescriptionObject implements ILanguageDescriptionObject{ @Id @GeneratedValue(generator = "language_description_id_generator") @@ -21,11 +23,20 @@ public class LanguageDescriptionObject { private String id; @OneToOne(targetEntity = ExhibitionLanguage.class) - private ExhibitionLanguage exhibitionLanguage; + ExhibitionLanguage exhibitionLanguage; String userText; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } - public String getUserText() { + public String getUserText() { return userText; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageDescriptionObjectManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageDescriptionObjectManager.java new file mode 100644 index 000000000..a1e47b5af --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LanguageDescriptionObjectManager.java @@ -0,0 +1,11 @@ +package edu.asu.diging.vspace.core.services.impl; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + +@Transactional +@Service +public class LanguageDescriptionObjectManager { + +} From 2eec1f483d9517b71f7766b34d5aefdb2408192c Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 20 Oct 2022 16:29:01 -0700 Subject: [PATCH 019/191] [story/VSPC-215] exhibition language getting populated --- .../main/webapp/WEB-INF/views/staff/spaces/add.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index f037162b9..ef54b61fd 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -63,15 +63,15 @@

Add new Space

[[${exhibitionLanguage.label}]]

- - - + + +
- - +
From 3ebc7e9f6e0ac6f6b0049e2270f003789cd80692 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 21 Oct 2022 15:21:23 -0700 Subject: [PATCH 020/191] [bug/VSPC-232] worked on saving the title and texts --- .../core/model/IExhibitionLanguage.java | 2 + .../staff/ExhibitionAboutPageController.java | 18 +++++-- .../vspace/web/staff/forms/AboutPageForm.java | 49 +++++++++++++++++++ .../views/staff/exhibit/aboutPage.html | 25 +++++----- 4 files changed, 78 insertions(+), 16 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index fd868906e..3b73e7da5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -9,5 +9,7 @@ public interface IExhibitionLanguage extends IVSpaceElement { boolean isDefault(); void setDefault(boolean isDefault); + + void setLabel(String label); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index 8bbd28832..aaf0d7aa1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.web.staff; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -17,9 +18,12 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LanguageDescriptionObject; import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.web.staff.forms.SpaceForm; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; + /** * @@ -40,8 +44,16 @@ public String showAboutPage(Model model) { List aboutPageList = aboutPageManager.findAll(); ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); model.addAttribute("aboutPage", exhibitionAboutPage); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - model.addAttribute("exhibitionLanguages" , startExhibtion.getLanguages()); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + + List languageObjectList = new ArrayList(); + startExhibtion.getLanguages().forEach(exhibitionLanguage -> { + LanguageDescriptionObject languageObject = new LanguageDescriptionObject(); + languageObject.setExhibitionLanguage((ExhibitionLanguage)exhibitionLanguage); + languageObjectList.add(languageObject); + }); + model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); + model.addAttribute("aboutPageForm", new AboutPageForm()); return "staff/exhibit/aboutPage"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java new file mode 100644 index 000000000..ae6d3ff7c --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java @@ -0,0 +1,49 @@ +package edu.asu.diging.vspace.web.staff.forms; + +import java.util.List; + +import edu.asu.diging.vspace.core.model.impl.LanguageDescriptionObject; + +public class AboutPageForm { + + private String title; + + private String aboutPageText; + + private List titles; + + private List aboutPageTexts; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAboutPageText() { + return aboutPageText; + } + + public void setAboutPageText(String aboutPageText) { + this.aboutPageText = aboutPageText; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } + + public List getAboutPageTexts() { + return aboutPageTexts; + } + + public void setAboutPageTexts(List aboutPageTexts) { + this.aboutPageTexts = aboutPageTexts; + } + +} diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index a8a43eca8..5b5d3d892 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -33,26 +33,25 @@

Exhibition About Page

- [[${selectedLanguage}]] - [[${defaultLanguage}]] - - +
-
-

[[${language.label}]]

-
- - -
+
+

[[${exhibitionLanguage.label}]]

+
+ + + +
-
- - +
+ + +
From b18ba84c24b42798041b8a730620a234aab0f4a8 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 25 Oct 2022 16:25:56 -0700 Subject: [PATCH 021/191] [bug/VSPC-232] Worked on UI changes --- .../webapp/WEB-INF/views/staff/exhibit/aboutPage.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 5b5d3d892..5538d6f24 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -44,13 +44,15 @@

Exhibition About Page

[[${exhibitionLanguage.label}]]

- - + + +
- +
From f7a9222e84b22d40fc0258937640b985e83e668f Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 8 Nov 2022 16:27:52 -0700 Subject: [PATCH 022/191] [bug/ SPC-232] worked on the UI changes --- .../model/display/impl/AboutPageData.java | 4 ++-- .../core/model/impl/ExhibitionAboutPage.java | 22 +++++++++++++++++++ .../staff/ExhibitionAboutPageController.java | 4 ++++ .../views/staff/exhibit/aboutPage.html | 16 +++++++------- 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java index d706c47aa..5aa4f5487 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/display/impl/AboutPageData.java @@ -6,8 +6,8 @@ public class AboutPageData { private String id; - private String title; + private String titles; - @Lob private String aboutPageText; + @Lob private String aboutPageTexts; } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index ec882002a..b9a92c281 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -43,6 +43,12 @@ public class ExhibitionAboutPage { @Lob private String aboutPageText; + @Lob + private List titles; + + @Lob + private List aboutPageTexts; + @OneToMany(mappedBy = "userText", targetEntity = LanguageDescriptionObject.class) private List exhibitionTitles; @@ -90,6 +96,22 @@ public void setTitle(String title) { public void setAboutPageText(String aboutPageText) { this.aboutPageText = aboutPageText; } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } + + public List getAboutPageTexts() { + return aboutPageTexts; + } + + public void setAboutPageTexts(List aboutPageTexts) { + this.aboutPageTexts = aboutPageTexts; + } /* * (non-Javadoc) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index aaf0d7aa1..4f7d4a28a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -64,6 +64,10 @@ public String createOrUpdateAboutPage(@ModelAttribute ExhibitionAboutPage aboutP ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); + System.out.println(aboutPageForm.getTitles()); + System.out.println(aboutPageForm.getAboutPageTexts()); + //exhibitionAboutPage.setTitles(aboutPageForm.getTitles()); + //exhibitionAboutPage.setAboutPageTexts(aboutPageForm.getAboutPageTexts()); exhibitionAboutPage = aboutPageManager.store(exhibitionAboutPage); attributes.addAttribute("alertType", "success"); attributes.addAttribute("message", "Successfully Saved!"); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 5538d6f24..11a2b65e7 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -11,7 +11,7 @@ height: 400px; } - + @@ -32,9 +85,17 @@

Exhibition About Page

+
+ + +
-
+
+ +

[[${title.exhibitionLanguageLabel}]]

+ + + - - - - + + +
@@ -69,12 +129,12 @@

Exhibition About Page

-
+
- - +
+

From e9b5edaa1e2af1368b2ca65cc4cdb71ef768e975 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 21 Mar 2023 16:23:11 -0700 Subject: [PATCH 093/191] [story/VSPC-214] resolved issue --- .../core/services/impl/SlideManager.java | 22 ++++++++++++++++--- .../vspace/web/staff/EditSlideController.java | 6 +---- .../vspace/web/staff/forms/SlideForm.java | 5 +++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index e006cc765..187de718b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -240,11 +240,11 @@ public void addSlideDescription(ISlide slide, List descriptions) ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguage().getLabel()); if(exhibitionLanguage != null) { description.setExhibitionLanguage(exhibitionLanguage); - Optional spaceDescription = slide.getSlideDescriptions().stream() + Optional slideDescription = slide.getSlideDescriptions().stream() .filter(desc -> exhibitionLanguage.getId().equals(desc.getExhibitionLanguage().getId())) .findAny(); - if(spaceDescription.isPresent()) { - spaceDescription.get().setText(description.getText()); + if(slideDescription.isPresent()) { + slideDescription.get().setText(description.getText()); } else { slide.getSlideDescriptions().add(description); @@ -287,13 +287,29 @@ public void updateSlideWithDefaultNameAndDescription(Iterable slideList) @Override public SlideForm getSlideForm(String slideId) { +// List descriptions = new ArrayList<>(); +// List titles = new ArrayList<>(); ISlide slide = getSlide(slideId); SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); + System.out.println(slide.getSlideDescriptions()); +// for(ILocalizedText description:slide.getSlideDescriptions()) +// { +// descriptions.add((LocalizedText) description); +// } +// slideForm.setDescriptions(descriptions); slide.getSlideDescriptions().forEach(description -> { + slideForm.getDescriptions().add((LocalizedText) description); + }); + +// for(ILocalizedText title:slide.getSlideDescriptions()) +// { +// titles.add((LocalizedText) title); +// } +// slideForm.setNames(titles); slide.getSlideNames().forEach(title -> { slideForm.getNames().add((LocalizedText) title); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java index 7668f121c..870c7fa31 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java @@ -61,11 +61,7 @@ public ResponseEntity saveTitle(@RequestParam("title") String title, @RequestMapping(value="/staff/module/{moduleId}/slide/{slideId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); - SlideForm slideForm = slideManager.getSlideForm(slideId); - -// model.addAttribute("slideForm", slideForm); -// model.addAttribute("slideId", slideId); - + SlideForm slideForm = slideManager.getSlideForm(slideId); if(slide instanceof BranchingPoint) { slideForm.setType(SlideType.BRANCHING_POINT.toString()); IBranchingPoint branchingPoint = (IBranchingPoint) slide; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java index 27a9fcdd4..faf2a1a8b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java @@ -1,5 +1,6 @@ package edu.asu.diging.vspace.web.staff.forms; +import java.util.ArrayList; import java.util.List; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -13,9 +14,9 @@ public class SlideForm { private String type; private List choices; - private List names; + private List names = new ArrayList();; - private List descriptions; + private List descriptions = new ArrayList();; public String getName() { return name; From 3ce950981f8b5a2270b42f9b3e5bc6c5c1421572 Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 23 Mar 2023 16:28:38 -0700 Subject: [PATCH 094/191] [story/VSPC-232] default lnagueg, css --- .../impl/ExhibitionAboutPageManager.java | 17 ++++-- .../views/staff/exhibit/aboutPage.html | 53 +++++-------------- 2 files changed, 27 insertions(+), 43 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index c3a4ba606..1cfe24f67 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -163,11 +163,20 @@ public AboutPageForm createAboutPageForm() { aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + + IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + + aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, defaultLanguage)); + + aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, defaultLanguage)); + startExhibtion.getLanguages().forEach(language -> { - - aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, language)); - - aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, language)); + if(!language.isDefault()) { + aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, language)); + + aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, language)); + } + }); return aboutPageForm; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 8b31fd623..99f34983b 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -70,6 +70,7 @@ } document.getElementById(label).style.display = "block"; evt.currentTarget.className += " active"; + evt.preventDefault(); } @@ -78,57 +79,31 @@

Exhibition About Page

- +
-
- - - - +
+
+ +
+
+
-
- -

[[${title.exhibitionLanguageLabel}]]

- - - +
+

[[${title.exhibitionLanguageLabel}]]

-
- +
- - +
@@ -137,7 +112,7 @@

Exhibition About Page

- +

From 2a37eb2076ae64de4140ef852993a86a94f0bd3f Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 24 Mar 2023 14:53:21 -0700 Subject: [PATCH 095/191] [story/VSPC-214] ui changes --- .../core/services/impl/SlideManager.java | 32 +++-- .../vspace/web/staff/forms/SlideForm.java | 5 +- .../views/staff/modules/slides/add.html | 111 ++++++++++++++++-- 3 files changed, 116 insertions(+), 32 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 187de718b..0bc42708f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -24,6 +24,8 @@ import edu.asu.diging.vspace.core.factory.impl.SlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; @@ -34,7 +36,9 @@ import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISlideManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Service @@ -63,6 +67,9 @@ public class SlideManager implements ISlideManager { @Autowired LocalizedTextRepository localizedTextRepository; + + @Autowired + private IExhibitionManager exhibitionManager; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -285,39 +292,28 @@ public void updateSlideWithDefaultNameAndDescription(Iterable slideList) }); } + /** + * Creates Slide Page form object + */ + @Override public SlideForm getSlideForm(String slideId) { -// List descriptions = new ArrayList<>(); -// List titles = new ArrayList<>(); ISlide slide = getSlide(slideId); SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - System.out.println(slide.getSlideDescriptions()); -// for(ILocalizedText description:slide.getSlideDescriptions()) -// { -// descriptions.add((LocalizedText) description); -// } -// slideForm.setDescriptions(descriptions); + slide.getSlideDescriptions().forEach(description -> { slideForm.getDescriptions().add((LocalizedText) description); }); - -// for(ILocalizedText title:slide.getSlideDescriptions()) -// { -// titles.add((LocalizedText) title); -// } -// slideForm.setNames(titles); - slide.getSlideNames().forEach(title -> { slideForm.getNames().add((LocalizedText) title); }); - return slideForm; } - - } + + \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java index faf2a1a8b..27a9fcdd4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java @@ -1,6 +1,5 @@ package edu.asu.diging.vspace.web.staff.forms; -import java.util.ArrayList; import java.util.List; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -14,9 +13,9 @@ public class SlideForm { private String type; private List choices; - private List names = new ArrayList();; + private List names; - private List descriptions = new ArrayList();; + private List descriptions; public String getName() { return name; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index b9680d709..d4bac4fa4 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -4,6 +4,52 @@ type="text/css" rel="stylesheet"> + + + @@ -53,12 +117,42 @@

Add new Slide

- +
+
+ +
+ +
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + + + +
+ + + + + +
+ + +
+
+
+
+ + + + + + + @@ -101,11 +195,6 @@

Add new Slide

-
From f87cdaa27935e15292a13302c7c4a6d92c7afdfd Mon Sep 17 00:00:00 2001 From: pkharge Date: Fri, 24 Mar 2023 16:59:19 -0700 Subject: [PATCH 096/191] [story/VSPC-232] tab info submitted propoerly, foreign key constraint fix --- .../vspace/core/services/impl/ExhibitionManager.java | 10 +++++++++- .../webapp/WEB-INF/views/staff/exhibit/aboutPage.html | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index ed6f9d8e9..913b43dbe 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -25,6 +25,7 @@ import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.services.IExhibitionManager; @Transactional @@ -138,10 +139,17 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, @Override public boolean localizedTextDoesNotExist(IExhibitionLanguage language) { - return !CollectionUtils.isEmpty(language.getLocalizedTexts()); + return CollectionUtils.isEmpty(language.getLocalizedTexts()) || !CollectionUtils.isEmpty(language.getLocalizedTexts()) && checkIfTextIsEmpty(language.getLocalizedTexts()); } + private boolean checkIfTextIsEmpty(List localizedTexts) { + // TODO Auto-generated method stub + + localizedTexts.forEach(localizedText -> StringUtils.isEmpty(localizedTexts.getText())).; + return false; + } + /** * Adds exhibitionLanguage to exhibition if not already present. If already present, returns exhibitionLanguage from the exhibition. * diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 99f34983b..9eb043361 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -79,7 +79,7 @@

Exhibition About Page

-
@@ -112,7 +112,7 @@

Exhibition About Page

- +

From b1c013eebea4004cf4418eba57588e870def9cc2 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 27 Mar 2023 16:06:31 -0700 Subject: [PATCH 097/191] [story/VSPC-214] UI changes in progress --- .../vspace/web/staff/AddSlideController.java | 3 +- .../vspace/web/staff/forms/SlideForm.java | 13 ++-- .../views/staff/modules/slides/add.html | 59 +++++++------------ 3 files changed, 30 insertions(+), 45 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index 3dbda5a8e..71f5f6aa7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -44,7 +44,8 @@ public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("slide", new SlideForm()); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); return "staff/modules/slides/add"; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java index 27a9fcdd4..2526cdd73 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java @@ -1,5 +1,6 @@ package edu.asu.diging.vspace.web.staff.forms; +import java.util.ArrayList; import java.util.List; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -13,9 +14,9 @@ public class SlideForm { private String type; private List choices; - private List names; + private List names = new ArrayList(); - private List descriptions; + private List descriptions = new ArrayList(); public String getName() { return name; @@ -41,16 +42,16 @@ public List getChoices() { public void setChoices(List choices) { this.choices = choices; } - public List getNames() { + public List getNames() { return names; } - public void setNames(List names) { + public void setNames(List names) { this.names = names; } - public List getDescriptions() { + public List getDescriptions() { return descriptions; } - public void setDescriptions(List descriptions) { + public void setDescriptions(List descriptions) { this.descriptions = descriptions; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index d4bac4fa4..88027193f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -92,7 +92,7 @@ }); }); - function openForm(evt, label) { + /* function openForm(evt, label) { console.log(label); var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); @@ -106,7 +106,7 @@ document.getElementById(label).style.display = "block"; evt.currentTarget.className += " active"; } - + */ @@ -116,43 +116,26 @@

Add new Slide

+ method="POST" name="f" th:object="${slide}"class="form-horizontal">
-
- -
- -
-
-
-

[[${title.exhibitionLanguageLabel}]]

- - - - - - -
- - - - - -
+

+
+ + + +
+ +
+ + + + +
+
- -
-
-
-
- - - - - - - - +
+
From 697c7bd389809fafdd4db6785ec3c0f5c1db5f13 Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 28 Mar 2023 16:19:23 -0700 Subject: [PATCH 098/191] [VSPC-232] --- .../vspace/core/model/impl/ExhibitionLanguage.java | 2 +- .../vspace/core/services/impl/ExhibitionManager.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 9ba5cc8a6..daeed7dd1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,7 +33,7 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; - @OneToMany(targetEntity = LocalizedText.class , cascade= CascadeType.ALL) + @OneToMany(targetEntity = LocalizedText.class , cascade= CascadeType.ALL, orphanRemoval = true) private List localizedTexts = new ArrayList(); public ExhibitionLanguage() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 913b43dbe..d164ccaae 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -18,6 +18,7 @@ import edu.asu.diging.vspace.config.ConfigConstants; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.exception.ExhibitionLanguageCouldNotBeDeletedException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; @@ -40,6 +41,9 @@ public class ExhibitionManager implements IExhibitionManager { @Autowired private ExhibitionFactory exhibitFactory; + + @Autowired + private LocalizedTextRepository localizedTextRepo; /* * (non-Javadoc) @@ -130,8 +134,10 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(!localizedTextDoesNotExist(language)) { throw new ExhibitionLanguageCouldNotBeDeletedException() ; } + localizedTextRepo.deleteAll(language.getLocalizedTexts()); } + exhibition.getLanguages().removeAll(exhibitionLanguageToBeRemoved); } @@ -144,10 +150,8 @@ public boolean localizedTextDoesNotExist(IExhibitionLanguage language) { } private boolean checkIfTextIsEmpty(List localizedTexts) { - // TODO Auto-generated method stub - localizedTexts.forEach(localizedText -> StringUtils.isEmpty(localizedTexts.getText())).; - return false; + return !localizedTexts.stream().anyMatch( localizedText -> !StringUtils.isEmpty(localizedText.getText()) ); } /** From 90b7aa41192617bb9e0175c1a223cae23d51ea6d Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 28 Mar 2023 16:23:35 -0700 Subject: [PATCH 099/191] [VSPC-232] --- .../asu/diging/vspace/core/services/impl/ExhibitionManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index d164ccaae..58ec95c7e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -134,6 +134,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(!localizedTextDoesNotExist(language)) { throw new ExhibitionLanguageCouldNotBeDeletedException() ; } + language.getLocalizedTexts().clear(); localizedTextRepo.deleteAll(language.getLocalizedTexts()); } From 09ccb9ef39870829c11c52d61233050b35fb60fd Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 28 Mar 2023 16:25:13 -0700 Subject: [PATCH 100/191] [VSPC-232] code factor --- .../asu/diging/vspace/core/services/impl/ExhibitionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 58ec95c7e..dba87b812 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -152,7 +152,7 @@ public boolean localizedTextDoesNotExist(IExhibitionLanguage language) { private boolean checkIfTextIsEmpty(List localizedTexts) { - return !localizedTexts.stream().anyMatch( localizedText -> !StringUtils.isEmpty(localizedText.getText()) ); + return !localizedTexts.stream().anyMatch( localizedText -> !StringUtils.isEmpty(localizedText.getText()) ); } /** From 94dac8b74cbbdba609435171aeb10f35605f5ffc Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 28 Mar 2023 16:28:18 -0700 Subject: [PATCH 101/191] [story/VSPC-214] updated manager class according to localized extform --- .../vspace/core/services/ISlideManager.java | 5 +- .../core/services/impl/SlideManager.java | 187 +++++++++++++----- .../views/staff/modules/slides/add.html | 55 ++++-- 3 files changed, 183 insertions(+), 64 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index 851d106a6..ef8aac1b8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -13,6 +13,7 @@ import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; public interface ISlideManager { @@ -41,9 +42,9 @@ public interface ISlideManager { void setDescriptionAsDefaultLanguage(ISlide slide); - void addSlideDescription(ISlide slide, List descriptions); + void addSlideDescription(ISlide slide, List descriptions); - void addSlideName(ISlide slide, List names); + void addSlideName(ISlide slide, List names); void updateSlideWithDefaultNameAndDescription(Iterable slideList); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 0bc42708f..d11bb45c6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -13,6 +13,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.data.BranchingPointRepository; import edu.asu.diging.vspace.core.data.ChoiceRepository; @@ -70,6 +71,9 @@ public class SlideManager implements ISlideManager { @Autowired private IExhibitionManager exhibitionManager; + + @Autowired + private LocalizedTextRepository localizedTextRepo; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -191,8 +195,7 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { - // TODO Auto-generated method stub - + addSlideName(slide, slideForm.getNames()); addSlideDescription(slide, slideForm.getDescriptions()); @@ -207,26 +210,33 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { * @param names */ @Override - public void addSlideName(ISlide slide, List names) { - // TODO Auto-generated method stub - + public void addSlideName(ISlide slide, List names) { + if(!CollectionUtils.isEmpty(names)) { - for(LocalizedText name : names ) { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(name.getExhibitionLanguage().getLabel()); + + for(LocalizedTextForm name : names ) { + if(name!=null) { + + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + + if(localizedText != null) { + localizedText.setText(name.getText()); + } else { + + + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - name.setExhibitionLanguage(exhibitionLanguage); - Optional slideTitle = slide.getSlideNames().stream() - .filter(title -> exhibitionLanguage.getId().equals(title.getExhibitionLanguage().getId())) - .findAny(); - if(slideTitle.isPresent()) { - slideTitle.get().setText(name.getText()); - } else { - slide.getSlideNames().add(name); - - } + + localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + slide.getSlideNames().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); + + } } } + } + } setNameAsDefaultLanguage(slide); @@ -239,23 +249,38 @@ public void addSlideName(ISlide slide, List names) { * @param descriptions */ @Override - public void addSlideDescription(ISlide slide, List descriptions) { + public void addSlideDescription(ISlide slide, List descriptions) { // TODO Auto-generated method stub if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedText description : descriptions ) { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguage().getLabel()); - if(exhibitionLanguage != null) { - description.setExhibitionLanguage(exhibitionLanguage); - Optional slideDescription = slide.getSlideDescriptions().stream() - .filter(desc -> exhibitionLanguage.getId().equals(desc.getExhibitionLanguage().getId())) - .findAny(); - if(slideDescription.isPresent()) { - slideDescription.get().setText(description.getText()); - } else { - slide.getSlideDescriptions().add(description); - - } + for(LocalizedTextForm description : descriptions ) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + + if(localizedText != null) { + localizedText.setText(description.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + + localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + slide.getSlideNames().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); + + + } + +// ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguage().getLabel()); +// if(exhibitionLanguage != null) { +// description.setExhibitionLanguage(exhibitionLanguage); +// Optional slideDescription = slide.getSlideDescriptions().stream() +// .filter(desc -> exhibitionLanguage.getId().equals(desc.getExhibitionLanguage().getId())) +// .findAny(); +// if(slideDescription.isPresent()) { +// slideDescription.get().setText(description.getText()); +// } else { +// slide.getSlideDescriptions().add(description); +// +// } } } } @@ -265,21 +290,21 @@ public void addSlideDescription(ISlide slide, List descriptions) @Override public void setNameAsDefaultLanguage(ISlide slide) { - String defaultSpaceName = slide.getSlideNames().stream() + String defaultSlideName = slide.getSlideNames().stream() .filter(title -> Boolean.TRUE.equals(title.getExhibitionLanguage().isDefault())) .map(ILocalizedText::getText) .findAny().orElse(slide.getName()) ; - slide.setName(defaultSpaceName); + slide.setName(defaultSlideName); } @Override public void setDescriptionAsDefaultLanguage(ISlide slide) { - String defaultSpaceDescription = slide.getSlideDescriptions().stream() + String defaultSlideDescription = slide.getSlideDescriptions().stream() .filter(description -> Boolean.TRUE.equals(description.getExhibitionLanguage().isDefault())) .map(ILocalizedText::getText) .findAny().orElse(slide.getDescription()); - slide.setDescription(defaultSpaceDescription); + slide.setDescription(defaultSlideDescription); } @@ -301,19 +326,93 @@ public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); - slideForm.setDescription(slide.getDescription()); - - slide.getSlideDescriptions().forEach(description -> { - - slideForm.getDescriptions().add((LocalizedText) description); - - }); - slide.getSlideNames().forEach(title -> { - slideForm.getNames().add((LocalizedText) title); + slideForm.setDescription(slide.getDescription()); + + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + + IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + + slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); + + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + slideForm.getNames().add(createLocalizedNameForm(slide, language)); + + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); + } + + }); + + + + +// slide.getSlideDescriptions().forEach(description -> { +// +// slideForm.getDescriptions().add((LocalizedTextForm) description); +// +// }); +// slide.getSlideNames().forEach(title -> { +// slideForm.getNames().add((LocalizedTextForm) title); +// }); return slideForm; } + + /** + * Creates Localized slide title object for form + * + * @param slide + * @param language + * @return + */ + + public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { + // TODO Auto-generated method stub + + LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + + ILocalizedText title = slide.getSlideNames().stream() + .filter(slideTitle -> StringUtils.equals(slideTitle.getExhibitionLanguage().getId(), language.getId())).findAny().orElse(null); + + if(title != null) { + localizedTitleForm.setText(title.getText()); + localizedTitleForm.setLocalisedTextId(title.getId()); + } + localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); + + return localizedTitleForm; + + + } + + /** + * + * Creates Localized slide description object for form + * @param slide + * @param language + * @return + */ + + public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { + // TODO Auto-generated method stub + + LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + ILocalizedText description = slide.getSlideDescriptions().stream() + .filter(slideDescription -> StringUtils.equals(language.getId(), slideDescription.getExhibitionLanguage().getId())).findAny().orElse(null); + + if(description != null) { + localizedAboutTextForm.setText(description.getText()); + localizedAboutTextForm.setLocalisedTextId( description.getId()); + + } + localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedAboutTextForm; + + } } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 88027193f..2d1950dbd 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -118,24 +118,43 @@

Add new Slide

-
-

-
- - - -
- -
- - - - -
-
+ +
+ - - +
+ +
+
+ + + +
+ +
+ + + + +
+
+
+
+
+ + + + + +
From d98d63d84d6495f9843f73b971ac25cb0847761a Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 31 Mar 2023 15:30:12 -0700 Subject: [PATCH 102/191] [story/VSC-214] resolving null id issue --- .../diging/vspace/core/model/impl/Slide.java | 4 +- .../vspace/core/services/ISlideManager.java | 5 + .../core/services/impl/SlideManager.java | 27 +-- .../views/staff/modules/slides/add.html | 165 ++++++++---------- 4 files changed, 87 insertions(+), 114 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java index b8cea836c..236bb0911 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java @@ -51,11 +51,11 @@ public class Slide extends VSpaceElement implements ISlide { @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Slide_LangObj_names") - private List slideNames = new ArrayList(); + private List slideNames = new ArrayList(); @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Slide_LangObj_descriptions") - private List slideDescriptions = new ArrayList(); + private List slideDescriptions = new ArrayList(); public List getSlideNames() { return slideNames; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index ef8aac1b8..afceca1c9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -7,6 +7,7 @@ import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; @@ -49,6 +50,10 @@ public interface ISlideManager { void updateSlideWithDefaultNameAndDescription(Iterable slideList); SlideForm getSlideForm(String slideId); + + LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language); + + LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index d11bb45c6..d482f9037 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -268,19 +268,6 @@ public void addSlideDescription(ISlide slide, List descriptio } - -// ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguage().getLabel()); -// if(exhibitionLanguage != null) { -// description.setExhibitionLanguage(exhibitionLanguage); -// Optional slideDescription = slide.getSlideDescriptions().stream() -// .filter(desc -> exhibitionLanguage.getId().equals(desc.getExhibitionLanguage().getId())) -// .findAny(); -// if(slideDescription.isPresent()) { -// slideDescription.get().setText(description.getText()); -// } else { -// slide.getSlideDescriptions().add(description); -// -// } } } } @@ -369,7 +356,7 @@ public SlideForm getSlideForm(String slideId) { * @param language * @return */ - + @Override public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { // TODO Auto-generated method stub @@ -396,21 +383,21 @@ public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangua * @param language * @return */ - + @Override public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { // TODO Auto-generated method stub - LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); ILocalizedText description = slide.getSlideDescriptions().stream() .filter(slideDescription -> StringUtils.equals(language.getId(), slideDescription.getExhibitionLanguage().getId())).findAny().orElse(null); if(description != null) { - localizedAboutTextForm.setText(description.getText()); - localizedAboutTextForm.setLocalisedTextId( description.getId()); + localizedDescriptionForm.setText(description.getText()); + localizedDescriptionForm.setLocalisedTextId( description.getId()); } - localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedAboutTextForm; + localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedDescriptionForm; } } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 2d1950dbd..542c87d6d 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -92,21 +92,22 @@ }); }); - /* function openForm(evt, label) { - console.log(label); - var i, tabcontent, tablinks; - tabcontent = document.getElementsByClassName("tabcontent"); - for (i = 0; i < tabcontent.length; i++) { - tabcontent[i].style.display = "none"; - } - tablinks = document.getElementsByClassName("tablinks"); - for (i = 0; i < tablinks.length; i++) { - tablinks[i].className = tablinks[i].className.replace(" active", ""); - } - document.getElementById(label).style.display = "block"; - evt.currentTarget.className += " active"; - } - */ +function openForm(evt, label) { + console.log(label); + var i, tabcontent, tablinks; + tabcontent = document.getElementsByClassName("tabcontent"); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].style.display = "none"; + } + tablinks = document.getElementsByClassName("tablinks"); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].className = tablinks[i].className.replace(" active", ""); + } + document.getElementById(label).style.display = "block"; + evt.currentTarget.className += " active"; + evt.preventDefault(); +} + @@ -116,87 +117,67 @@

Add new Slide

+ method="POST" name="f" class="form-horizontal"> -
- +
+ + + + +
+
+
+ + + +
+ +
+ + + +
+
+
+ +
+ + +
+ + -
- -
-
- - - -
- -
- - - - -
-
-
-
-
+ - - - - - - - -
- - -
-
From 8c73cc2889c0c9158d8ab38c7b3052b1a3b08e74 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 3 Apr 2023 16:32:50 -0700 Subject: [PATCH 103/191] [story/VSPC-214] null id --- .../vspace/core/services/ISlideManager.java | 3 +- .../core/services/impl/SlideManager.java | 92 ++++++------ .../views/staff/modules/slides/add.html | 132 ++++++++---------- 3 files changed, 108 insertions(+), 119 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index afceca1c9..32d962d4b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -54,6 +54,7 @@ public interface ISlideManager { LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language); LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language); - + + SlideForm createNewSlideForm(SlideForm slideorm); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index d482f9037..cf08581a4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -79,7 +79,10 @@ public class SlideManager implements ISlideManager { @Override public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type) { + SlideForm sf = createNewSlideForm(slideForm); ISlide slide = slideFactory.createSlide(module, slideForm, type); + + return slideRepo.save((Slide) slide); } @@ -211,13 +214,15 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { */ @Override public void addSlideName(ISlide slide, List names) { + if(!CollectionUtils.isEmpty(names)) { - for(LocalizedTextForm name : names ) { + for(LocalizedTextForm name : names ) if(name!=null) { + + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); @@ -236,9 +241,7 @@ public void addSlideName(ISlide slide, List names) { } } - - - } + setNameAsDefaultLanguage(slide); } @@ -252,6 +255,7 @@ public void addSlideName(ISlide slide, List names) { public void addSlideDescription(ISlide slide, List descriptions) { // TODO Auto-generated method stub + if(!CollectionUtils.isEmpty(descriptions)) { for(LocalizedTextForm description : descriptions ) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); @@ -259,7 +263,7 @@ public void addSlideDescription(ISlide slide, List descriptio if(localizedText != null) { localizedText.setText(description.getText()); } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguageId()); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, description.getText()); @@ -303,50 +307,25 @@ public void updateSlideWithDefaultNameAndDescription(Iterable slideList) setNameAsDefaultLanguage(slide); }); } - - /** - * Creates Slide Page form object - */ + @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); SlideForm slideForm = new SlideForm(); + LocalizedText localizedText = new LocalizedText(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - - - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); - - slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); - - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - slideForm.getNames().add(createLocalizedNameForm(slide, language)); - - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); - } - - + slide.getSlideDescriptions().forEach(description -> { + + slideForm.getDescriptions().add((LocalizedTextForm) description); + }); - - - + slide.getSlideNames().forEach(title -> { + slideForm.getNames().add((LocalizedTextForm) title); + }); + return slideForm; -// slide.getSlideDescriptions().forEach(description -> { -// -// slideForm.getDescriptions().add((LocalizedTextForm) description); -// -// }); -// slide.getSlideNames().forEach(title -> { -// slideForm.getNames().add((LocalizedTextForm) title); -// }); - return slideForm; - } /** @@ -368,7 +347,8 @@ public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangua if(title != null) { localizedTitleForm.setText(title.getText()); localizedTitleForm.setLocalisedTextId(title.getId()); - } + } + localizedTitleForm.setExhibitionLanguageId(language.getId()); localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedTitleForm; @@ -395,11 +375,37 @@ public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitio localizedDescriptionForm.setText(description.getText()); localizedDescriptionForm.setLocalisedTextId( description.getId()); - } + } + localizedDescriptionForm.setExhibitionLanguageId(language.getId()); localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedDescriptionForm; } + @Override + public SlideForm createNewSlideForm(SlideForm slideForm) { + Slide slide = new Slide(); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + +// IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); +// slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); +// +// slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); +// slideForm.setName(createLocalizedNameForm(slide, defaultLanguage).getText()); +// slideForm.setDescription(createLocalizedDescriptionForm(slide, defaultLanguage).getText()); + + startExhibtion.getLanguages().forEach(language -> { + + slideForm.getNames().add(createLocalizedNameForm(slide, language)); + + + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); + + + + }); + return slideForm; + + } } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 542c87d6d..6fce55f5e 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -92,22 +92,21 @@ }); }); -function openForm(evt, label) { - console.log(label); - var i, tabcontent, tablinks; - tabcontent = document.getElementsByClassName("tabcontent"); - for (i = 0; i < tabcontent.length; i++) { - tabcontent[i].style.display = "none"; - } - tablinks = document.getElementsByClassName("tablinks"); - for (i = 0; i < tablinks.length; i++) { - tablinks[i].className = tablinks[i].className.replace(" active", ""); - } - document.getElementById(label).style.display = "block"; - evt.currentTarget.className += " active"; - evt.preventDefault(); -} - + /* function openForm(evt, label) { + console.log(label); + var i, tabcontent, tablinks; + tabcontent = document.getElementsByClassName("tabcontent"); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].style.display = "none"; + } + tablinks = document.getElementsByClassName("tablinks"); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].className = tablinks[i].className.replace(" active", ""); + } + document.getElementById(label).style.display = "block"; + evt.currentTarget.className += " active"; + } + */ @@ -117,67 +116,50 @@

Add new Slide

+ method="POST" name="f" th:object="${slide}"class="form-horizontal"> + +
+

[[${exhibitionLanguage.label}]]

+
+ + + +
+ +
+ + + + +
+
+ -
- - - - -
-
-
- - - -
- -
- - - -
-
-
- -
- - -
- - - - - +
+ + +
+
From 26c94ad7252bbde367e834a0a6735a902a3e0b62 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 4 Apr 2023 16:13:51 -0700 Subject: [PATCH 104/191] [story/VSPC-214] Add slide is working --- .../vspace/core/services/ISlideManager.java | 3 +- .../core/services/impl/SlideManager.java | 155 +++++++++++------- 2 files changed, 99 insertions(+), 59 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index 32d962d4b..c5c48a747 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -55,6 +55,7 @@ public interface ISlideManager { LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language); - SlideForm createNewSlideForm(SlideForm slideorm); + SlideForm createNewSlideForm(ISlide slide); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index cf08581a4..764cbd97f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -79,10 +79,12 @@ public class SlideManager implements ISlideManager { @Override public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type) { - SlideForm sf = createNewSlideForm(slideForm); + + + ISlide slide = slideFactory.createSlide(module, slideForm, type); - + //slideForm=mapedLocalizedTextForm; return slideRepo.save((Slide) slide); } @@ -198,9 +200,23 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { + + SlideForm mapedLocalizedTextForm = createNewSlideForm(slide); + int i=0; + for(LocalizedTextForm name: mapedLocalizedTextForm.getNames()) + { + name.setText(slideForm.getNames().get(i).getText()); + i++; + } + int j=0; + for(LocalizedTextForm name: mapedLocalizedTextForm.getDescriptions()) + { + name.setText(slideForm.getDescriptions().get(j).getText()); + j++; + } - addSlideName(slide, slideForm.getNames()); - addSlideDescription(slide, slideForm.getDescriptions()); + addSlideName(slide, mapedLocalizedTextForm.getNames()); + addSlideDescription(slide, mapedLocalizedTextForm.getDescriptions()); } @@ -218,29 +234,36 @@ public void addSlideName(ISlide slide, List names) { if(!CollectionUtils.isEmpty(names)) { - for(LocalizedTextForm name : names ) - if(name!=null) { - - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + for(LocalizedTextForm name : names ) - - if(localizedText != null) { - localizedText.setText(name.getText()); - } else { - - - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { + { + if (name.getLocalisedTextId()!=null) { + LocalizedText localizedTextUpdate = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedTextUpdate != null) { + localizedTextUpdate.setText(name.getText()); + } + } - localizedText = new LocalizedText(exhibitionLanguage, name.getText()); - slide.getSlideNames().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + + LocalizedText localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + slide.getSlideNames().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); + } + + + + } + - } - } + } + } + setNameAsDefaultLanguage(slide); @@ -255,26 +278,31 @@ public void addSlideName(ISlide slide, List names) { public void addSlideDescription(ISlide slide, List descriptions) { // TODO Auto-generated method stub - if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedTextForm description : descriptions ) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - - if(localizedText != null) { - localizedText.setText(description.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguageId()); + + for(LocalizedTextForm description : descriptions ) { + + if (description.getLocalisedTextId()!=null) { + LocalizedText localizedTextUpdate = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedTextUpdate != null) { + localizedTextUpdate.setText(description.getText()); + } + } + + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, description.getText()); - slide.getSlideNames().add(localizedText); + LocalizedText localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + slide.getSlideDescriptions().add(localizedText); exhibitionLanguage.getLocalizedTexts().add(localizedText); - - } - } - } - } + + } + } + + + } + setDescriptionAsDefaultLanguage(slide); } @@ -313,17 +341,27 @@ public void updateSlideWithDefaultNameAndDescription(Iterable slideList) public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); SlideForm slideForm = new SlideForm(); - LocalizedText localizedText = new LocalizedText(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); slide.getSlideDescriptions().forEach(description -> { - slideForm.getDescriptions().add((LocalizedTextForm) description); + + LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(); + localizedDescriptionForm.setText(description.getText()); + localizedDescriptionForm.setLocalisedTextId( description.getId()); + + slideForm.getDescriptions().add(localizedDescriptionForm); }); + slide.getSlideNames().forEach(title -> { - slideForm.getNames().add((LocalizedTextForm) title); + + LocalizedTextForm localizedtitleForm = new LocalizedTextForm(); + localizedtitleForm.setText(title.getText()); + localizedtitleForm.setLocalisedTextId( title.getId()); + slideForm.getNames().add(localizedtitleForm); }); + return slideForm; } @@ -340,14 +378,18 @@ public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangua // TODO Auto-generated method stub LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - + ILocalizedText title = slide.getSlideNames().stream() - .filter(slideTitle -> StringUtils.equals(slideTitle.getExhibitionLanguage().getId(), language.getId())).findAny().orElse(null); + .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); if(title != null) { localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } + localizedTitleForm.setLocalisedTextId( title.getId()); + + } + + + localizedTitleForm.setExhibitionLanguageId(language.getId()); localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); @@ -368,31 +410,28 @@ public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitio // TODO Auto-generated method stub LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText description = slide.getSlideDescriptions().stream() - .filter(slideDescription -> StringUtils.equals(language.getId(), slideDescription.getExhibitionLanguage().getId())).findAny().orElse(null); + + ILocalizedText text = slide.getSlideDescriptions().stream() + .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); - if(description != null) { - localizedDescriptionForm.setText(description.getText()); - localizedDescriptionForm.setLocalisedTextId( description.getId()); + if(text != null) { + localizedDescriptionForm.setText(text.getText()); + localizedDescriptionForm.setLocalisedTextId( text.getId()); - } + } + localizedDescriptionForm.setExhibitionLanguageId(language.getId()); localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedDescriptionForm; } @Override - public SlideForm createNewSlideForm(SlideForm slideForm) { - Slide slide = new Slide(); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + public SlideForm createNewSlideForm(ISlide slide) { + SlideForm slideForm = new SlideForm(); -// IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); -// slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); -// -// slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); -// slideForm.setName(createLocalizedNameForm(slide, defaultLanguage).getText()); -// slideForm.setDescription(createLocalizedDescriptionForm(slide, defaultLanguage).getText()); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + startExhibtion.getLanguages().forEach(language -> { slideForm.getNames().add(createLocalizedNameForm(slide, language)); From 8133b39cb82562589fe5a52693afcf031a8b7cb6 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 7 Apr 2023 15:25:43 -0700 Subject: [PATCH 105/191] [story/VSPC-214] edit slide --- .../vspace/core/services/ISlideManager.java | 4 +- .../core/services/impl/SlideManager.java | 167 +++++------------- .../vspace/web/staff/EditSlideController.java | 5 +- 3 files changed, 45 insertions(+), 131 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index c5c48a747..636f182f3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -46,9 +46,7 @@ public interface ISlideManager { void addSlideDescription(ISlide slide, List descriptions); void addSlideName(ISlide slide, List names); - - void updateSlideWithDefaultNameAndDescription(Iterable slideList); - + SlideForm getSlideForm(String slideId); LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 764cbd97f..35c6bef42 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -66,9 +66,6 @@ public class SlideManager implements ISlideManager { @Autowired ExhibitionLanguageRepository exhibitionLanguageRepository; - @Autowired - LocalizedTextRepository localizedTextRepository; - @Autowired private IExhibitionManager exhibitionManager; @@ -79,12 +76,7 @@ public class SlideManager implements ISlideManager { @Override public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type) { - - - ISlide slide = slideFactory.createSlide(module, slideForm, type); - - //slideForm=mapedLocalizedTextForm; return slideRepo.save((Slide) slide); } @@ -124,7 +116,6 @@ public void updateBranchingPoint(IBranchingPoint branchingPoint, List ed @Override public ISlide getSlide(String slideId) { Optional slide = slideRepo.findById(slideId); - if (slide.isPresent()) { setDescriptionAsDefaultLanguage(slide.get()); setNameAsDefaultLanguage(slide.get()); @@ -200,73 +191,50 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { - - SlideForm mapedLocalizedTextForm = createNewSlideForm(slide); + SlideForm mappedLocalizedTextForm = createNewSlideForm(slide); int i=0; - for(LocalizedTextForm name: mapedLocalizedTextForm.getNames()) + for(LocalizedTextForm name: mappedLocalizedTextForm.getNames()) { name.setText(slideForm.getNames().get(i).getText()); i++; } int j=0; - for(LocalizedTextForm name: mapedLocalizedTextForm.getDescriptions()) + for(LocalizedTextForm name: mappedLocalizedTextForm.getDescriptions()) { name.setText(slideForm.getDescriptions().get(j).getText()); j++; } - - addSlideName(slide, mapedLocalizedTextForm.getNames()); - addSlideDescription(slide, mapedLocalizedTextForm.getDescriptions()); - + addSlideName(slide, mappedLocalizedTextForm.getNames()); + addSlideDescription(slide, mappedLocalizedTextForm.getDescriptions()); } /** - * * Adds name to slideNames List - * - * * @param slide * @param names */ @Override public void addSlideName(ISlide slide, List names) { - - if(!CollectionUtils.isEmpty(names)) { - - for(LocalizedTextForm name : names ) - - { - if (name.getLocalisedTextId()!=null) { - LocalizedText localizedTextUpdate = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedTextUpdate != null) { - localizedTextUpdate.setText(name.getText()); - } + for(LocalizedTextForm name : names ) { + if(name.getLocalisedTextId()!=null) { + LocalizedText localizedTextUpdate = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedTextUpdate != null) { + localizedTextUpdate.setText(name.getText()); + } } - - - else { + else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); exhibitionLanguage.getLocalizedTexts().add(localizedText); - - } - - - - + } } - - - } + } } - - setNameAsDefaultLanguage(slide); - } /** @@ -276,35 +244,26 @@ public void addSlideName(ISlide slide, List names) { */ @Override public void addSlideDescription(ISlide slide, List descriptions) { - // TODO Auto-generated method stub - - if(!CollectionUtils.isEmpty(descriptions)) { - + if(!CollectionUtils.isEmpty(descriptions)) { for(LocalizedTextForm description : descriptions ) { - if (description.getLocalisedTextId()!=null) { LocalizedText localizedTextUpdate = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedTextUpdate != null) { localizedTextUpdate.setText(description.getText()); } + } + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + + LocalizedText localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + slide.getSlideDescriptions().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); } - - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - - LocalizedText localizedText = new LocalizedText(exhibitionLanguage, description.getText()); - slide.getSlideDescriptions().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); - - } - } - - - } - - setDescriptionAsDefaultLanguage(slide); - + } + } + setDescriptionAsDefaultLanguage(slide); } @Override @@ -326,17 +285,6 @@ public void setDescriptionAsDefaultLanguage(ISlide slide) { slide.setDescription(defaultSlideDescription); } - - - @Override - public void updateSlideWithDefaultNameAndDescription(Iterable slideList) { - slideList.forEach(slide -> { - setDescriptionAsDefaultLanguage(slide); - setNameAsDefaultLanguage(slide); - }); - } - - @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); @@ -344,26 +292,18 @@ public SlideForm getSlideForm(String slideId) { slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); slide.getSlideDescriptions().forEach(description -> { - - LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(); localizedDescriptionForm.setText(description.getText()); localizedDescriptionForm.setLocalisedTextId( description.getId()); - slideForm.getDescriptions().add(localizedDescriptionForm); - }); - slide.getSlideNames().forEach(title -> { - LocalizedTextForm localizedtitleForm = new LocalizedTextForm(); localizedtitleForm.setText(title.getText()); localizedtitleForm.setLocalisedTextId( title.getId()); slideForm.getNames().add(localizedtitleForm); }); - - return slideForm; - + return slideForm; } /** @@ -375,27 +315,16 @@ public SlideForm getSlideForm(String slideId) { */ @Override public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { - // TODO Auto-generated method stub - - LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - + LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); ILocalizedText title = slide.getSlideNames().stream() .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); - if(title != null) { localizedTitleForm.setText(title.getText()); localizedTitleForm.setLocalisedTextId( title.getId()); - - } - - - + } localizedTitleForm.setExhibitionLanguageId(language.getId()); - localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); - + localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedTitleForm; - - } /** @@ -407,43 +336,33 @@ public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangua */ @Override public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { - // TODO Auto-generated method stub - - LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - + LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); ILocalizedText text = slide.getSlideDescriptions().stream() .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); - if(text != null) { localizedDescriptionForm.setText(text.getText()); localizedDescriptionForm.setLocalisedTextId( text.getId()); - - } - + } localizedDescriptionForm.setExhibitionLanguageId(language.getId()); localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedDescriptionForm; - } + + /** + * + * Creates new slide form object + * @param slide + * @return + */ @Override public SlideForm createNewSlideForm(ISlide slide) { - SlideForm slideForm = new SlideForm(); - + SlideForm slideForm = new SlideForm(); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - startExhibtion.getLanguages().forEach(language -> { - - slideForm.getNames().add(createLocalizedNameForm(slide, language)); - - - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); - - - + slideForm.getNames().add(createLocalizedNameForm(slide, language)); + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); }); - return slideForm; - + return slideForm; } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java index 870c7fa31..d95d7d499 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java @@ -76,11 +76,8 @@ public String show(Model model, @PathVariable("moduleId") String moduleId, @Path model.addAttribute("slideId", slideId); model.addAttribute("moduleId", moduleId); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); - - return "staff/modules/slides/edit"; } From 629b175bf8fe99eaf256c8ba93d95adc0e40a2e3 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 10 Apr 2023 16:26:39 -0700 Subject: [PATCH 106/191] [story/VSPC-214]add slide new ui --- .../vspace/web/staff/AddSlideController.java | 2 +- .../views/staff/modules/slides/add.html | 83 +++++++++++-------- 2 files changed, 49 insertions(+), 36 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index 71f5f6aa7..adf35cab9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -41,7 +41,7 @@ public class AddSlideController { @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - model.addAttribute("slide", new SlideForm()); + model.addAttribute("slide", slideManager.createNewSlideForm(null)); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 6fce55f5e..9228acc69 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -49,7 +49,6 @@ } - @@ -115,26 +114,37 @@

Add new Slide

-
- -
-

[[${exhibitionLanguage.label}]]

-
- - - + + +
+
+
+ +
- -
- - - - +
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+ + +
+
+
-
- - + +
@@ -160,7 +170,10 @@

Add new Slide

- + +

+ +

\ No newline at end of file From 840062d047cfb79fc87f227f63d0ffee8978f737 Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 11 Apr 2023 16:24:58 -0700 Subject: [PATCH 107/191] [story/VSPC-232] review comments refactor --- ...ionLanguageCouldNotBeDeletedException.java | 32 ------------------- .../ExhibitionLanguageDeletionException.java | 32 +++++++++++++++++++ .../core/model/impl/ExhibitionAboutPage.java | 12 +++---- .../core/services/IExhibitionManager.java | 4 +-- .../core/services/impl/ExhibitionManager.java | 6 ++-- .../ExhibitionConfigurationController.java | 6 ++-- .../vspace/web/staff/forms/AboutPageForm.java | 1 - .../web/staff/forms/LocalizedTextForm.java | 29 +++++++++-------- .../services/impl/ExhibitionManagerTest.java | 14 ++++---- 9 files changed, 69 insertions(+), 67 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageCouldNotBeDeletedException.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageCouldNotBeDeletedException.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageCouldNotBeDeletedException.java deleted file mode 100644 index 87a244c02..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageCouldNotBeDeletedException.java +++ /dev/null @@ -1,32 +0,0 @@ -package edu.asu.diging.vspace.core.exception; - -public class ExhibitionLanguageCouldNotBeDeletedException extends Exception { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public ExhibitionLanguageCouldNotBeDeletedException() { - super(); - } - - public ExhibitionLanguageCouldNotBeDeletedException(String message, Throwable cause, boolean enableSuppression, - boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - public ExhibitionLanguageCouldNotBeDeletedException(String message, Throwable cause) { - super(message, cause); - } - - public ExhibitionLanguageCouldNotBeDeletedException(String message) { - super(message); - } - - public ExhibitionLanguageCouldNotBeDeletedException(Throwable cause) { - super(cause); - } - - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java new file mode 100644 index 000000000..0ce2fb3a8 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java @@ -0,0 +1,32 @@ +package edu.asu.diging.vspace.core.exception; + +public class ExhibitionLanguageDeletionException extends Exception { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public ExhibitionLanguageDeletionException() { + super(); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause, boolean enableSuppression, + boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause) { + super(message, cause); + } + + public ExhibitionLanguageDeletionException(String message) { + super(message); + } + + public ExhibitionLanguageDeletionException(Throwable cause) { + super(cause); + } + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 0bde0dd0e..194eea58e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -42,11 +42,11 @@ public class ExhibitionAboutPage { @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="AboutPage_LocText_titles") - private List exhibitionTitles = new ArrayList(); + private List localizedTitles = new ArrayList(); @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="AboutPage_LocText_descriptions") - private List exhibitionTextDescriptions = new ArrayList(); + private List localizedDescriptions = new ArrayList(); public String getId() { return id; @@ -74,19 +74,19 @@ public void setAboutPageText(String aboutPageText) { } public List getExhibitionTitles() { - return exhibitionTitles; + return localizedTitles; } public void setExhibitionTitles(List exhibitionTitles) { - this.exhibitionTitles = exhibitionTitles; + this.localizedTitles = exhibitionTitles; } public List getExhibitionTextDescriptions() { - return exhibitionTextDescriptions; + return localizedDescriptions; } public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { - this.exhibitionTextDescriptions = exhibitionTextDescriptions; + this.localizedDescriptions = exhibitionTextDescriptions; } /* diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 901fdbce6..0601193d2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -2,7 +2,7 @@ import java.util.List; -import edu.asu.diging.vspace.core.exception.ExhibitionLanguageCouldNotBeDeletedException; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -36,7 +36,7 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageCouldNotBeDeletedException; + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException; boolean localizedTextDoesNotExist(IExhibitionLanguage language); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index dba87b812..5a2a75695 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -19,7 +19,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.data.LocalizedTextRepository; -import edu.asu.diging.vspace.core.exception.ExhibitionLanguageCouldNotBeDeletedException; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.IExhibition; @@ -105,7 +105,7 @@ public IExhibition getStartExhibition() { * @throws LanguageListConfigurationNotFoundException */ @Override - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws ExhibitionLanguageCouldNotBeDeletedException{ + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws ExhibitionLanguageDeletionException{ if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { throw new LanguageListConfigurationNotFoundException("Exhibition Language Configuration not found"); } @@ -132,7 +132,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { if(!localizedTextDoesNotExist(language)) { - throw new ExhibitionLanguageCouldNotBeDeletedException() ; + throw new ExhibitionLanguageDeletionException() ; } language.getLocalizedTexts().clear(); localizedTextRepo.deleteAll(language.getLocalizedTexts()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index 955fa9cd4..2ebe11c99 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -22,7 +22,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; -import edu.asu.diging.vspace.core.exception.ExhibitionLanguageCouldNotBeDeletedException; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; @@ -79,7 +79,7 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return - * @throws ExhibitionLanguageCouldNotBeDeletedException + * @throws ExhibitionLanguageDeletionException */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, @@ -103,7 +103,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, try { exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { attributes.addAttribute("alertType", "failure"); attributes.addAttribute("message", "Could not delete the Exhibition Language"); attributes.addAttribute("showAlert", "true"); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java index 345e13919..6ed2358d4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java @@ -6,7 +6,6 @@ import edu.asu.diging.vspace.core.model.impl.LocalizedText; public class AboutPageForm { - // new from object with localized text, exhibition language id, localized object id. private String title; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index c8dac423b..816a683b2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -2,24 +2,16 @@ public class LocalizedTextForm { - String text; + private String text; - String localisedTextId; + private String localisedTextId; - String exhibitionLanguageId; + private String exhibitionLanguageId; - String exhibitionLanguageLabel; + private String exhibitionLanguageLabel; - Boolean isDefaultExhibitionLanguage; + private Boolean isDefaultExhibitionLanguage; - public Boolean getIsDefaultExhibitionLanguage() { - return isDefaultExhibitionLanguage; - } - - public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { - this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; - } - public LocalizedTextForm() { super(); } @@ -33,6 +25,8 @@ public LocalizedTextForm(String text, String localisedTextId, String exhibitionL this.exhibitionLanguageLabel = exhibitionLanguageLabel; } + + public String getText() { return text; } @@ -65,4 +59,13 @@ public void setExhibitionLanguageLabel(String exhibitionLanguageLabel) { this.exhibitionLanguageLabel = exhibitionLanguageLabel; } + public Boolean getIsDefaultExhibitionLanguage() { + return isDefaultExhibitionLanguage; + } + + public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { + this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; + } + + } diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java index ea1fbd39d..aa545d443 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java @@ -23,7 +23,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; -import edu.asu.diging.vspace.core.exception.ExhibitionLanguageCouldNotBeDeletedException; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -94,7 +94,7 @@ public void test_updateExhibitionLanguages_success() { when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); try { serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { e.printStackTrace(); } assertEquals(exhibition.getLanguages().size(),2); @@ -133,7 +133,7 @@ public void test_updateExhibitionLanguages_duplicates() { when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); try { serviceToTest.updateExhibitionLanguages(exhibition, languages, null); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { e.printStackTrace(); } @@ -162,7 +162,7 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); try { serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { e.printStackTrace(); } assertEquals(exhibition.getLanguages().size(),1); @@ -260,7 +260,7 @@ public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { languages.remove("en"); serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); assertEquals(exhibition.getLanguages().size(),1); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { e.printStackTrace(); } @@ -301,10 +301,10 @@ public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() { languages.remove("en"); - Assert.assertThrows(ExhibitionLanguageCouldNotBeDeletedException.class, + Assert.assertThrows(ExhibitionLanguageDeletionException.class, () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa")); - } catch (ExhibitionLanguageCouldNotBeDeletedException e) { + } catch (ExhibitionLanguageDeletionException e) { e.printStackTrace(); } From 8d456e5e85fa31e911bbf73e4cd2fdbf48ce539d Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 11 Apr 2023 17:48:40 -0700 Subject: [PATCH 108/191] [story/VSPC-214] edit slide --- .../core/services/impl/SlideManager.java | 69 ++++------- .../views/staff/modules/slides/add.html | 10 +- .../views/staff/modules/slides/edit.html | 113 +++++++++++++++--- 3 files changed, 126 insertions(+), 66 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 35c6bef42..cdd800ac7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -191,21 +191,8 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { - SlideForm mappedLocalizedTextForm = createNewSlideForm(slide); - int i=0; - for(LocalizedTextForm name: mappedLocalizedTextForm.getNames()) - { - name.setText(slideForm.getNames().get(i).getText()); - i++; - } - int j=0; - for(LocalizedTextForm name: mappedLocalizedTextForm.getDescriptions()) - { - name.setText(slideForm.getDescriptions().get(j).getText()); - j++; - } - addSlideName(slide, mappedLocalizedTextForm.getNames()); - addSlideDescription(slide, mappedLocalizedTextForm.getDescriptions()); + addSlideName(slide, slideForm.getNames()); + addSlideDescription(slide, slideForm.getDescriptions()); } /** @@ -217,17 +204,17 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { public void addSlideName(ISlide slide, List names) { if(!CollectionUtils.isEmpty(names)) { for(LocalizedTextForm name : names ) { - if(name.getLocalisedTextId()!=null) { - LocalizedText localizedTextUpdate = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedTextUpdate != null) { - localizedTextUpdate.setText(name.getText()); + + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(name.getText()); } - } + else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - LocalizedText localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); exhibitionLanguage.getLocalizedTexts().add(localizedText); } @@ -244,21 +231,20 @@ public void addSlideName(ISlide slide, List names) { */ @Override public void addSlideDescription(ISlide slide, List descriptions) { - if(!CollectionUtils.isEmpty(descriptions)) { + if(!CollectionUtils.isEmpty(descriptions)) { for(LocalizedTextForm description : descriptions ) { - if (description.getLocalisedTextId()!=null) { - LocalizedText localizedTextUpdate = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedTextUpdate != null) { - localizedTextUpdate.setText(description.getText()); + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); } - } + else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - - LocalizedText localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + localizedText = new LocalizedText(exhibitionLanguage, description.getText()); slide.getSlideDescriptions().add(localizedText); exhibitionLanguage.getLocalizedTexts().add(localizedText); + } } } @@ -288,21 +274,9 @@ public void setDescriptionAsDefaultLanguage(ISlide slide) { @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); - SlideForm slideForm = new SlideForm(); + SlideForm slideForm = createNewSlideForm(slide); slideForm.setName(slide.getName()); - slideForm.setDescription(slide.getDescription()); - slide.getSlideDescriptions().forEach(description -> { - LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(); - localizedDescriptionForm.setText(description.getText()); - localizedDescriptionForm.setLocalisedTextId( description.getId()); - slideForm.getDescriptions().add(localizedDescriptionForm); - }); - slide.getSlideNames().forEach(title -> { - LocalizedTextForm localizedtitleForm = new LocalizedTextForm(); - localizedtitleForm.setText(title.getText()); - localizedtitleForm.setLocalisedTextId( title.getId()); - slideForm.getNames().add(localizedtitleForm); - }); + slideForm.setDescription(slide.getDescription()); return slideForm; } @@ -316,11 +290,13 @@ public SlideForm getSlideForm(String slideId) { @Override public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); + if(slide!=null) { ILocalizedText title = slide.getSlideNames().stream() .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); if(title != null) { localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId( title.getId()); + localizedTitleForm.setLocalisedTextId(title.getId()); + } } localizedTitleForm.setExhibitionLanguageId(language.getId()); localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); @@ -337,12 +313,15 @@ public LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangua @Override public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); + if(slide!=null) { ILocalizedText text = slide.getSlideDescriptions().stream() .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); + if(text != null) { localizedDescriptionForm.setText(text.getText()); - localizedDescriptionForm.setLocalisedTextId( text.getId()); + localizedDescriptionForm.setLocalisedTextId(text.getId()); } + } localizedDescriptionForm.setExhibitionLanguageId(language.getId()); localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedDescriptionForm; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 9228acc69..02a1fbd90 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -130,11 +130,11 @@

Add new Slide

-
- - - - +
+ + + +
diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index f244c79db..bc876f6e7 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -3,6 +3,52 @@ + + + @@ -53,24 +117,38 @@

Edit Slide: [[${slideForm.name}]]

-
-
-

[[${exhibitionLanguage.label}]]

-
- - - - + +
+
+
+ +
- -
- - - +
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+ + +
+
+
@@ -89,9 +167,12 @@

Edit Slide: [[${slideForm.name}]]

- - - Cancel + +

+ + Cancel +

+
From 4c9d662176930b59c4ede0a802d9584a6de1d1f7 Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 13 Apr 2023 16:11:56 -0700 Subject: [PATCH 109/191] [story/VSPC-232] review comments --- .../core/model/impl/ExhibitionLanguage.java | 2 +- .../vspace/core/model/impl/LocalizedText.java | 2 +- .../services/IExhibitionAboutPageManager.java | 13 +------ .../core/services/IExhibitionManager.java | 2 +- .../impl/ExhibitionAboutPageManager.java | 38 +++++++------------ .../core/services/impl/ExhibitionManager.java | 17 ++++++--- .../staff/ExhibitionAboutPageController.java | 2 +- .../services/impl/ExhibitionManagerTest.java | 2 +- 8 files changed, 32 insertions(+), 46 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index daeed7dd1..29a0af8c1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,7 +33,7 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; - @OneToMany(targetEntity = LocalizedText.class , cascade= CascadeType.ALL, orphanRemoval = true) + @OneToMany(targetEntity = LocalizedText.class) private List localizedTexts = new ArrayList(); public ExhibitionLanguage() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index e8605f71a..edd281870 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -20,7 +20,7 @@ public class LocalizedText implements ILocalizedText { @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - @OneToOne + @ManyToOne @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java index f84cd59ee..09365a2b1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java @@ -20,21 +20,12 @@ public interface IExhibitionAboutPageManager { /** * This method stores Exhibition About page information and returns the {@link ExhibitionAboutPage} which is being stored - * @param {@link ExhibitionAboutPage} This object contains Exhibition about page values to be stored. + * @param aboutPageForm * @return {@link ExhibitionAboutPage} Returns the object after being stored. Object will now have an ID. */ - ExhibitionAboutPage store(ExhibitionAboutPage exhibitionAboutPage); + ExhibitionAboutPage store(AboutPageForm aboutPageForm); ExhibitionAboutPage getExhibitionAboutPage(); - - - /** - * This method stores LanguageDescriptionObject page information and returns the {@link ExhibitionAboutPage} which is being stored - * @param {@link ExhibitionAboutPage} This object contains Exhibition about page values to be stored. - * @param {@link AboutPageForm} This object contains Exhibition about page form values to map in ExhihibitionAboutPage lists. - * @return {@link ExhibitionAboutPage} Returns the object after being stored. Object will now have an ID. - */ - void storeAboutPageData(AboutPageForm aboutPageForm); AboutPageForm createAboutPageForm(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 0601193d2..8c651af6b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -38,6 +38,6 @@ public interface IExhibitionManager { void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException; - boolean localizedTextDoesNotExist(IExhibitionLanguage language); + boolean checkIfLocalizedTextExists(IExhibitionLanguage language); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 1cfe24f67..97ccb309c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -57,38 +57,30 @@ public List findAll() { return results; } + /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#storeAboutPageData() + * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#store() */ @Override - public void storeAboutPageData(AboutPageForm aboutPageForm) { - + public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { + IExhibition exhibition = exhibitionManager.getStartExhibition(); + if(!exhibition.isAboutPageConfigured()) { + exhibition.setAboutPageConfigured(true); + exhibitionManager.storeExhibition((Exhibition)exhibition); + } + ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); - for(LocalizedTextForm title:aboutPageForm.getTitles()) - { + for(LocalizedTextForm title:aboutPageForm.getTitles()) { setAboutPageTitle(title,exhibitionAboutPage); } - for(LocalizedTextForm aboutPageText:aboutPageForm.getAboutPageTexts()) - { + for(LocalizedTextForm aboutPageText:aboutPageForm.getAboutPageTexts()) { setAboutPageDescription(aboutPageText,exhibitionAboutPage); } - - } - - /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#store() - */ - @Override - public ExhibitionAboutPage store(ExhibitionAboutPage exhibitionAboutPage) { - IExhibition exhibition = exhibitionManager.getStartExhibition(); - if(!exhibition.isAboutPageConfigured()) { - exhibition.setAboutPageConfigured(true); - exhibitionManager.storeExhibition((Exhibition)exhibition); - } + return repo.save(exhibitionAboutPage); } @@ -138,17 +130,13 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA if(localizedText != null) { localizedText.setText(aboutPageText.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { exhibitionAboutPage.getExhibitionTextDescriptions().add(new LocalizedText(exhibitionLanguage, aboutPageText.getText())); } - } - + } } - } /** diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 5a2a75695..d0b79a1e6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -131,7 +131,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList()); for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { - if(!localizedTextDoesNotExist(language)) { + if(!checkIfLocalizedTextExists(language)) { throw new ExhibitionLanguageDeletionException() ; } language.getLocalizedTexts().clear(); @@ -143,15 +143,22 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } + /** + * + */ @Override - public boolean localizedTextDoesNotExist(IExhibitionLanguage language) { - + public boolean checkIfLocalizedTextExists(IExhibitionLanguage language) { + return CollectionUtils.isEmpty(language.getLocalizedTexts()) || !CollectionUtils.isEmpty(language.getLocalizedTexts()) && checkIfTextIsEmpty(language.getLocalizedTexts()); } - + /** + * + * @param localizedTexts + * @return + */ private boolean checkIfTextIsEmpty(List localizedTexts) { - + return !localizedTexts.stream().anyMatch( localizedText -> !StringUtils.isEmpty(localizedText.getText()) ); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index e1391c8fb..b3116ae15 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -47,7 +47,7 @@ public String showAboutPage(Model model) { @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.POST) public String createOrUpdateAboutPage(@ModelAttribute AboutPageForm aboutPageForm, RedirectAttributes attributes) throws IOException { - aboutPageManager.storeAboutPageData(aboutPageForm); + aboutPageManager.store(aboutPageForm); attributes.addAttribute("alertType", "success"); attributes.addAttribute("message", "Successfully Saved!"); attributes.addAttribute("showAlert", "true"); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java index aa545d443..0f6bbbe33 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java @@ -293,7 +293,7 @@ public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() { language.setLabel("English"); - when(serviceToTestMock.localizedTextDoesNotExist(language)).thenReturn(false); + when(serviceToTestMock.checkIfLocalizedTextExists(language)).thenReturn(false); try { serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); From edba91cd314bcbbd5ca6019dccc71d07257aedd6 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 14 Apr 2023 15:25:18 -0700 Subject: [PATCH 110/191] [story/VSPC-214]UI changes --- .../vspace/core/services/impl/SlideManager.java | 12 ++++++++++-- .../WEB-INF/views/staff/modules/slides/add.html | 4 ++-- .../WEB-INF/views/staff/modules/slides/edit.html | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index cdd800ac7..438e0a454 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -337,9 +337,17 @@ public LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitio public SlideForm createNewSlideForm(ISlide slide) { SlideForm slideForm = new SlideForm(); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); + startExhibtion.getLanguages().forEach(language -> { - slideForm.getNames().add(createLocalizedNameForm(slide, language)); - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); + if(!language.isDefault()) { + slideForm.getNames().add(createLocalizedNameForm(slide, language)); + slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); + } + + }); return slideForm; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 02a1fbd90..2de62959f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -133,8 +133,8 @@

Add new Slide

- - + +
diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index bc876f6e7..6016cd0b1 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -138,8 +138,8 @@

Edit Slide: [[${slideForm.name}]]

- - + +
From b7450f954df5f29854f0458f3e29cf241ef9fb4a Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 17 Apr 2023 16:17:50 -0700 Subject: [PATCH 111/191] [story/VSPC-214] edit page --- .../views/staff/modules/slides/edit.html | 107 ++++-------------- 1 file changed, 25 insertions(+), 82 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index 6016cd0b1..5e00f3de7 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -9,46 +9,9 @@ overflow-y: scroll; height: 400px; } - -/* Style the tab */ -.tab { - overflow: hidden; - border: 1px solid #ccc; - background-color: #f1f1f1; -} - -/* Style the buttons inside the tab */ -.tab button { - background-color: inherit; - float: left; - border: none; - outline: none; - cursor: pointer; - padding: 14px 16px; - transition: 0.3s; - font-size: 17px; -} - -/* Change background color of buttons on hover */ -.tab button:hover { - background-color: #ddd; -} - - -/* Create an active/current tablink class */ -.tab button.active { - background-color: #ccc; -} - -/* Style the tab content */ -.tabcontent { - display: none; - padding: 6px 12px; - border: 1px solid #ccc; - border-top: none; -} + @@ -117,40 +65,35 @@

Edit Slide: [[${slideForm.name}]]

-
- -
-
-
- -
-
-
-
-
-

[[${title.exhibitionLanguageLabel}]]

- - - - -
- - - - - -
- -
-
+
+ +
+
+ + + + +
+ + + + +
+
+
-
+ + -
- - -
- - - - -
-
-
-
- - +
+ +
+
+ + + + +
+ + + + +
+
+
+
+
From 3496b11b3fabd41b17f96e7b330a36a370770240 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 21 Apr 2023 15:26:53 -0700 Subject: [PATCH 114/191] [story/VSPC-214] Test cases --- .../views/staff/modules/slides/edit.html | 113 ++++++++++++++---- .../core/services/impl/SlideManagerTest.java | 62 ++++++++++ 2 files changed, 149 insertions(+), 26 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index 458627cc5..1a1326a1d 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -2,21 +2,53 @@ - + +/* Style the tab content */ +.tabcontent { + display: none; + padding: 6px 12px; + border: 1px solid #ccc; + border-top: none; +} + + + + +

Edit Slide: [[${slideForm.name}]]

@@ -71,24 +122,34 @@

Edit Slide: [[${slideForm.name}]]

-
-
- - - - -
- - - - -
-
-
-
+ + +
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+ + +
+
+
+
+ +
diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java index 6ffb0da77..f0413af20 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java @@ -1,5 +1,8 @@ package edu.asu.diging.vspace.core.services.impl; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -11,13 +14,22 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.springframework.beans.factory.annotation.Autowired; +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.exception.SlideDoesNotExistException; +import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; +import edu.asu.diging.vspace.core.model.display.SlideType; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.IModuleManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; +import edu.asu.diging.vspace.web.staff.forms.SlideForm; public class SlideManagerTest { @@ -26,9 +38,19 @@ public class SlideManagerTest { @Mock private SlideRepository slideRepo; + + @Mock + private IModuleManager moduleManager; + @InjectMocks private SlideManager slideManagerToTest = new SlideManager(); + + @Mock + private LocalizedTextRepository localizedRextRepo; + + @Mock + private ExhibitionLanguageRepository exhibitionLanguageRepository; // setting common used variables and Objects private String slideId, slideIdNotPresent, slideIdOther, moduleId, sequenceId, slideIdNotInSequence, sequenceIdOther; @@ -157,4 +179,44 @@ public void test_deleteSlideById_slideIdPresentManySequences() throws SlideDoesN } + + @Test + public void test_createSlide_success() { + List slidePageList = new ArrayList(); + + slidePageList.add(new Slide()); + + SlideForm slideForm = new SlideForm(); + List titleList = new ArrayList(); + titleList.add(new LocalizedTextForm("title", "ID1", "langId", "English")); + List slideTextList = new ArrayList(); + + slideTextList.add(new LocalizedTextForm( "slide text","ID2", "langId", "English")); + + + slideForm.setNames(titleList); + slideForm.setDescriptions(slideTextList); + slideForm.setType("Slide"); + when(slideRepo.findAll()).thenReturn(slidePageList); + + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + + LocalizedText locText2 = new LocalizedText(); + locText1.setId( "ID2"); + when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); + when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); + + IModule module = moduleManager.getModule(moduleId); + + SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); + + slideManagerToTest.createSlide(module, slideForm, type); + assertEquals(locText1.getText(), "title"); + assertEquals(locText2.getText(), "slide text"); + + + + } + } From 33ee44e6b272f0456e1ec2eb7de03c3fee2db438 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 24 Apr 2023 16:23:25 -0700 Subject: [PATCH 115/191] [story/VSPC-214] tabs for edit slide and test cases --- .../views/staff/modules/slides/add.html | 6 ++-- .../views/staff/modules/slides/edit.html | 33 +++++++------------ .../core/services/impl/SlideManagerTest.java | 32 ++++++++++++++++-- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 2de62959f..9e6cd4ccf 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -117,20 +117,20 @@

Add new Slide

-
+
-
+

[[${title.exhibitionLanguageLabel}]]

-
+
diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index 1a1326a1d..f519e649e 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -2,6 +2,7 @@ + - - - - - - -
-

Exhibition About Page

-
- - -
- -
- -
- - -
- -
-

[[${exhibitionLanguage.label}]]

-
- - - -
-
- - -
-
-

- -

- -
-
- - \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html deleted file mode 100644 index ce88e4276..000000000 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -
-

Edit Space: [(${spaceForm.name})]

- -
- -
-

[[${exhibitionLanguage.label}]]

-
- - - - -
- -
- - - -
-
- - - Cancel -
-
- - - From 1c0f38a286772f2180f52d51ddc7bc610cd52794 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 28 Apr 2023 15:16:34 -0700 Subject: [PATCH 119/191] [story/VSPC-214] removed unwanted files --- .../core/model/impl/ExhibitionAboutPage.java | 104 -------------- .../impl/ExhibitionAboutPageManager.java | 131 ------------------ .../staff/ExhibitionAboutPageController.java | 89 ------------ .../vspace/web/staff/forms/AboutPageForm.java | 49 ------- 4 files changed, 373 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java deleted file mode 100644 index e986c5d6c..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ /dev/null @@ -1,104 +0,0 @@ -package edu.asu.diging.vspace.core.model.impl; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.JoinTable; -import javax.persistence.Lob; -import javax.persistence.OneToMany; - -import org.commonmark.node.Node; -import org.commonmark.parser.Parser; -import org.commonmark.renderer.html.HtmlRenderer; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import edu.asu.diging.vspace.core.model.ILocalizedText; - -/** - * Model for Exhibition About Page - * - * @author Avirup Biswas - * - */ -@Entity -public class ExhibitionAboutPage{ - @Id - @GeneratedValue(generator = "exh_abtpg_id_generator") - @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") - private String id; - - @Lob - private String title; - - @Lob - private String aboutPageText; - - - - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="AboutPage_LangObj_titles") - private List exhibitionTitles; - - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="AboutPage_LangObj_descriptions") - private List exhibitionTextDescriptions; - - - public List getExhibitionTitles() { - return exhibitionTitles; - } - - public void setExhibitionTitles(List exhibitionTitles) { - this.exhibitionTitles = exhibitionTitles; - } - - public List getExhibitionTextDescriptions() { - return exhibitionTextDescriptions; - } - - public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { - this.exhibitionTextDescriptions = exhibitionTextDescriptions; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public String getAboutPageText() { - return aboutPageText; - } - - - public void setTitle(String title) { - this.title = title; - } - - public void setAboutPageText(String aboutPageText) { - this.aboutPageText = aboutPageText; - } - - /* - * (non-Javadoc) - * - * @see - * edu.asu.diging.vspace.core.model.impl.ITextBlock#htmlRenderedText() - */ - public String htmlRenderedText() { - Parser parser = Parser.builder().build(); - Node document = parser.parse(aboutPageText); - HtmlRenderer renderer = HtmlRenderer.builder().build(); - return renderer.render(document); - } -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java deleted file mode 100644 index f604a6b8d..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ /dev/null @@ -1,131 +0,0 @@ -package edu.asu.diging.vspace.core.services.impl; - -import java.util.ArrayList; -import java.util.List; -import javax.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import edu.asu.diging.vspace.core.data.ExhibitionAboutPageRepository; -import edu.asu.diging.vspace.core.data.ExhibitionRepository; -import edu.asu.diging.vspace.core.data.LocalizedTextRepository; -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; -import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; -import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; -/** - * - * @author Avirup Biswas - * - */ -@Transactional -@Service -public class ExhibitionAboutPageManager implements IExhibitionAboutPageManager{ - - @Autowired - private ExhibitionAboutPageRepository repo; - - @Autowired - private IExhibitionManager exhibitionManager; - - @Autowired - private LocalizedTextRepository languageObjectRepo; - - /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#findAll() - */ - @Override - public List findAll() { - Iterable aboutpages = repo.findAll(); - List results = new ArrayList<>(); - aboutpages.forEach(e -> results.add(e)); - return results; - } - - /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#storeAboutPageData() - */ - @Override - public ExhibitionAboutPage storeAboutPageData(ExhibitionAboutPage exhibitionAboutPage,AboutPageForm languageAboutPage) { - - for(LocalizedText titles:languageAboutPage.getTitles()) - { - setAboutPageTitle(titles.getText(),exhibitionAboutPage); - } - for(LocalizedText texts:languageAboutPage.getAboutPageTexts()) - { - setAboutPageDescription(texts.getText(),exhibitionAboutPage); - } - store(exhibitionAboutPage); - return exhibitionAboutPage; - - } - - /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#store() - */ - @Override - public ExhibitionAboutPage store(ExhibitionAboutPage exhibitionAboutPage) { - IExhibition exhibition = exhibitionManager.getStartExhibition(); - if(!exhibition.isAboutPageConfigured()) { - exhibition.setAboutPageConfigured(true); - exhibitionManager.storeExhibition((Exhibition)exhibition); - } - return repo.save(exhibitionAboutPage); - } - - /** - * This method returns the first ExhibitionAboutPage set by a Staff, if the - * ExhibitionAboutPage is not set yet, this method returns a new instance of - * an ExhibitionAbout Page - * @return ExhibitionAboutPage - */ - @Override - public ExhibitionAboutPage getExhibitionAboutPage() { - List aboutPageList = findAll(); - return aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); - } - - /** - * This method maps the title in ExhibitionAboutPage, and add that to - * exhibitionTitles list for each user selected Exhibition Language. - */ - public void setAboutPageTitle(String title, ExhibitionAboutPage exhibitionAboutPage) { - if(title!=null || title.length()!=0) - { - LocalizedText languageObject = new LocalizedText(); - languageObject.setText(title); - if(exhibitionAboutPage.getExhibitionTitles() == null) { - exhibitionAboutPage.setExhibitionTitles(new ArrayList()); - } - exhibitionAboutPage.getExhibitionTitles().add(languageObject); - storeLanguageObject(languageObject); - } - - } - /** - * This method maps the description in ExhibitionAboutPage, and add that to - * exhibitionTextDescriptions list for each user selected Exhibition Language. - */ - public void setAboutPageDescription(String aboutPageTexts, ExhibitionAboutPage exhibitionAboutPage) { - if(aboutPageTexts!=null || aboutPageTexts.length()!=0) - { - LocalizedText languageObject = new LocalizedText(); - languageObject.setText(aboutPageTexts); - if(exhibitionAboutPage.getExhibitionTextDescriptions() == null) { - exhibitionAboutPage.setExhibitionTextDescriptions(new ArrayList()); - } - exhibitionAboutPage.getExhibitionTextDescriptions().add(languageObject); - storeLanguageObject(languageObject); - } - - } - /** - * This method save the LanguageDescriptionObject in database. - */ - private void storeLanguageObject(LocalizedText languageObject) { - languageObjectRepo.save(languageObject); - } -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java deleted file mode 100644 index 9054ddbe2..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ /dev/null @@ -1,89 +0,0 @@ -package edu.asu.diging.vspace.web.staff; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; -import org.springframework.web.servlet.view.RedirectView; - -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.ILocalizedText; -import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; -import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; -import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; - - -/** - * - * @author Avirup Biswas - * - */ -@Controller -public class ExhibitionAboutPageController { - - @Autowired - private IExhibitionAboutPageManager aboutPageManager; - - @Autowired - private IExhibitionManager exhibitionManager; - - - @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.GET) - public String showAboutPage(Model model) { - List aboutPageList = aboutPageManager.findAll(); - ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(aboutPageList.size()-1):new ExhibitionAboutPage(); - AboutPageForm aboutPageForm=new AboutPageForm(); - aboutPageForm.setAboutPageText(exhibitionAboutPage.getAboutPageText()); - aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); - List titleList = new ArrayList(); - List textList = new ArrayList(); - for(ILocalizedText titles:exhibitionAboutPage.getExhibitionTitles()) - { - titleList.add((LocalizedText) titles); - } - for(ILocalizedText texts:exhibitionAboutPage.getExhibitionTextDescriptions()) - { - textList.add((LocalizedText) texts); - } - aboutPageForm.setTitles(titleList); - aboutPageForm.setAboutPageTexts(textList); - model.addAttribute("aboutPage", aboutPageForm); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - List languageObjectList = new ArrayList(); - startExhibtion.getLanguages().forEach(exhibitionLanguage -> { - LocalizedText languageObject = new LocalizedText(); - languageObject.setExhibitionLanguage((ExhibitionLanguage)exhibitionLanguage); - languageObjectList.add(languageObject); - }); - model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); - return "staff/exhibit/aboutPage"; - } - - - @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.POST) - public String createOrUpdateAboutPage(@ModelAttribute ExhibitionAboutPage aboutPageForm, AboutPageForm languageAboutPage, RedirectAttributes attributes) throws IOException { - List aboutPageList = aboutPageManager.findAll(); - ExhibitionAboutPage exhibitionAboutPage = aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); - exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); - exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); - exhibitionAboutPage=aboutPageManager.storeAboutPageData(aboutPageForm,languageAboutPage); - attributes.addAttribute("alertType", "success"); - attributes.addAttribute("message", "Successfully Saved!"); - attributes.addAttribute("showAlert", "true"); - return "redirect:/staff/exhibit/about"; - } - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java deleted file mode 100644 index 1f9d55074..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java +++ /dev/null @@ -1,49 +0,0 @@ -package edu.asu.diging.vspace.web.staff.forms; - -import java.util.List; - -import edu.asu.diging.vspace.core.model.impl.LocalizedText; - -public class AboutPageForm { - - private String title; - - private String aboutPageText; - - private List titles; - - private List aboutPageTexts; - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getAboutPageText() { - return aboutPageText; - } - - public void setAboutPageText(String aboutPageText) { - this.aboutPageText = aboutPageText; - } - - public List getTitles() { - return titles; - } - - public void setTitles(List titles) { - this.titles = titles; - } - - public List getAboutPageTexts() { - return aboutPageTexts; - } - - public void setAboutPageTexts(List aboutPageTexts) { - this.aboutPageTexts = aboutPageTexts; - } - -} From 0147eb1933f87378b15f85272cf8ab0f152375ca Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 1 May 2023 09:22:57 -0700 Subject: [PATCH 120/191] [story/VSPC-214]Code Factor --- .../core/services/impl/SlideManager.java | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index f7add844b..1b809385d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -205,10 +205,10 @@ public void addSlideName(ISlide slide, List names) { if(!CollectionUtils.isEmpty(names)) { for(LocalizedTextForm name : names ) { - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(name.getText()); - } + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(name.getText()); + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); @@ -232,22 +232,21 @@ public void addSlideName(ISlide slide, List names) { @Override public void addSlideDescription(ISlide slide, List descriptions) { if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedTextForm description : descriptions ) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); - } + for(LocalizedTextForm description : descriptions ) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); + } - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, description.getText()); - slide.getSlideDescriptions().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); - - } + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + slide.getSlideDescriptions().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); } } + } } setDescriptionAsDefaultLanguage(slide); } @@ -291,12 +290,12 @@ public SlideForm getSlideForm(String slideId) { private LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); if(slide!=null) { - ILocalizedText title = slide.getSlideNames().stream() + ILocalizedText title = slide.getSlideNames().stream() .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); - if(title != null) { - localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } + if(title != null) { + localizedTitleForm.setText(title.getText()); + localizedTitleForm.setLocalisedTextId(title.getId()); + } } localizedTitleForm.setExhibitionLanguageId(language.getId()); localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); @@ -314,13 +313,13 @@ private LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLangu private LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); if(slide!=null) { - ILocalizedText text = slide.getSlideDescriptions().stream() + ILocalizedText text = slide.getSlideDescriptions().stream() .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); - if(text != null) { - localizedDescriptionForm.setText(text.getText()); - localizedDescriptionForm.setLocalisedTextId(text.getId()); - } + if(text != null) { + localizedDescriptionForm.setText(text.getText()); + localizedDescriptionForm.setLocalisedTextId(text.getId()); + } } localizedDescriptionForm.setExhibitionLanguageId(language.getId()); localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); From 69201f07c9a5b7b6de12285bfa01c4e76dd84dce Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 1 May 2023 09:26:26 -0700 Subject: [PATCH 121/191] [story/VSPC-214]code factor --- .../asu/diging/vspace/core/services/impl/SlideManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 1b809385d..32825a832 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -234,8 +234,8 @@ public void addSlideDescription(ISlide slide, List descriptio if(!CollectionUtils.isEmpty(descriptions)) { for(LocalizedTextForm description : descriptions ) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); + if(localizedText != null) { + localizedText.setText(description.getText()); } else { From d63c7c6c32c213c7fda67d48806b93055b54040d Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 9 May 2023 16:26:25 -0700 Subject: [PATCH 122/191] [story/VSPC-232] added factory to create about page form --- .../factory/IExhibitionAboutPageFactory.java | 13 ++ .../impl/ExhibitionAboutPageFactory.java | 91 ++++++++++++++ .../diging/vspace/core/model/IExhibition.java | 2 + .../vspace/core/model/impl/Exhibition.java | 9 ++ .../core/model/impl/ExhibitionAboutPage.java | 9 +- .../services/IExhibitionAboutPageManager.java | 2 - .../impl/ExhibitionAboutPageManager.java | 83 +------------ .../core/services/impl/ExhibitionManager.java | 9 -- .../staff/ExhibitionAboutPageController.java | 6 +- .../services/impl/ExhibitionManagerTest.java | 116 +++++++----------- 10 files changed, 168 insertions(+), 172 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java new file mode 100644 index 000000000..d04869b9f --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.factory; + +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; + +public interface IExhibitionAboutPageFactory { + + /** + * Creates About Page form object + */ + AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java new file mode 100644 index 000000000..0a68a9186 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -0,0 +1,91 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.thymeleaf.util.StringUtils; + +import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +public class ExhibitionAboutPageFactory implements IExhibitionAboutPageFactory{ + + + + @Autowired + private IExhibitionManager exhibitionManager; + + /** + * Creates About Page form object + */ + @Override + public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage) { + AboutPageForm aboutPageForm=new AboutPageForm(); + aboutPageForm.setAboutPageText(exhibitionAboutPage.getAboutPageText()); + aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); + + aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, defaultLanguage)); + aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, defaultLanguage)); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, language)); + aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, language)); + } + }); + return aboutPageForm; + } + + /** + * Creates Localized title object for form + * + * @param exhibitionAboutPage + * @param language + * @return + */ + private LocalizedTextForm createLocalizedAboutTextForm(ExhibitionAboutPage exhibitionAboutPage, + IExhibitionLanguage language) { + + LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + ILocalizedText aboutPageText = exhibitionAboutPage.getExhibitionTextDescriptions().stream() + .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + + if(aboutPageText != null) { + localizedAboutTextForm.setText(aboutPageText.getText()); + localizedAboutTextForm.setLocalisedTextId( aboutPageText.getId()); + + } + localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedAboutTextForm; + } + + + /** + * + * Creates Localized about text object for form + * @param exhibitionAboutPage + * @param language + * @return + */ + private LocalizedTextForm createLocalizedTitleForm(ExhibitionAboutPage exhibitionAboutPage, IExhibitionLanguage language) { + LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + + ILocalizedText title = exhibitionAboutPage.getExhibitionTitles().stream() + .filter(exhibitionTitle -> StringUtils.equals(exhibitionTitle.getExhibitionLanguage().getId(), language.getId())).findAny().orElse(null); + + if(title != null) { + localizedTitleForm.setText(title.getText()); + localizedTitleForm.setLocalisedTextId(title.getId()); + } + localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); + + return localizedTitleForm; + } +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 883cc6b4a..69dfa46b0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -32,5 +32,7 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); List getLanguages(); + + public IExhibitionLanguage getDefaultLanguage(IExhibition exhibtion); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 9616e4e49..bb657d321 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -148,6 +148,15 @@ public void setPreviewId(String previewId) { this.previewId = previewId; } + /** + * + * Returns the default language of the given exhibition + */ + @Override + public IExhibitionLanguage getDefaultLanguage(IExhibition exhibtion) { + return exhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + } + @Override public int hashCode() { return Objects.hash(id); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 194eea58e..33d1cbe96 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -59,16 +59,15 @@ public void setId(String id) { public String getTitle() { return title; } - - public String getAboutPageText() { - return aboutPageText; - } - public void setTitle(String title) { this.title = title; } + public String getAboutPageText() { + return aboutPageText; + } + public void setAboutPageText(String aboutPageText) { this.aboutPageText = aboutPageText; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java index 2b3252fb3..97f47af41 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java @@ -27,6 +27,4 @@ public interface IExhibitionAboutPageManager { ExhibitionAboutPage getExhibitionAboutPage(); - AboutPageForm createAboutPageForm(); - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 284f63a28..36143c9d2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -137,85 +137,6 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA } } } - } - - /** - * Creates About Page form object - */ - @Override - public AboutPageForm createAboutPageForm() { - ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); - - AboutPageForm aboutPageForm=new AboutPageForm(); - aboutPageForm.setAboutPageText(exhibitionAboutPage.getAboutPageText()); - aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); - - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - - - IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); - - - - aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, defaultLanguage)); - - aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, defaultLanguage)); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, language)); - - aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, language)); - } - - - }); - return aboutPageForm; - } - - /** - * Creates Localized title object for form - * - * @param exhibitionAboutPage - * @param language - * @return - */ - private LocalizedTextForm createLocalizedAboutTextForm(ExhibitionAboutPage exhibitionAboutPage, - IExhibitionLanguage language) { - - LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText aboutPageText = exhibitionAboutPage.getExhibitionTextDescriptions().stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(aboutPageText != null) { - localizedAboutTextForm.setText(aboutPageText.getText()); - localizedAboutTextForm.setLocalisedTextId( aboutPageText.getId()); - - } - localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedAboutTextForm; - } - - /** - * - * Creates Localized about text object for form - * @param exhibitionAboutPage - * @param language - * @return - */ - private LocalizedTextForm createLocalizedTitleForm(ExhibitionAboutPage exhibitionAboutPage, IExhibitionLanguage language) { - LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - - ILocalizedText title = exhibitionAboutPage.getExhibitionTitles().stream() - .filter(exhibitionTitle -> StringUtils.equals(exhibitionTitle.getExhibitionLanguage().getId(), language.getId())).findAny().orElse(null); - - if(title != null) { - localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } - localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); - - return localizedTitleForm; - } + } + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 41d758263..71ac8c475 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -186,13 +186,4 @@ private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map lan return exhibitionLanguage; } - /** - * - * Returns the default language of the given exhibition - */ - @Override - public IExhibitionLanguage getDefaultLanguage(IExhibition exhibtion) { - return exhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); - } - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index b3116ae15..828c909a2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -16,6 +16,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; +import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; @@ -37,10 +38,13 @@ public class ExhibitionAboutPageController { @Autowired private IExhibitionAboutPageManager aboutPageManager; + + @Autowired + private IExhibitionAboutPageFactory exhibitionAboutPageFactory; @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.GET) public String showAboutPage(Model model) { - model.addAttribute("aboutPage", aboutPageManager.createAboutPageForm()); + model.addAttribute("aboutPage", exhibitionAboutPageFactory.createAboutPageForm(aboutPageManager.getExhibitionAboutPage())); return "staff/exhibit/aboutPage"; } diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java index 0f6bbbe33..6b6db55c9 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java @@ -73,7 +73,7 @@ public void test_getExhibitionById_success() { @Test - public void test_updateExhibitionLanguages_success() { + public void test_updateExhibitionLanguages_success() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -92,17 +92,13 @@ public void test_updateExhibitionLanguages_success() { mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - } catch (ExhibitionLanguageDeletionException e) { - e.printStackTrace(); - } + serviceToTest.updateExhibitionLanguages(exhibition, languages,null); assertEquals(exhibition.getLanguages().size(),2); } @Test - public void test_updateExhibitionLanguages_duplicates() { + public void test_updateExhibitionLanguages_duplicates() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); //Exhibition already consists of 2 languages @@ -131,18 +127,14 @@ public void test_updateExhibitionLanguages_duplicates() { mappedLanguages.add(language2); mappedLanguages.add(language3); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages, null); - } catch (ExhibitionLanguageDeletionException e) { - e.printStackTrace(); - } + serviceToTest.updateExhibitionLanguages(exhibition, languages, null); //no duplicate entries should be added assertEquals(exhibition.getLanguages().size(),3); } @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -160,18 +152,14 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - } catch (ExhibitionLanguageDeletionException e) { - e.printStackTrace(); - } + serviceToTest.updateExhibitionLanguages(exhibition, languages,null); assertEquals(exhibition.getLanguages().size(),1); } @Test - public void test_updateExhibitionLanguages_defaultLanguage() { + public void test_updateExhibitionLanguages_defaultLanguage() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -188,32 +176,26 @@ public void test_updateExhibitionLanguages_defaultLanguage() { mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages, "en"); - assertEquals(exhibition.getLanguages().size(),2); - exhibition.getLanguages().forEach(language -> { - if(language.getCode().equals("en")) { - assertTrue(language.isDefault()); - - } }); - - serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),2); - exhibition.getLanguages().forEach(language -> { - if(language.getCode().equals("en")) { - assertFalse(language.isDefault()); - - } - if(language.getCode().equals("aa")) { - assertTrue(language.isDefault()); - - }}); - } - catch(Exception e) { - e.printStackTrace(); - } - + + serviceToTest.updateExhibitionLanguages(exhibition, languages, "en"); + assertEquals(exhibition.getLanguages().size(),2); + exhibition.getLanguages().forEach(language -> { + if(language.getCode().equals("en")) { + assertTrue(language.isDefault()); + + } }); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),2); + exhibition.getLanguages().forEach(language -> { + if(language.getCode().equals("en")) { + assertFalse(language.isDefault()); + + } + if(language.getCode().equals("aa")) { + assertTrue(language.isDefault()); + + }}); } @@ -232,7 +214,7 @@ public void test_updateExhibitionLanguages_whenLanguageListConfigurationNotFound } @Test - public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { + public void test_updateExhibitionLanguages_whenLanguageIsUnselected() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List mappedLanguages= new ArrayList(); @@ -252,24 +234,18 @@ public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { languages.add("aa"); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),2); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),2); - - languages.remove("en"); - serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),1); - } catch (ExhibitionLanguageDeletionException e) { - e.printStackTrace(); - } - - - + languages.remove("en"); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),1); + } @Test - public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() { + public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List mappedLanguages= new ArrayList(); @@ -294,22 +270,14 @@ public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() { when(serviceToTestMock.checkIfLocalizedTextExists(language)).thenReturn(false); + + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),2); - try { - serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),2); - - - languages.remove("en"); - Assert.assertThrows(ExhibitionLanguageDeletionException.class, - () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa")); - - } catch (ExhibitionLanguageDeletionException e) { - - e.printStackTrace(); - } - - + + languages.remove("en"); + Assert.assertThrows(ExhibitionLanguageDeletionException.class, + () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa")); } } From 6827d8f1c00396090c587b3e6c02c59d9db59c2b Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 10 May 2023 15:32:05 -0700 Subject: [PATCH 123/191] [story/VSPC-232] db query to delete localized text --- .../core/data/LocalizedTextRepository.java | 5 +++++ .../impl/ExhibitionAboutPageFactory.java | 4 +++- .../diging/vspace/core/model/IExhibition.java | 2 +- .../vspace/core/model/IExhibitionLanguage.java | 2 +- .../vspace/core/model/impl/Exhibition.java | 4 ++-- .../core/model/impl/ExhibitionAboutPage.java | 4 ++-- .../core/model/impl/ExhibitionLanguage.java | 18 +++++++++--------- .../vspace/core/model/impl/LocalizedText.java | 3 ++- .../core/services/IExhibitionManager.java | 2 -- .../impl/ExhibitionAboutPageManager.java | 2 +- .../core/services/impl/ExhibitionManager.java | 13 ++++++++----- 11 files changed, 34 insertions(+), 25 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java index 6a9cb59d1..d28f2ae7b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java @@ -1,13 +1,18 @@ package edu.asu.diging.vspace.core.data; +import java.util.List; + import org.javers.spring.annotation.JaversSpringDataAuditable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @Repository @JaversSpringDataAuditable public interface LocalizedTextRepository extends PagingAndSortingRepository{ + List findByExhibitionLanguage(IExhibitionLanguage language); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index 0a68a9186..56f346a9c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.factory.impl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; @@ -12,6 +13,7 @@ import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; +@Component public class ExhibitionAboutPageFactory implements IExhibitionAboutPageFactory{ @@ -29,7 +31,7 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); + IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, defaultLanguage)); aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, defaultLanguage)); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 69dfa46b0..9a458dff0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -33,6 +33,6 @@ public interface IExhibition extends IVSpaceElement { List getLanguages(); - public IExhibitionLanguage getDefaultLanguage(IExhibition exhibtion); + public IExhibitionLanguage getDefaultLanguage(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index 172c78595..39f431020 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -16,5 +16,5 @@ public interface IExhibitionLanguage extends IVSpaceElement { void setLabel(String label); - List getLocalizedTexts(); +// List getLocalizedTexts(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index bb657d321..362dc4b79 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -153,8 +153,8 @@ public void setPreviewId(String previewId) { * Returns the default language of the given exhibition */ @Override - public IExhibitionLanguage getDefaultLanguage(IExhibition exhibtion) { - return exhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + public IExhibitionLanguage getDefaultLanguage() { + return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 33d1cbe96..37070f29d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -40,11 +40,11 @@ public class ExhibitionAboutPage { - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_titles") private List localizedTitles = new ArrayList(); - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_descriptions") private List localizedDescriptions = new ArrayList(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 29a0af8c1..4183c4f45 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,8 +33,8 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; - @OneToMany(targetEntity = LocalizedText.class) - private List localizedTexts = new ArrayList(); +// @OneToMany(targetEntity = LocalizedText.class) +// private List localizedTexts = new ArrayList(); public ExhibitionLanguage() { super(); @@ -91,13 +91,13 @@ public void setDefault(boolean isDefault) { this.isDefault = isDefault; } - public List getLocalizedTexts() { - return localizedTexts; - } - - public void setLocalizedTexts(List localizedTexts) { - this.localizedTexts = localizedTexts; - } +// public List getLocalizedTexts() { +// return localizedTexts; +// } +// +// public void setLocalizedTexts(List localizedTexts) { +// this.localizedTexts = localizedTexts; +// } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index edd281870..6477b0477 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,4 +1,5 @@ package edu.asu.diging.vspace.core.model.impl; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @@ -20,7 +21,7 @@ public class LocalizedText implements ILocalizedText { @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 6bbcece2f..8c651af6b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -40,6 +40,4 @@ public interface IExhibitionManager { boolean checkIfLocalizedTextExists(IExhibitionLanguage language); - IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion); - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 36143c9d2..f882bf56c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -112,7 +112,7 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); +// exhibitionLanguage.getLocalizedTexts().add(localizedText); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 71ac8c475..b312b0e63 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -115,7 +115,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } // Adds defaultLanguage to codes list if not already exists. - if(!StringUtils.isEmpty(defaultLanguage) && !codes.contains(defaultLanguage)) { + if(StringUtils.hasText(defaultLanguage) && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } @@ -134,9 +134,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(checkIfLocalizedTextExists(language)) { throw new ExhibitionLanguageDeletionException() ; } - language.getLocalizedTexts().clear(); - //delete the empty localized texts - localizedTextRepo.deleteAll(language.getLocalizedTexts()); + } @@ -151,7 +149,12 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, @Override public boolean checkIfLocalizedTextExists(IExhibitionLanguage language) { - return !CollectionUtils.isEmpty(language.getLocalizedTexts()) || !CollectionUtils.isEmpty(language.getLocalizedTexts()) && !checkIfTextIsEmpty(language.getLocalizedTexts()); + + List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); + List emptyLocalizedTexts = localizedTexts.stream().filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + localizedTextRepo.deleteAll(emptyLocalizedTexts); + + return localizedTexts.size() > emptyLocalizedTexts.size(); } From bef77f33a02dd1996d798afc0dfbf45bc8929eec Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 11 May 2023 13:59:16 -0700 Subject: [PATCH 124/191] [story/VSPC-232] extended vspace element --- .../vspace/core/model/impl/ExhibitionAboutPage.java | 6 +++--- .../diging/vspace/core/model/impl/LocalizedText.java | 11 +++++++++++ .../services/impl/ExhibitionAboutPageManager.java | 1 - .../vspace/core/services/impl/ExhibitionManager.java | 6 ++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 37070f29d..d8231deb9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -26,7 +26,7 @@ * */ @Entity -public class ExhibitionAboutPage { +public class ExhibitionAboutPage extends VSpaceElement { @Id @GeneratedValue(generator = "exh_abtpg_id_generator") @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -40,11 +40,11 @@ public class ExhibitionAboutPage { - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @OneToMany(mappedBy= "targetElement", targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_titles") private List localizedTitles = new ArrayList(); - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @OneToMany(mappedBy= "targetElement", targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_descriptions") private List localizedDescriptions = new ArrayList(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 6477b0477..75789e14b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -24,6 +24,9 @@ public class LocalizedText implements ILocalizedText { @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; + + @OneToOne(cascade = CascadeType.ALL) + VSpaceElement targetElement; private String text; @@ -60,4 +63,12 @@ public void setText(String text) { this.text = text; } + public VSpaceElement getTargetElement() { + return targetElement; + } + + public void setTargetElement(VSpaceElement targetElement) { + this.targetElement = targetElement; + } + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index f882bf56c..b426e5bc5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -112,7 +112,6 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); -// exhibitionLanguage.getLocalizedTexts().add(localizedText); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index b312b0e63..ea0f30ded 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -152,8 +152,14 @@ public boolean checkIfLocalizedTextExists(IExhibitionLanguage language) { List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); List emptyLocalizedTexts = localizedTexts.stream().filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + emptyLocalizedTexts.forEach(localizedText -> { + localizedText.getTargetElement();//TODO: delete trget element list entry + localizedText.setTargetElement(null); + + }); localizedTextRepo.deleteAll(emptyLocalizedTexts); + return localizedTexts.size() > emptyLocalizedTexts.size(); } From 669d67a42361f7cb4738ce297822b8a252905729 Mon Sep 17 00:00:00 2001 From: pkharge Date: Mon, 15 May 2023 16:27:08 -0700 Subject: [PATCH 125/191] [story/VSPC-232] modified localizedText entity --- .../core/model/impl/ExhibitionAboutPage.java | 14 ++++++++++---- .../vspace/core/model/impl/LocalizedText.java | 16 ++++++++++------ .../impl/ExhibitionAboutPageManager.java | 7 ++++++- .../core/services/impl/ExhibitionManager.java | 10 +++++++--- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index d8231deb9..4d6cc2c33 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -7,6 +7,7 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Lob; import javax.persistence.OneToMany; @@ -40,12 +41,17 @@ public class ExhibitionAboutPage extends VSpaceElement { - @OneToMany(mappedBy= "targetElement", targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) - @JoinTable(name="AboutPage_LocText_titles") + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="AboutPage_LocText_titles", + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List localizedTitles = new ArrayList(); - @OneToMany(mappedBy= "targetElement", targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) - @JoinTable(name="AboutPage_LocText_descriptions") + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="AboutPage_LocText_descriptions", + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") + ) private List localizedDescriptions = new ArrayList(); public String getId() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 75789e14b..ea6a8cf5f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; import javax.persistence.CascadeType; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -11,6 +12,7 @@ import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.IVSpaceElement; @Entity @@ -25,8 +27,8 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - @OneToOne(cascade = CascadeType.ALL) - VSpaceElement targetElement; + @ManyToOne( targetEntity = ExhibitionAboutPage.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY) + ExhibitionAboutPage targetExhibitionAboutPage; private String text; @@ -63,12 +65,14 @@ public void setText(String text) { this.text = text; } - public VSpaceElement getTargetElement() { - return targetElement; + public ExhibitionAboutPage getTargetExhibitionAboutPage() { + return targetExhibitionAboutPage; } - public void setTargetElement(VSpaceElement targetElement) { - this.targetElement = targetElement; + public void setTargetExhibitionAboutPage(ExhibitionAboutPage targetExhibitionAboutPage) { + this.targetExhibitionAboutPage = targetExhibitionAboutPage; } + + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index b426e5bc5..ca71aee14 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -112,6 +112,8 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); + localizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); + } } @@ -132,7 +134,10 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - exhibitionAboutPage.getExhibitionTextDescriptions().add(new LocalizedText(exhibitionLanguage, aboutPageText.getText())); + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); + newLocalizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); + exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); + } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index ea0f30ded..986ed859a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -25,8 +25,10 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.VSpaceElement; import edu.asu.diging.vspace.core.services.IExhibitionManager; @Transactional @@ -152,9 +154,11 @@ public boolean checkIfLocalizedTextExists(IExhibitionLanguage language) { List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); List emptyLocalizedTexts = localizedTexts.stream().filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); - emptyLocalizedTexts.forEach(localizedText -> { - localizedText.getTargetElement();//TODO: delete trget element list entry - localizedText.setTargetElement(null); + emptyLocalizedTexts.forEach(localizedText -> { + ExhibitionAboutPage exhibitionAboutPage = localizedText.getTargetExhibitionAboutPage(); + exhibitionAboutPage.getExhibitionTextDescriptions().remove(localizedText); + //TODO: delete target element list entry +// localizedText.setTargetExhibitionAboutPage(null); }); localizedTextRepo.deleteAll(emptyLocalizedTexts); From c86680bd04d0fa22590ff24e043b64df6e5072dc Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 16 May 2023 16:20:19 -0700 Subject: [PATCH 126/191] [story/VSPC-232] exhibition language can now be deleted --- .../impl/ExhibitionAboutPageFactory.java | 42 +++++-------------- .../vspace/core/model/impl/LocalizedText.java | 2 +- .../core/services/IExhibitionManager.java | 6 ++- .../core/services/impl/ExhibitionManager.java | 40 +++++++++++------- .../ExhibitionConfigurationController.java | 2 +- 5 files changed, 42 insertions(+), 50 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index 56f346a9c..5ab17599b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -1,5 +1,7 @@ package edu.asu.diging.vspace.core.factory.impl; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.thymeleaf.util.StringUtils; @@ -33,30 +35,30 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, defaultLanguage)); - aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, defaultLanguage)); + aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); + aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { if(!language.isDefault()) { - aboutPageForm.getTitles().add(createLocalizedTitleForm(exhibitionAboutPage, language)); - aboutPageForm.getAboutPageTexts().add(createLocalizedAboutTextForm(exhibitionAboutPage, language)); + aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, language, exhibitionAboutPage.getExhibitionTitles())); + aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, language, exhibitionAboutPage.getExhibitionTextDescriptions())); } }); return aboutPageForm; } /** - * Creates Localized title object for form - * + * Creates LocalizedTextForm form using provided list of localizedTexts. * @param exhibitionAboutPage * @param language + * @param localizedTexts * @return */ - private LocalizedTextForm createLocalizedAboutTextForm(ExhibitionAboutPage exhibitionAboutPage, - IExhibitionLanguage language) { + private LocalizedTextForm createLocalizedTextForm(ExhibitionAboutPage exhibitionAboutPage, + IExhibitionLanguage language, List localizedTexts) { LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText aboutPageText = exhibitionAboutPage.getExhibitionTextDescriptions().stream() + ILocalizedText aboutPageText = localizedTexts.stream() .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); if(aboutPageText != null) { @@ -67,27 +69,5 @@ private LocalizedTextForm createLocalizedAboutTextForm(ExhibitionAboutPage exhib localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedAboutTextForm; } - - - /** - * - * Creates Localized about text object for form - * @param exhibitionAboutPage - * @param language - * @return - */ - private LocalizedTextForm createLocalizedTitleForm(ExhibitionAboutPage exhibitionAboutPage, IExhibitionLanguage language) { - LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - - ILocalizedText title = exhibitionAboutPage.getExhibitionTitles().stream() - .filter(exhibitionTitle -> StringUtils.equals(exhibitionTitle.getExhibitionLanguage().getId(), language.getId())).findAny().orElse(null); - if(title != null) { - localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } - localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); - - return localizedTitleForm; - } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index ea6a8cf5f..b6844dcbf 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -27,7 +27,7 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - @ManyToOne( targetEntity = ExhibitionAboutPage.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @ManyToOne( targetEntity = ExhibitionAboutPage.class) ExhibitionAboutPage targetExhibitionAboutPage; private String text; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 8c651af6b..64d680d96 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -6,6 +6,7 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; /* * (non-Javadoc) @@ -38,6 +39,9 @@ public interface IExhibitionManager { void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException; - boolean checkIfLocalizedTextExists(IExhibitionLanguage language); + boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); + + void deleteEmptyLocalizedTexts(List emptyLocalizedTexts); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 986ed859a..7c2d82df1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -133,7 +133,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList()); for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { - if(checkIfLocalizedTextExists(language)) { + if(checkIfLocalizedTextsExists(language)) { throw new ExhibitionLanguageDeletionException() ; } @@ -149,33 +149,41 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, * */ @Override - public boolean checkIfLocalizedTextExists(IExhibitionLanguage language) { + public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); - List emptyLocalizedTexts = localizedTexts.stream().filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); - emptyLocalizedTexts.forEach(localizedText -> { - ExhibitionAboutPage exhibitionAboutPage = localizedText.getTargetExhibitionAboutPage(); - exhibitionAboutPage.getExhibitionTextDescriptions().remove(localizedText); - //TODO: delete target element list entry -// localizedText.setTargetExhibitionAboutPage(null); - - }); - localizedTextRepo.deleteAll(emptyLocalizedTexts); - + List emptyLocalizedTexts = localizedTexts.stream() + .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + deleteEmptyLocalizedTexts(emptyLocalizedTexts); return localizedTexts.size() > emptyLocalizedTexts.size(); } /** + * Removes localized texts from parent entities and delete them. * - * @param localizedTexts - * @return */ - private boolean checkIfTextIsEmpty(List localizedTexts) { + @Override + public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { + emptyLocalizedTexts.forEach(localizedText -> { + removeFromExhibitionAboutPage(localizedText); + + }); + localizedTextRepo.deleteAll(emptyLocalizedTexts); + } + + /** + * Removes localized texts from Exhibition About Page entity + * + * @param localizedText + */ + private void removeFromExhibitionAboutPage(LocalizedText localizedText) { + ExhibitionAboutPage exhibitionAboutPage = localizedText.getTargetExhibitionAboutPage(); + exhibitionAboutPage.getExhibitionTextDescriptions().remove(localizedText); + exhibitionAboutPage.getExhibitionTitles().remove(localizedText); - return !localizedTexts.stream().anyMatch( localizedText -> !StringUtils.hasText(localizedText.getText())); } /** diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index 2ebe11c99..313366f42 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -105,7 +105,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, } catch (ExhibitionLanguageDeletionException e) { attributes.addAttribute("alertType", "failure"); - attributes.addAttribute("message", "Could not delete the Exhibition Language"); + attributes.addAttribute("message", "Could not delete the Exhibition Language as it has localized data associated to it."); attributes.addAttribute("showAlert", "true"); return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); } From 7754697ca75d186e4dbf08d2ae18e8aeb13b477a Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 16 May 2023 16:23:54 -0700 Subject: [PATCH 127/191] [story/VSPC-232] code factor --- .../core/model/impl/ExhibitionAboutPage.java | 8 +++---- .../core/services/impl/ExhibitionManager.java | 22 ++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 4d6cc2c33..36dc58852 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -43,14 +43,14 @@ public class ExhibitionAboutPage extends VSpaceElement { @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_titles", - joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), - inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List localizedTitles = new ArrayList(); @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_descriptions", - joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), - inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") ) private List localizedDescriptions = new ArrayList(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 7c2d82df1..0be52cbce 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -137,11 +137,8 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, throw new ExhibitionLanguageDeletionException() ; } - } - - + } exhibition.getLanguages().removeAll(exhibitionLanguageToBeRemoved); - } /** @@ -149,15 +146,14 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, * */ @Override - public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { - - - List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); - List emptyLocalizedTexts = localizedTexts.stream() - .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); - deleteEmptyLocalizedTexts(emptyLocalizedTexts); - - return localizedTexts.size() > emptyLocalizedTexts.size(); + public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { + List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); + List emptyLocalizedTexts = localizedTexts.stream() + .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + deleteEmptyLocalizedTexts(emptyLocalizedTexts); + + //This returns true if non empty localized texts exist + return localizedTexts.size() > emptyLocalizedTexts.size(); } From 17eaeadf8cb33365a9cbc687d32d5043c28180c1 Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 17 May 2023 16:29:46 -0700 Subject: [PATCH 128/191] [story/VSPC-232] default about page form --- .../impl/ExhibitionAboutPageFactory.java | 6 +- .../impl/ExhibitionAboutPageManager.java | 2 + .../vspace/web/staff/forms/AboutPageForm.java | 24 ++++- .../views/staff/exhibit/aboutPage.html | 54 ++++++----- .../java/ExhibitionAboutPageFactoryTest.java | 69 ++++++++++++++ .../config/ExhibitionLanguageConfigTest.java | 7 +- .../impl/ExhibitionAboutPageManagerTest.java | 90 +++++-------------- 7 files changed, 161 insertions(+), 91 deletions(-) create mode 100644 vspace/src/test/java/ExhibitionAboutPageFactoryTest.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index 5ab17599b..ce88b4a3e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -35,9 +35,11 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); +// aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); +// aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); + aboutPageForm.setDefaultTitle(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); + aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { if(!language.isDefault()) { aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, language, exhibitionAboutPage.getExhibitionTitles())); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index ca71aee14..007ac381a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -73,6 +73,8 @@ public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); + setAboutPageTitle(aboutPageForm.getDefaultTitle(),exhibitionAboutPage); + setAboutPageDescription(aboutPageForm.getDefaultAboutPageText(),exhibitionAboutPage); for(LocalizedTextForm title:aboutPageForm.getTitles()) { setAboutPageTitle(title,exhibitionAboutPage); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java index 6ed2358d4..3f8e00af5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java @@ -11,6 +11,10 @@ public class AboutPageForm { private String aboutPageText; + private LocalizedTextForm defaultTitle; + + private LocalizedTextForm defaultAboutPageText; + private List titles = new ArrayList(); private List aboutPageTexts = new ArrayList(); @@ -30,6 +34,22 @@ public String getAboutPageText() { public void setAboutPageText(String aboutPageText) { this.aboutPageText = aboutPageText; } + + public LocalizedTextForm getDefaultTitle() { + return defaultTitle; + } + + public void setDefaultTitle(LocalizedTextForm defaultTitle) { + this.defaultTitle = defaultTitle; + } + + public LocalizedTextForm getDefaultAboutPageText() { + return defaultAboutPageText; + } + + public void setDefaultAboutPageText(LocalizedTextForm defaultAboutPageText) { + this.defaultAboutPageText = defaultAboutPageText; + } public List getTitles() { return titles; @@ -45,6 +65,8 @@ public List getAboutPageTexts() { public void setAboutPageTexts(List aboutPageTexts) { this.aboutPageTexts = aboutPageTexts; - } + } + + } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 9eb043361..d8ba2a9aa 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -85,31 +85,45 @@

Exhibition About Page

-
+
+ +
-
+
+
+

[[${aboutPage.defaultTitle.exhibitionLanguageLabel}]]

+ + + + + + + + + +
-
-

[[${title.exhibitionLanguageLabel}]]

- - - - -
- - - - - -
- - -
-
-
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+ + +
+
+

diff --git a/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java b/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java new file mode 100644 index 000000000..62dad7d1c --- /dev/null +++ b/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java @@ -0,0 +1,69 @@ +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import edu.asu.diging.vspace.core.data.ExhibitionAboutPageRepository; +import edu.asu.diging.vspace.core.factory.impl.ExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.services.impl.ExhibitionAboutPageManager; +import edu.asu.diging.vspace.core.services.impl.ExhibitionManager; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; + +public class ExhibitionAboutPageFactoryTest { + @InjectMocks + private ExhibitionAboutPageFactory serviceToTest; + + @Mock + private ExhibitionAboutPageRepository repo; + + @Mock + private ExhibitionManager exhibitionManager; + + + @Test + public void test_createAboutPageForm_success() { + Exhibition exhibition = new Exhibition(); + List languageList = new ArrayList(); + ExhibitionLanguage language2 = new ExhibitionLanguage(); + + + language2.setLabel("English"); + languageList.add(language2); + exhibition.setLanguages(languageList); + + List exhibitionAboutPageList = new ArrayList(); + ExhibitionAboutPage exhbitionAboutPage = new ExhibitionAboutPage(); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + List titleList = new ArrayList(); + titleList.add(new LocalizedText(language2, "title1")); + List aboutTextList = new ArrayList(); + aboutTextList.add(new LocalizedText( language2, "about text")); + exhbitionAboutPage.setExhibitionTitles(titleList); + exhbitionAboutPage.setExhibitionTextDescriptions(aboutTextList); + exhibitionAboutPageList.add(exhbitionAboutPage); + + when(repo.findAll()).thenReturn(exhibitionAboutPageList); + + when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + + AboutPageForm aboutPageForm = serviceToTest.createAboutPageForm(exhbitionAboutPage); + assertEquals(aboutPageForm.getAboutPageTexts().size(), 1); + + assertEquals(aboutPageForm.getTitles().size(), 1); + + assertEquals(aboutPageForm.getAboutPageTexts().get(0).getText(), "about text"); + + } +} diff --git a/vspace/src/test/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigTest.java b/vspace/src/test/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigTest.java index 113a96528..d1bbfa3d9 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigTest.java @@ -75,7 +75,12 @@ public void test_init_withNullPropertySource() { @Test public void test_getExhibitionLanguageList_success() { - List languageList = Arrays.asList(Map.of("key1", "value1"), Map.of("key2", "value2")); + Map map1= new HashMap(); + map1.put("key1", "value1"); + Map map2= new HashMap(); + map1.put("key2", "value2"); + + List languageList = Arrays.asList(map1,map2); serviceToTest.setExhibitionLanguageList(languageList); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManagerTest.java index d884352a6..0637c72bc 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManagerTest.java @@ -62,32 +62,6 @@ public void init() { @Test public void test_store_success() { - ExhibitionAboutPage aboutPage = new ExhibitionAboutPage(); - Exhibition exhibition = new Exhibition(); - aboutPage.setId("EXHABT000000001"); - when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); - when(repo.save(aboutPage)).thenReturn(aboutPage); - ExhibitionAboutPage savedExhibAbtPage = serviceToTest.store(aboutPage); - assertNotNull(savedExhibAbtPage.getId()); - verify(repo).save(aboutPage); - } - - @Test - public void test_findAll_findMany() { - when(repo.findAll()).thenReturn(Arrays.asList(Mockito.mock(ExhibitionAboutPage.class), Mockito.mock(ExhibitionAboutPage.class), Mockito.mock(ExhibitionAboutPage.class))); - List results = serviceToTest.findAll(); - assertEquals(results.size(), 3); - } - - @Test - public void test_findAll_findNone() { - when(repo.findAll()).thenReturn(mockArrayList); - List results = serviceToTest.findAll(); - assertEquals(results.size(), 0); - } - - @Test - public void test_storeAboutPageData_success() { List exhibitionAboutPageList = new ArrayList(); exhibitionAboutPageList.add(new ExhibitionAboutPage()); @@ -112,16 +86,32 @@ public void test_storeAboutPageData_success() { when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); - serviceToTest.storeAboutPageData(aboutPageForm); + + ExhibitionAboutPage aboutPage = new ExhibitionAboutPage(); + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); + when(repo.save(aboutPage)).thenReturn(aboutPage); + ExhibitionAboutPage savedExhibAbtPage = serviceToTest.store(aboutPageForm); assertEquals(locText1.getText(), "title"); assertEquals(locText2.getText(), "about text"); + } + @Test + public void test_findAll_findMany() { + when(repo.findAll()).thenReturn(Arrays.asList(Mockito.mock(ExhibitionAboutPage.class), Mockito.mock(ExhibitionAboutPage.class), Mockito.mock(ExhibitionAboutPage.class))); + List results = serviceToTest.findAll(); + assertEquals(results.size(), 3); + } - + @Test + public void test_findAll_findNone() { + when(repo.findAll()).thenReturn(mockArrayList); + List results = serviceToTest.findAll(); + assertEquals(results.size(), 0); } - + @Test - public void test_storeAboutPageData_failure() { + public void test_store_failure() { List exhibitionAboutPageList = new ArrayList(); exhibitionAboutPageList.add(new ExhibitionAboutPage()); @@ -139,49 +129,15 @@ public void test_storeAboutPageData_failure() { LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); - + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.empty()); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.empty()); when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); - serviceToTest.storeAboutPageData(aboutPageForm); + serviceToTest.store(aboutPageForm); assertEquals(locText1.getText(), null); } - - @Test - public void test_createAboutPageForm_success() { - Exhibition exhibition = new Exhibition(); - List languageList = new ArrayList(); - ExhibitionLanguage language2 = new ExhibitionLanguage(); - - language2.setLabel("English"); - languageList.add(language2); - exhibition.setLanguages(languageList); - - List exhibitionAboutPageList = new ArrayList(); - ExhibitionAboutPage exhbitionAboutPage = new ExhibitionAboutPage(); - LocalizedText locText1 = new LocalizedText(); - locText1.setId( "ID1"); - List titleList = new ArrayList(); - titleList.add(new LocalizedText(language2, "title1")); - List aboutTextList = new ArrayList(); - aboutTextList.add(new LocalizedText( language2, "about text")); - exhbitionAboutPage.setExhibitionTitles(titleList); - exhbitionAboutPage.setExhibitionTextDescriptions(aboutTextList); - exhibitionAboutPageList.add(exhbitionAboutPage); - - when(repo.findAll()).thenReturn(exhibitionAboutPageList); - - when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); - - AboutPageForm aboutPageForm = serviceToTest.createAboutPageForm(); - assertEquals(aboutPageForm.getAboutPageTexts().size(), 1); - - assertEquals(aboutPageForm.getTitles().size(), 1); - - assertEquals(aboutPageForm.getAboutPageTexts().get(0).getText(), "about text"); - - } } From e77e28acc5c13f722bef349c7470ce4d4ec9e75c Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 18 May 2023 15:15:17 -0700 Subject: [PATCH 129/191] [story/VSPC-232] default localized text --- .../factory/impl/ExhibitionAboutPageFactory.java | 3 --- .../WEB-INF/views/staff/exhibit/aboutPage.html | 12 ++++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index ce88b4a3e..1410911e1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -35,9 +35,6 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); -// aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); -// aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); - aboutPageForm.setDefaultTitle(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index d8ba2a9aa..0dba351be 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -96,13 +96,13 @@

Exhibition About Page

[[${aboutPage.defaultTitle.exhibitionLanguageLabel}]]

- - - + + + - - - + + +
From 39c2eb1387cce94fd287701f1ff45eef367b32b6 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 26 May 2023 16:12:19 -0700 Subject: [PATCH 130/191] [story/VSPC-215]Updation accrd to LocalizedText --- ...tory.java => LocalizedTextRepository.java} | 4 ++-- .../core/model/IExhibitionLanguage.java | 5 +++++ ...Localizedtext.java => ILocalizedText.java} | 16 +++++++------- .../asu/diging/vspace/core/model/ISpace.java | 8 +++---- .../core/model/impl/ExhibitionLanguage.java | 21 ++++++++++++++++++- .../core/services/impl/ExhibitionManager.java | 6 ++++++ .../web/staff/forms/LocalizedTextForm.java | 14 ++++++++++--- .../vspace/web/staff/forms/SpaceForm.java | 12 +++++------ .../core/services/impl/SpaceManagerTest.java | 10 ++++----- 9 files changed, 68 insertions(+), 28 deletions(-) rename vspace/src/main/java/edu/asu/diging/vspace/core/data/{LanguageDescriptionObjectRepository.java => LocalizedTextRepository.java} (66%) rename vspace/src/main/java/edu/asu/diging/vspace/core/model/{ILocalizedtext.java => ILocalizedText.java} (58%) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java similarity index 66% rename from vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java index 228dff729..10d19b4f1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LanguageDescriptionObjectRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java @@ -4,12 +4,12 @@ import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import edu.asu.diging.vspace.core.model.ILocalizedtext; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @Repository @JaversSpringDataAuditable -public interface LanguageDescriptionObjectRepository extends PagingAndSortingRepository{ +public interface LocalizedTextRepository extends PagingAndSortingRepository{ } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index 3b73e7da5..507ed0474 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -1,5 +1,8 @@ package edu.asu.diging.vspace.core.model; +import java.util.List; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; + public interface IExhibitionLanguage extends IVSpaceElement { String getCode(); @@ -11,5 +14,7 @@ public interface IExhibitionLanguage extends IVSpaceElement { void setDefault(boolean isDefault); void setLabel(String label); + + List getLocalizedTexts(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedtext.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java similarity index 58% rename from vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedtext.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java index b66f66a29..bb40d79fd 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedtext.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java @@ -2,13 +2,15 @@ import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -public interface ILocalizedtext { - +public interface ILocalizedText { + String getId(); + String getText(); - ExhibitionLanguage getExhibitionLanguage(); - void setText(String text); - - -} + + ExhibitionLanguage getExhibitionLanguage(); + + void setExhibitionLanguage( ExhibitionLanguage exhibitionLanguage); + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpace.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpace.java index e1c52cec1..bd9ed57d8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpace.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISpace.java @@ -34,12 +34,12 @@ public interface ISpace extends IVSpaceElement { void setHideIncomingLinks(boolean hideIncomingLinks); - List getSpaceNames(); + List getSpaceNames(); - void setSpaceNames(List spaceNames); + void setSpaceNames(List spaceNames); - void setSpaceDescriptions(List spaceDescriptions); + void setSpaceDescriptions(List spaceDescriptions); - List getSpaceDescriptions() ; + List getSpaceDescriptions() ; } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 2935fa06c..2f7783e00 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -1,10 +1,17 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; + +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; + import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -26,6 +33,9 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; + @OneToMany(targetEntity = LocalizedText.class) + private List localizedTexts = new ArrayList(); + public ExhibitionLanguage() { super(); } @@ -81,6 +91,15 @@ public void setDefault(boolean isDefault) { this.isDefault = isDefault; } + public List getLocalizedTexts() { + return localizedTexts; + } + + public void setLocalizedTexts(List localizedTexts) { + this.localizedTexts = localizedTexts; + } + + @Override public int hashCode() { return Objects.hash(code, exhibition, label); @@ -100,4 +119,4 @@ public boolean equals(Object obj) { } -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index f4284c2b4..0735788e5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -146,5 +146,11 @@ private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map lan return exhibitionLanguage; } + + @Override + public IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion) { + return startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + } + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index 0ef8daf28..a6cc137da 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -1,7 +1,5 @@ package edu.asu.diging.vspace.web.staff.forms; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; - public class LocalizedTextForm { String text; @@ -10,8 +8,18 @@ public class LocalizedTextForm { String exhibitionLanguageId; - String exhibitionLanguageLabel; + String exhibitionLanguageLabel; + + Boolean isDefaultExhibitionLanguage; + public Boolean getIsDefaultExhibitionLanguage() { + return isDefaultExhibitionLanguage; + } + + public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { + this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; + } + public LocalizedTextForm() { super(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index b44499d92..d7a2c0e65 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -10,9 +10,9 @@ public class SpaceForm { private String name; private String description; - private List names = new ArrayList(); + private List names = new ArrayList(); - private List descriptions = new ArrayList(); + private List descriptions = new ArrayList(); public String getName() { return name; @@ -26,16 +26,16 @@ public String getDescription() { public void setDescription(String description) { this.description = description; } - public List getNames() { + public List getNames() { return names; } - public void setNames(List names) { + public void setNames(List names) { this.names = names; } - public List getDescriptions() { + public List getDescriptions() { return descriptions; } - public void setDescriptions(List descriptions) { + public void setDescriptions(List descriptions) { this.descriptions = descriptions; } } diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java index 8580a8c6d..a750988a7 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java @@ -26,7 +26,7 @@ import edu.asu.diging.vspace.core.factory.ISpaceLinkDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceLinkFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; -import edu.asu.diging.vspace.core.model.ILocalizedtext; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; @@ -394,7 +394,7 @@ public void test_addSpaceName_failure() { public void setNameAsDefaultLanguage_success() { Space space=new Space(); space.setId(spaceId1); - List nameList = new ArrayList(); + List nameList = new ArrayList(); LocalizedText languageObj1 = new LocalizedText(); languageObj1.setText("Space Name English"); @@ -430,7 +430,7 @@ public void setNameAsDefaultLanguage_failure() { Space space=new Space(); space.setId(spaceId1); space.setName("Initial name"); - List nameList = new ArrayList(); + List nameList = new ArrayList(); LocalizedText languageObj1 = new LocalizedText(); languageObj1.setText("Space Name English"); @@ -466,7 +466,7 @@ public void setNameAsDefaultLanguage_failure() { public void setDescriptionAsDefaultLanguage_success() { Space space=new Space(); space.setId(spaceId1); - List descriptionList = new ArrayList(); + List descriptionList = new ArrayList(); LocalizedText languageObj1 = new LocalizedText(); languageObj1.setText("Space Name English"); @@ -500,7 +500,7 @@ public void setDescriptionAsDefaultLanguage_failure() { Space space=new Space(); space.setId(spaceId1); space.setDescription("Initial Description"); - List descriptionList = new ArrayList(); + List descriptionList = new ArrayList(); LocalizedText languageObj1 = new LocalizedText(); languageObj1.setText("Space Name English"); From 2dc23e5b1914665b072f5cc57de2fb747820e8c4 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 30 May 2023 16:19:16 -0700 Subject: [PATCH 131/191] [story/VSPC-215]update addspace text and desc --- .../vspace/core/model/ILocalizedText.java | 12 +- .../vspace/core/model/impl/LocalizedText.java | 41 ++--- .../diging/vspace/core/model/impl/Space.java | 14 +- .../core/services/IExhibitionManager.java | 3 + .../vspace/core/services/ISpaceManager.java | 7 +- .../core/services/impl/SpaceManager.java | 156 +++++++++++++----- .../vspace/web/staff/AddSpaceController.java | 1 - .../web/staff/forms/LocalizedTextForm.java | 14 +- 8 files changed, 162 insertions(+), 86 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java index bb40d79fd..235ea8913 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ILocalizedText.java @@ -3,14 +3,16 @@ import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; public interface ILocalizedText { - String getId(); + String getId(); + String getText(); void setText(String text); - + ExhibitionLanguage getExhibitionLanguage(); - + void setExhibitionLanguage( ExhibitionLanguage exhibitionLanguage); - -} \ No newline at end of file + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 15da4ab86..6f1917a57 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,59 +1,62 @@ package edu.asu.diging.vspace.core.model.impl; - import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedtext; +import edu.asu.diging.vspace.core.model.ILocalizedText; + @Entity -public class LocalizedText implements ILocalizedtext { - - +public class LocalizedText implements ILocalizedText { + @Id @GeneratedValue(generator = "localized_text_id_generator") @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - - - @OneToOne(targetEntity = ExhibitionLanguage.class) - ExhibitionLanguage exhibitionLanguage; - String text; + @ManyToOne + @JoinColumn(name = "LOC_EXH_LANG") + private ExhibitionLanguage exhibitionLanguage; + + private String text; + + public LocalizedText() { + super(); + } + + public LocalizedText(ExhibitionLanguage exhibitionLanguage, String text) { + super(); + this.exhibitionLanguage = exhibitionLanguage; + this.text = text; + } public String getId() { return id; } - public void setId(String id) { this.id = id; } - public ExhibitionLanguage getExhibitionLanguage() { return exhibitionLanguage; } - public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { this.exhibitionLanguage = exhibitionLanguage; } - - public String getText() { return text; } - public void setText(String text) { this.text = text; } - -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 21bc62a07..2f5a21b6d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import edu.asu.diging.vspace.core.model.IExternalLink; -import edu.asu.diging.vspace.core.model.ILocalizedtext; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModuleLink; import edu.asu.diging.vspace.core.model.IPrefix; import edu.asu.diging.vspace.core.model.ISpace; @@ -64,11 +64,11 @@ public class Space extends VSpaceElement implements ISpace { @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Space_LangObj_names") - private List spaceNames = new ArrayList(); + private List spaceNames = new ArrayList(); @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Space_LangObj_descriptions") - private List spaceDescriptions = new ArrayList(); + private List spaceDescriptions = new ArrayList(); /* * (non-Javadoc) @@ -218,19 +218,19 @@ public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; } - public List getSpaceNames() { + public List getSpaceNames() { return spaceNames; } - public void setSpaceNames(List spaceNames) { + public void setSpaceNames(List spaceNames) { this.spaceNames = spaceNames; } - public List getSpaceDescriptions() { + public List getSpaceDescriptions() { return spaceDescriptions; } - public void setSpaceDescriptions(List spaceDescriptions) { + public void setSpaceDescriptions(List spaceDescriptions) { this.spaceDescriptions = spaceDescriptions; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index e1df7f7c9..256c24a1e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -3,6 +3,7 @@ import java.util.List; import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; /* @@ -35,5 +36,7 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); + + IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 4639135cb..84f2475b7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -13,6 +13,7 @@ import edu.asu.diging.vspace.core.model.impl.SpaceLink; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public interface ISpaceManager { @@ -47,13 +48,15 @@ public interface ISpaceManager { void setDescriptionAsDefaultLanguage(ISpace space); - void addSpaceDescription(ISpace space, List descriptions); + void addSpaceDescription(ISpace space, List descriptions); - void addSpaceName(ISpace space, List names); + void addSpaceName(ISpace space, List names); Iterable getSpaceList(); void updateSpacesWithDefaultNameAndDescription(Iterable spaceList); SpaceForm getSpaceForm(String spaceId); + + SpaceForm createNewSpaceForm(ISpace space); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 1d606793b..235f1c4e3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -17,11 +17,12 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.data.ImageRepository; -import edu.asu.diging.vspace.core.data.LanguageDescriptionObjectRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SpaceLinkRepository; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.data.display.SpaceDisplayRepository; @@ -31,7 +32,9 @@ import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; -import edu.asu.diging.vspace.core.model.ILocalizedtext; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; @@ -47,6 +50,7 @@ import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.model.ImageData; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Transactional @@ -88,10 +92,10 @@ public class SpaceManager implements ISpaceManager { private SpaceLinkDisplayRepository spaceLinkDisplayRepo; @Autowired - LanguageDescriptionObjectRepository languageDescriptionObjectRepo; + ExhibitionLanguageRepository exhibitionLanguageRepository; @Autowired - ExhibitionLanguageRepository exhibitionLanguageRepository; + private LocalizedTextRepository localizedTextRepo; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -197,6 +201,8 @@ public CreationReturnValue storeSpace(ISpace space, IVSImage image) { public ISpace getSpace(String id) { Optional space = spaceRepo.findById(id); if (space != null && space.isPresent()) { + setDescriptionAsDefaultLanguage(space.get()); + setNameAsDefaultLanguage(space.get()); return space.get(); } return null; @@ -328,25 +334,24 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc * @param names */ @Override - public void addSpaceName(ISpace space, List names) { + public void addSpaceName(ISpace space, List names) { if(!CollectionUtils.isEmpty(names)) { - for(LocalizedText name : names ) { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(name.getExhibitionLanguage().getLabel()); - if(exhibitionLanguage != null) { - name.setExhibitionLanguage(exhibitionLanguage); - Optional spaceTitle = space.getSpaceNames().stream() - .filter(title -> exhibitionLanguage.getId().equals(title.getExhibitionLanguage().getId())) - .findAny(); - if(spaceTitle.isPresent()) { - spaceTitle.get().setText(name.getText()); - } else { - space.getSpaceNames().add(name); + for(LocalizedTextForm name : names ) { + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(name.getText()); + } + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + + localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + space.getSpaceNames().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); } } - } - } setNameAsDefaultLanguage(space); @@ -358,26 +363,25 @@ public void addSpaceName(ISpace space, List names) { * @param descriptions */ @Override - public void addSpaceDescription(ISpace space, List descriptions) { - if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedText description : descriptions ) { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findByLabel(description.getExhibitionLanguage().getLabel()); - if(exhibitionLanguage != null) { - description.setExhibitionLanguage(exhibitionLanguage); - Optional spaceDescription = space.getSpaceDescriptions().stream() - .filter(desc -> exhibitionLanguage.getId().equals(desc.getExhibitionLanguage().getId())) - .findAny(); - if(spaceDescription.isPresent()) { - spaceDescription.get().setText(description.getText()); - } else { - space.getSpaceDescriptions().add(description); + public void addSpaceDescription(ISpace space, List descriptions) { + if(!CollectionUtils.isEmpty(descriptions)) { + for(LocalizedTextForm description : descriptions ) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); + } + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, description.getText()); + space.getSpaceDescriptions().add(localizedText); + exhibitionLanguage.getLocalizedTexts().add(localizedText); } } } - } - setDescriptionAsDefaultLanguage(space); - + } + setDescriptionAsDefaultLanguage(space); } @Override @@ -390,7 +394,7 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { public void setNameAsDefaultLanguage(ISpace space) { String defaultSpaceName = space.getSpaceNames().stream() .filter(title -> Boolean.TRUE.equals(title.getExhibitionLanguage().isDefault())) - .map(ILocalizedtext::getText) + .map(ILocalizedText::getText) .findAny().orElse(space.getName()) ; space.setName(defaultSpaceName); @@ -400,7 +404,7 @@ public void setNameAsDefaultLanguage(ISpace space) { public void setDescriptionAsDefaultLanguage(ISpace space) { String defaultSpaceDescription = space.getSpaceDescriptions().stream() .filter(description -> Boolean.TRUE.equals(description.getExhibitionLanguage().isDefault())) - .map(ILocalizedtext::getText) + .map(ILocalizedText::getText) .findAny().orElse(space.getDescription()); space.setDescription(defaultSpaceDescription); @@ -421,22 +425,84 @@ public void updateSpacesWithDefaultNameAndDescription(Iterable spaceList) setNameAsDefaultLanguage(space); }); } + @Override public SpaceForm getSpaceForm(String spaceId) { ISpace space = getSpace(spaceId); - SpaceForm spaceForm = new SpaceForm(); - spaceForm.setName(space.getName()); - spaceForm.setDescription(space.getDescription()); - space.getSpaceDescriptions().forEach(description -> { - spaceForm.getDescriptions().add((LocalizedText) description); - }); + SpaceForm slideForm = createNewSpaceForm(space); + slideForm.setName(space.getName()); + slideForm.setDescription(space.getDescription()); + return slideForm; - space.getSpaceNames().forEach(title -> { - spaceForm.getNames().add((LocalizedText) title); + } + /** + * + * Creates new space form object + * @param space + * @return + */ + @Override + public SpaceForm createNewSpaceForm(ISpace space) { + SpaceForm spaceForm = new SpaceForm(); + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); + spaceForm.getNames().add(createLocalizedNameForm(space, defaultLanguage)); + spaceForm.getDescriptions().add(createLocalizedDescriptionForm(space, defaultLanguage)); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + spaceForm.getNames().add(createLocalizedNameForm(space, language)); + spaceForm.getDescriptions().add(createLocalizedDescriptionForm(space, language)); + } }); + return spaceForm; + } + + /** + * Creates Localized space title object for form + * + * @param space + * @param language + * @return + */ + + private LocalizedTextForm createLocalizedNameForm(ISpace space, IExhibitionLanguage language) { + LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); + if(space!=null) { + ILocalizedText title = space.getSpaceNames().stream() + .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); + if(title != null) { + localizedTitleForm.setText(title.getText()); + localizedTitleForm.setLocalisedTextId(title.getId()); + } + } + localizedTitleForm.setExhibitionLanguageId(language.getId()); + localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedTitleForm; + } - return spaceForm; + /** + * + * Creates Localized space description object for form + * @param space + * @param language + * @return + */ + + private LocalizedTextForm createLocalizedDescriptionForm(ISpace space, IExhibitionLanguage language) { + LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); + if(space!=null) { + ILocalizedText text = space.getSpaceDescriptions().stream() + .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); + if(text != null) { + localizedDescriptionForm.setText(text.getText()); + localizedDescriptionForm.setLocalisedTextId(text.getId()); + } + } + localizedDescriptionForm.setExhibitionLanguageId(language.getId()); + localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedDescriptionForm; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 938ec371f..1f5748334 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -20,7 +20,6 @@ import edu.asu.diging.vspace.core.exception.ImageDoesNotExistException; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.ILocalizedtext; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index a6cc137da..99c8dfb3a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -1,17 +1,17 @@ package edu.asu.diging.vspace.web.staff.forms; public class LocalizedTextForm { - + String text; - + String localisedTextId; - + String exhibitionLanguageId; - + String exhibitionLanguageLabel; - + Boolean isDefaultExhibitionLanguage; - + public Boolean getIsDefaultExhibitionLanguage() { return isDefaultExhibitionLanguage; } @@ -32,7 +32,7 @@ public LocalizedTextForm(String text, String localisedTextId, String exhibitionL this.exhibitionLanguageId = exhibitionLanguageId; this.exhibitionLanguageLabel = exhibitionLanguageLabel; } - + public String getText() { return text; } From a9656a3c5fdbd7ce06e937a8980c5adff8866939 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Wed, 31 May 2023 16:30:53 -0700 Subject: [PATCH 132/191] [story/VSPC-215] --- .../edu/asu/diging/vspace/web/staff/AddSpaceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 1f5748334..3a966118f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -52,7 +52,7 @@ public class AddSpaceController { @RequestMapping(value = "/staff/space/add", method = RequestMethod.GET) public String showAddSpace(Model model) { - model.addAttribute("space", new SpaceForm()); + model.addAttribute("space", spaceManager.createNewSpaceForm(null)); model.addAttribute("images", imageService.getImages(1)); IExhibition startExhibtion = exhibitionManager.getStartExhibition(); From 642e82117c8fb68357fc85a2614bff3b8d377a17 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 1 Jun 2023 16:15:33 -0700 Subject: [PATCH 133/191] [story/VSPC-215] Add space html --- .../WEB-INF/views/staff/spaces/add.html | 112 +++++++++++++++--- 1 file changed, 95 insertions(+), 17 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index e281f379a..1871ac6c0 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -4,6 +4,51 @@ + + + + + +

Add new Space

-
+ -
-

[[${exhibitionLanguage.label}]]

-
- - - -
- -
- - - - +
+
+
+ +
+
+
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+
+
+
-
+
@@ -93,7 +169,9 @@

Add new Space

- +

+ +

From 8bc73a16372b01b4cee01cd5a6c4f797a4501c3e Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 2 Jun 2023 16:26:55 -0700 Subject: [PATCH 134/191] [story/VSPC-215] error resolved --- .../diging/vspace/core/data/LocalizedTextRepository.java | 2 -- .../asu/diging/vspace/core/factory/impl/SpaceFactory.java | 7 ++++++- .../java/edu/asu/diging/vspace/core/model/impl/Space.java | 8 +++++--- .../diging/vspace/core/services/impl/SpaceManager.java | 3 ++- .../asu/diging/vspace/web/staff/AddSpaceController.java | 1 + .../src/main/webapp/WEB-INF/views/staff/spaces/add.html | 4 ++-- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java index 10d19b4f1..300b4d66c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java @@ -3,8 +3,6 @@ import org.javers.spring.annotation.JaversSpringDataAuditable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; - -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.LocalizedText; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index 373769f59..f6522da27 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -1,7 +1,9 @@ package edu.asu.diging.vspace.core.factory.impl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Space; @@ -9,6 +11,9 @@ @Service public class SpaceFactory implements ISpaceFactory { + + @Autowired + private SpaceRepository spaceRepo; /* (non-Javadoc) * @see edu.asu.diging.vspace.core.factory.impl.ISpaceFactory#createSpace(edu.asu.diging.vspace.web.staff.forms.SpaceForm) @@ -18,6 +23,6 @@ public ISpace createSpace(SpaceForm form) { ISpace space = new Space(); space.setName(form.getName()); space.setDescription(form.getDescription()); - return space; + return spaceRepo.save((Space) space); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 2f5a21b6d..107e3e702 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -58,9 +58,6 @@ public class Space extends VSpaceElement implements ISpace { @OneToOne(targetEntity = VSImage.class) @NotFound(action = NotFoundAction.IGNORE) private IVSImage image; - - @Transient - private Boolean incomingLinks; @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Space_LangObj_names") @@ -69,6 +66,11 @@ public class Space extends VSpaceElement implements ISpace { @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name="Space_LangObj_descriptions") private List spaceDescriptions = new ArrayList(); + + @Transient + private Boolean incomingLinks; + + /* * (non-Javadoc) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 235f1c4e3..e50915b13 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -387,7 +387,8 @@ public void addSpaceDescription(ISpace space, List descriptio @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { addSpaceName(space, spaceForm.getNames()); - addSpaceDescription(space, spaceForm.getDescriptions()); + addSpaceDescription(space, spaceForm.getDescriptions()); + System.out.println("after"); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 3a966118f..40ff01b93 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -66,6 +66,7 @@ public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @Reques Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { ISpace space = spaceFactory.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); + System.out.println("here"); space.setSpaceStatus(SpaceStatus.UNPUBLISHED); byte[] bgImage = null; String filename = null; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 1871ac6c0..3a9e55264 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -122,7 +122,7 @@

Add new Space

-
+
@@ -170,7 +170,7 @@

Add new Space

- +

From d7b71e6c27d4a4314b8dbaf688ccde4b3166b806 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 5 Jun 2023 16:21:50 -0700 Subject: [PATCH 135/191] [story/VSPC-215] edit space --- .../WEB-INF/views/staff/spaces/edit.html | 106 +++++++++++++++--- 1 file changed, 92 insertions(+), 14 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html index 4892d17c0..1bab45393 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html @@ -1,5 +1,67 @@ + + + + + +

Edit Space: [(${spaceForm.name})]

@@ -7,23 +69,39 @@

Edit Space: [(${spaceForm.name})]

-
-

[[${exhibitionLanguage.label}]]

-
- - - - + +
+
+
+ +
- -
- - - +
+
+
+

[[${title.exhibitionLanguageLabel}]]

+ + + + +
+ + + + + +
+
+
- - Cancel + + + +

+ + Cancel +

From 4e22c5fb0b6ed266ca8b738176cc44263ed571c1 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 6 Jun 2023 16:27:48 -0700 Subject: [PATCH 136/191] [story/VSPC-215] Test cases --- .../vspace/core/services/ISpaceManager.java | 2 + .../core/services/impl/SpaceManager.java | 11 + .../vspace/web/staff/AddSpaceController.java | 2 +- .../core/services/impl/SpaceManagerTest.java | 276 ++++++------------ 4 files changed, 98 insertions(+), 193 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 84f2475b7..a68079195 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -59,4 +59,6 @@ public interface ISpaceManager { SpaceForm getSpaceForm(String spaceId); SpaceForm createNewSpaceForm(ISpace space); + + ISpace createSpace(SpaceForm form); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index e50915b13..b78bb318b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -31,6 +31,7 @@ import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; +import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -75,6 +76,9 @@ public class SpaceManager implements ISpaceManager { @Autowired private IImageFactory imageFactory; + + @Autowired + private ISpaceFactory spaceFactory; @Autowired private IImageService imageService; @@ -325,6 +329,13 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc return spaceRepo.findDistinctByNameContainingOrDescriptionContaining(requestedPage, searchText,searchText); } + + @Override + public ISpace createSpace(SpaceForm form) { + ISpace space = spaceFactory.createSpace(form); + return spaceRepo.save((Space) space); + } + /** * * Adds name to spaceNames List diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 40ff01b93..0ab106901 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -64,7 +64,7 @@ public String showAddSpace(Model model) { @RequestMapping(value = "/staff/space/add", method = RequestMethod.POST) public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @RequestParam("file") MultipartFile file, Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { - ISpace space = spaceFactory.createSpace(spaceForm); + ISpace space = spaceManager.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); System.out.println("here"); space.setSpaceStatus(SpaceStatus.UNPUBLISHED); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java index a750988a7..ae16c0573 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java @@ -1,5 +1,8 @@ package edu.asu.diging.vspace.core.services.impl; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -15,6 +18,7 @@ import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.ImageRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SpaceLinkRepository; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.data.display.SpaceDisplayRepository; @@ -26,11 +30,13 @@ import edu.asu.diging.vspace.core.factory.ISpaceLinkDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceLinkFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; import edu.asu.diging.vspace.core.model.display.impl.SpaceDisplay; +import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; @@ -39,6 +45,8 @@ import edu.asu.diging.vspace.core.model.impl.VSImage; import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.impl.model.ImageData; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; +import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public class SpaceManagerTest { @@ -80,7 +88,12 @@ public class SpaceManagerTest { @Mock private ExhibitionLanguageRepository exhibitionLanguageRepo; - + + @Mock + private LocalizedTextRepository localizedRextRepo; + + @Mock + private ExhibitionLanguageRepository exhibitionLanguageRepository; @InjectMocks private SpaceManager managerToTest; @@ -310,222 +323,101 @@ public void test_getSpacesWithImageId_ImageIdIsNull(){ } @Test - public void test_addSpaceDescription_success() { - Space space=new Space(); - space.setId(spaceId1); + public void test_createSpace_success() { + List spacePageList = new ArrayList(); + + spacePageList.add(new Space()); + + SpaceForm spaceForm = new SpaceForm(); + List titleList = new ArrayList(); + titleList.add(new LocalizedTextForm("title", "ID1", "langId", "English")); + List spaceTextList = new ArrayList(); - List descriptionList = new ArrayList(); - LocalizedText languageObj = new LocalizedText(); - languageObj.setText("Space description"); + spaceTextList.add(new LocalizedTextForm( "space text","ID2", "langId", "English")); - ExhibitionLanguage lang = new ExhibitionLanguage(); - lang.setLabel("English"); - languageObj.setExhibitionLanguage(lang); - descriptionList.add(languageObj); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang.getLabel())).thenReturn(lang); - managerToTest.addSpaceDescription(space, descriptionList); - Assert.assertEquals(space.getSpaceDescriptions().size(), 1); + spaceForm.setNames(titleList); + spaceForm.setDescriptions(spaceTextList); + when(spaceRepo.findAll()).thenReturn(spacePageList); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + LocalizedText locText2 = new LocalizedText(); + locText1.setId( "ID2"); + when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); + when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); + + when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); + managerToTest.createSpace(spaceForm); + assertEquals(locText1.getText(), "title"); + assertEquals(locText2.getText(), "space text"); } - - @Test - public void test_addSpaceDescription_failure() { - Space space=new Space(); - space.setId(spaceId1); - List descriptionList = new ArrayList(); - LocalizedText languageObj = new LocalizedText(); - languageObj.setText("Space description"); + @Test + public void test_createSlide_failure() { + List spacePageList = new ArrayList(); - ExhibitionLanguage lang = new ExhibitionLanguage(); - lang.setLabel("English"); - languageObj.setExhibitionLanguage(lang); - descriptionList.add(languageObj); + spacePageList.add(new Space()); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang.getLabel())).thenReturn(null); - managerToTest.addSpaceDescription(space, descriptionList); - Assert.assertEquals(space.getSpaceDescriptions().size(), 0); + SpaceForm spaceForm = new SpaceForm(); + List titleList = new ArrayList(); + titleList.add(new LocalizedTextForm("title", "ID1", "langId", "English")); + List spaceTextList = new ArrayList(); + spaceTextList.add(new LocalizedTextForm( "space text","ID2", "langId", "English")); - } - @Test - public void test_addSpaceName_success() { - Space space=new Space(); - space.setId(spaceId1); + spaceForm.setNames(titleList); + spaceForm.setDescriptions(spaceTextList); - List nameList = new ArrayList(); - LocalizedText languageObj = new LocalizedText(); - languageObj.setText("Space Name"); - ExhibitionLanguage lang = new ExhibitionLanguage(); - lang.setLabel("English"); - languageObj.setExhibitionLanguage(lang); - nameList.add(languageObj); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang.getLabel())).thenReturn(lang); - managerToTest.addSpaceName(space, nameList); - Assert.assertEquals(space.getSpaceNames().size(), 1); - } - - @Test - public void test_addSpaceName_failure() { - Space space=new Space(); - space.setId(spaceId1); + when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.empty()); + when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.empty()); - List nameList = new ArrayList(); - LocalizedText languageObj = new LocalizedText(); - languageObj.setText("Space Name"); - ExhibitionLanguage lang = new ExhibitionLanguage(); - lang.setLabel("English"); - languageObj.setExhibitionLanguage(lang); - nameList.add(languageObj); + when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); + managerToTest.createSpace(spaceForm); + assertEquals(locText1.getText(), null); + } - Mockito.when(exhibitionLanguageRepo.findByLabel(lang.getLabel())).thenReturn(null); - managerToTest.addSpaceName(space, nameList); - Assert.assertEquals(space.getSpaceNames().size(), 0); - } - @Test - public void setNameAsDefaultLanguage_success() { - Space space=new Space(); - space.setId(spaceId1); - List nameList = new ArrayList(); - - LocalizedText languageObj1 = new LocalizedText(); - languageObj1.setText("Space Name English"); - ExhibitionLanguage lang1 = new ExhibitionLanguage(); - lang1.setLabel("English"); - lang1.setDefault(false); - languageObj1.setExhibitionLanguage(lang1); - nameList.add(languageObj1); - - LocalizedText languageObj2 = new LocalizedText(); - languageObj2.setText("Raumname"); - ExhibitionLanguage lang2 = new ExhibitionLanguage(); - lang2.setLabel("German"); - lang2.setDefault(true); - languageObj2.setExhibitionLanguage(lang2); - nameList.add(languageObj2); - - Mockito.when(exhibitionLanguageRepo.findByLabel(lang1.getLabel())).thenReturn(lang1); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang2.getLabel())).thenReturn(lang2); + public void test_createNewSpaceForm_success() { + Exhibition exhibition = new Exhibition(); + List languageList = new ArrayList(); + ExhibitionLanguage language2 = new ExhibitionLanguage(); - space.setSpaceNames(nameList); - - managerToTest.setNameAsDefaultLanguage(space); - - - Assert.assertEquals(space.getName(), "Raumname"); - - - } - - @Test - public void setNameAsDefaultLanguage_failure() { - Space space=new Space(); - space.setId(spaceId1); - space.setName("Initial name"); - List nameList = new ArrayList(); - - LocalizedText languageObj1 = new LocalizedText(); - languageObj1.setText("Space Name English"); - ExhibitionLanguage lang1 = new ExhibitionLanguage(); - lang1.setLabel("English"); - lang1.setDefault(false); - languageObj1.setExhibitionLanguage(lang1); - nameList.add(languageObj1); - - LocalizedText languageObj2 = new LocalizedText(); - languageObj2.setText("Raumname"); - ExhibitionLanguage lang2 = new ExhibitionLanguage(); - lang2.setLabel("German"); - lang2.setDefault(false); - languageObj2.setExhibitionLanguage(lang2); - nameList.add(languageObj2); - - Mockito.when(exhibitionLanguageRepo.findByLabel(lang1.getLabel())).thenReturn(lang1); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang2.getLabel())).thenReturn(lang2); - space.setSpaceNames(nameList); - - managerToTest.setNameAsDefaultLanguage(space); - - //no default name is set - Assert.assertEquals(space.getName(), "Initial name"); - - - } + language2.setLabel("English"); + languageList.add(language2); + exhibition.setLanguages(languageList); - - @Test - public void setDescriptionAsDefaultLanguage_success() { - Space space=new Space(); - space.setId(spaceId1); - List descriptionList = new ArrayList(); - - LocalizedText languageObj1 = new LocalizedText(); - languageObj1.setText("Space Name English"); - ExhibitionLanguage lang1 = new ExhibitionLanguage(); - lang1.setLabel("English"); - lang1.setDefault(false); - languageObj1.setExhibitionLanguage(lang1); - descriptionList.add(languageObj1); - - LocalizedText languageObj2 = new LocalizedText(); - languageObj2.setText("Raumname"); - ExhibitionLanguage lang2 = new ExhibitionLanguage(); - lang2.setLabel("German"); - lang2.setDefault(true); - languageObj2.setExhibitionLanguage(lang2); - descriptionList.add(languageObj2); - - Mockito.when(exhibitionLanguageRepo.findByLabel(lang1.getLabel())).thenReturn(lang1); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang2.getLabel())).thenReturn(lang2); + List spacePageList = new ArrayList(); + Space spacePage = new Space(); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + List titleList = new ArrayList(); + titleList.add(new LocalizedText(language2, "title1")); + List spaceTextList = new ArrayList(); + spaceTextList.add(new LocalizedText( language2, "space text")); + spacePage.setSpaceNames(titleList); + spacePage.setSpaceDescriptions(spaceTextList); + spacePageList.add(spacePage); - space.setSpaceDescriptions(descriptionList); - - managerToTest.setDescriptionAsDefaultLanguage(space); - - Assert.assertEquals(space.getDescription(), "Raumname"); - - } + when(spaceRepo.findAll()).thenReturn(spacePageList); - @Test - public void setDescriptionAsDefaultLanguage_failure() { - Space space=new Space(); - space.setId(spaceId1); - space.setDescription("Initial Description"); - List descriptionList = new ArrayList(); - - LocalizedText languageObj1 = new LocalizedText(); - languageObj1.setText("Space Name English"); - ExhibitionLanguage lang1 = new ExhibitionLanguage(); - lang1.setLabel("English"); - lang1.setDefault(false); - languageObj1.setExhibitionLanguage(lang1); - descriptionList.add(languageObj1); - - LocalizedText languageObj2 = new LocalizedText(); - languageObj2.setText("Raumname"); - ExhibitionLanguage lang2 = new ExhibitionLanguage(); - lang2.setLabel("German"); - lang2.setDefault(false); - languageObj2.setExhibitionLanguage(lang2); - descriptionList.add(languageObj2); - - Mockito.when(exhibitionLanguageRepo.findByLabel(lang1.getLabel())).thenReturn(lang1); - Mockito.when(exhibitionLanguageRepo.findByLabel(lang2.getLabel())).thenReturn(lang2); + when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + + SpaceForm spaceForm = managerToTest.createNewSpaceForm(spacePage); + assertEquals(spaceForm.getDescriptions().size(), 1); + + assertEquals(spaceForm.getNames().size(), 1); + + assertEquals(spaceForm.getDescriptions().get(0).getText(), "space text"); - space.setSpaceDescriptions(descriptionList); - - managerToTest.setDescriptionAsDefaultLanguage(space); - - Assert.assertEquals(space.getDescription(), "Initial Description"); - } } From 708177ab536384eb019628220ba41844b941a0d6 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Wed, 7 Jun 2023 16:17:38 -0700 Subject: [PATCH 137/191] [story/VSPC-215] Updated spaceFactory --- .../core/data/LocalizedTextRepository.java | 6 ++ .../vspace/core/factory/ISpaceFactory.java | 4 +- .../core/factory/impl/SpaceFactory.java | 75 ++++++++++++++++--- .../diging/vspace/core/model/IExhibition.java | 2 + .../vspace/core/model/impl/Exhibition.java | 9 +++ .../vspace/core/services/ISpaceManager.java | 2 - .../core/services/impl/SpaceManager.java | 73 +----------------- .../vspace/web/staff/forms/SpaceForm.java | 18 +++++ 8 files changed, 103 insertions(+), 86 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java index 300b4d66c..3f9548ee0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java @@ -1,13 +1,19 @@ package edu.asu.diging.vspace.core.data; +import java.util.List; + import org.javers.spring.annotation.JaversSpringDataAuditable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; + +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @Repository @JaversSpringDataAuditable public interface LocalizedTextRepository extends PagingAndSortingRepository{ + + List findByExhibitionLanguage(IExhibitionLanguage language); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index ac5cbd904..e22f6bc63 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -4,7 +4,7 @@ import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public interface ISpaceFactory { - - ISpace createSpace(SpaceForm form); + + SpaceForm createNewSpaceForm(ISpace space); } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index f6522da27..10a719af3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -1,28 +1,79 @@ package edu.asu.diging.vspace.core.factory.impl; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Space; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Service public class SpaceFactory implements ISpaceFactory { @Autowired - private SpaceRepository spaceRepo; - - /* (non-Javadoc) - * @see edu.asu.diging.vspace.core.factory.impl.ISpaceFactory#createSpace(edu.asu.diging.vspace.web.staff.forms.SpaceForm) - */ - @Override - public ISpace createSpace(SpaceForm form) { - ISpace space = new Space(); - space.setName(form.getName()); - space.setDescription(form.getDescription()); - return spaceRepo.save((Space) space); - } + private IExhibitionManager exhibitionManager; + + /** + * + * Creates new space form object + * @param space + * @return + */ + @Override + public SpaceForm createNewSpaceForm(ISpace space) { + SpaceForm spaceForm = new SpaceForm(); + spaceForm.setName(space.getName()); + spaceForm.setDescription(space.getDescription()); + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); + + spaceForm.setDefaultName(createLocalizedTextForm(space, defaultLanguage, space.getSpaceNames())); + spaceForm.setDefaultDescription(createLocalizedTextForm(space, defaultLanguage, space.getSpaceDescriptions())); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + spaceForm.getNames().add(createLocalizedTextForm(space, language, space.getSpaceNames())); + spaceForm.getDescriptions().add(createLocalizedTextForm(space, language, space.getSpaceDescriptions())); + } + }); + + return spaceForm; + } + + /** + * Creates LocalizedTextForm form using provided list of localizedTexts. + * @param exhibitionAboutPage + * @param language + * @param localizedTexts + * @return + */ + private LocalizedTextForm createLocalizedTextForm(ISpace space, IExhibitionLanguage language, List localizedTexts) { + + LocalizedTextForm localizedSpaceForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + ILocalizedText spaceText = localizedTexts.stream() + .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + + if(spaceText != null) { + localizedSpaceForm.setText(spaceText.getText()); + localizedSpaceForm.setLocalisedTextId( spaceText.getId()); + + } + localizedSpaceForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedSpaceForm; + } + + + + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 883cc6b4a..9a458dff0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -32,5 +32,7 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); List getLanguages(); + + public IExhibitionLanguage getDefaultLanguage(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 9616e4e49..362dc4b79 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -148,6 +148,15 @@ public void setPreviewId(String previewId) { this.previewId = previewId; } + /** + * + * Returns the default language of the given exhibition + */ + @Override + public IExhibitionLanguage getDefaultLanguage() { + return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + } + @Override public int hashCode() { return Objects.hash(id); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index a68079195..6f2b7b59f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -57,8 +57,6 @@ public interface ISpaceManager { void updateSpacesWithDefaultNameAndDescription(Iterable spaceList); SpaceForm getSpaceForm(String spaceId); - - SpaceForm createNewSpaceForm(ISpace space); ISpace createSpace(SpaceForm form); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index b78bb318b..de9232ba0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -332,7 +332,9 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public ISpace createSpace(SpaceForm form) { - ISpace space = spaceFactory.createSpace(form); + ISpace space = new Space(); + space.setName(form.getName()); + space.setDescription(form.getDescription()); return spaceRepo.save((Space) space); } @@ -448,73 +450,4 @@ public SpaceForm getSpaceForm(String spaceId) { return slideForm; } - /** - * - * Creates new space form object - * @param space - * @return - */ - @Override - public SpaceForm createNewSpaceForm(ISpace space) { - SpaceForm spaceForm = new SpaceForm(); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); - spaceForm.getNames().add(createLocalizedNameForm(space, defaultLanguage)); - spaceForm.getDescriptions().add(createLocalizedDescriptionForm(space, defaultLanguage)); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - spaceForm.getNames().add(createLocalizedNameForm(space, language)); - spaceForm.getDescriptions().add(createLocalizedDescriptionForm(space, language)); - } - }); - return spaceForm; - } - - /** - * Creates Localized space title object for form - * - * @param space - * @param language - * @return - */ - - private LocalizedTextForm createLocalizedNameForm(ISpace space, IExhibitionLanguage language) { - LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); - if(space!=null) { - ILocalizedText title = space.getSpaceNames().stream() - .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); - if(title != null) { - localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } - } - localizedTitleForm.setExhibitionLanguageId(language.getId()); - localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedTitleForm; - } - - /** - * - * Creates Localized space description object for form - * @param space - * @param language - * @return - */ - - private LocalizedTextForm createLocalizedDescriptionForm(ISpace space, IExhibitionLanguage language) { - LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); - if(space!=null) { - ILocalizedText text = space.getSpaceDescriptions().stream() - .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(text != null) { - localizedDescriptionForm.setText(text.getText()); - localizedDescriptionForm.setLocalisedTextId(text.getId()); - } - } - localizedDescriptionForm.setExhibitionLanguageId(language.getId()); - localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedDescriptionForm; - } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index d7a2c0e65..6e19fb410 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -10,6 +10,10 @@ public class SpaceForm { private String name; private String description; + private LocalizedTextForm defaultName; + + private LocalizedTextForm defaultDescription; + private List names = new ArrayList(); private List descriptions = new ArrayList(); @@ -38,4 +42,18 @@ public List getDescriptions() { public void setDescriptions(List descriptions) { this.descriptions = descriptions; } + public LocalizedTextForm getDefaultName() { + return defaultName; + } + public void setDefaultName(LocalizedTextForm defaultName) { + this.defaultName = defaultName; + } + public LocalizedTextForm getDefaultDescription() { + return defaultDescription; + } + public void setDefaultDescription(LocalizedTextForm defaultDescription) { + this.defaultDescription = defaultDescription; + } + + } From 028e7e01ed1f91bcebd8276d56bc8d4db569592f Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 8 Jun 2023 16:22:50 -0700 Subject: [PATCH 138/191] [story/VSPC-215]Review comment --- .../core/model/IExhibitionLanguage.java | 4 -- .../core/model/impl/ExhibitionLanguage.java | 18 ++++---- .../vspace/core/model/impl/LocalizedText.java | 14 ++++++- .../diging/vspace/core/model/impl/Space.java | 17 +++++--- .../core/services/impl/SpaceManager.java | 6 +-- .../web/staff/forms/LocalizedTextForm.java | 41 ++++++++++--------- 6 files changed, 59 insertions(+), 41 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index 507ed0474..8e4f64e06 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -1,8 +1,5 @@ package edu.asu.diging.vspace.core.model; -import java.util.List; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; - public interface IExhibitionLanguage extends IVSpaceElement { String getCode(); @@ -15,6 +12,5 @@ public interface IExhibitionLanguage extends IVSpaceElement { void setLabel(String label); - List getLocalizedTexts(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 2f7783e00..619c099a5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,8 +33,8 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; - @OneToMany(targetEntity = LocalizedText.class) - private List localizedTexts = new ArrayList(); +// @OneToMany(targetEntity = LocalizedText.class) +// private List localizedTexts = new ArrayList(); public ExhibitionLanguage() { super(); @@ -91,13 +91,13 @@ public void setDefault(boolean isDefault) { this.isDefault = isDefault; } - public List getLocalizedTexts() { - return localizedTexts; - } - - public void setLocalizedTexts(List localizedTexts) { - this.localizedTexts = localizedTexts; - } +// public List getLocalizedTexts() { +// return localizedTexts; +// } +// +// public void setLocalizedTexts(List localizedTexts) { +// this.localizedTexts = localizedTexts; +// } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 6f1917a57..a7c37f83c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -10,6 +10,7 @@ import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.ISpace; @Entity @@ -22,7 +23,10 @@ public class LocalizedText implements ILocalizedText { @ManyToOne @JoinColumn(name = "LOC_EXH_LANG") - private ExhibitionLanguage exhibitionLanguage; + private ExhibitionLanguage exhibitionLanguage; + + @ManyToOne( targetEntity = Space.class) + ISpace targetSpace; private String text; @@ -59,4 +63,12 @@ public void setText(String text) { this.text = text; } + public ISpace getTargetSpace() { + return targetSpace; + } + + public void setTargetSpace(ISpace space) { + this.targetSpace = space; + } + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 107e3e702..2947e7e87 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -10,6 +10,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinTable; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Transient; @@ -59,13 +60,19 @@ public class Space extends VSpaceElement implements ISpace { @NotFound(action = NotFoundAction.IGNORE) private IVSImage image; - @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="Space_LangObj_names") + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="Space_LangObj_names", + joinColumns = @JoinColumn(name = "Space_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List spaceNames = new ArrayList(); - - @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="Space_LangObj_descriptions") + + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="Space_LangObj_descriptions", + joinColumns = @JoinColumn(name = "Space_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") + ) private List spaceDescriptions = new ArrayList(); + @Transient private Boolean incomingLinks; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index de9232ba0..d745dbead 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -361,7 +361,7 @@ public void addSpaceName(ISpace space, List names) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); space.getSpaceNames().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); + localizedText.setTargetSpace(space); } } } @@ -389,7 +389,7 @@ public void addSpaceDescription(ISpace space, List descriptio if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, description.getText()); space.getSpaceDescriptions().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); + localizedText.setTargetSpace(space); } } } @@ -444,7 +444,7 @@ public void updateSpacesWithDefaultNameAndDescription(Iterable spaceList) @Override public SpaceForm getSpaceForm(String spaceId) { ISpace space = getSpace(spaceId); - SpaceForm slideForm = createNewSpaceForm(space); + SpaceForm slideForm = spaceFactory.createNewSpaceForm(space); slideForm.setName(space.getName()); slideForm.setDescription(space.getDescription()); return slideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index 99c8dfb3a..3435adabb 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -1,25 +1,17 @@ package edu.asu.diging.vspace.web.staff.forms; public class LocalizedTextForm { - - String text; - - String localisedTextId; - - String exhibitionLanguageId; - - String exhibitionLanguageLabel; - - Boolean isDefaultExhibitionLanguage; - - public Boolean getIsDefaultExhibitionLanguage() { - return isDefaultExhibitionLanguage; - } - - public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { - this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; - } - + + private String text; + + private String localisedTextId; + + private String exhibitionLanguageId; + + private String exhibitionLanguageLabel; + + private Boolean isDefaultExhibitionLanguage; + public LocalizedTextForm() { super(); } @@ -32,7 +24,9 @@ public LocalizedTextForm(String text, String localisedTextId, String exhibitionL this.exhibitionLanguageId = exhibitionLanguageId; this.exhibitionLanguageLabel = exhibitionLanguageLabel; } + + public String getText() { return text; } @@ -65,4 +59,13 @@ public void setExhibitionLanguageLabel(String exhibitionLanguageLabel) { this.exhibitionLanguageLabel = exhibitionLanguageLabel; } + public Boolean getIsDefaultExhibitionLanguage() { + return isDefaultExhibitionLanguage; + } + + public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { + this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; + } + + } \ No newline at end of file From eac59d1621d0c48ef3e6055af56e5e92b4559049 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 9 Jun 2023 16:29:18 -0700 Subject: [PATCH 139/191] [story/VSPC-215] Fixed null id --- .../vspace/web/staff/AddSpaceController.java | 13 ++++------ .../WEB-INF/views/staff/spaces/add.html | 24 +++++++++++++++---- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 0ab106901..bdf48bf4f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -24,6 +24,7 @@ import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; @@ -45,19 +46,13 @@ public class AddSpaceController { @Autowired private IImageService imageService; - - @Autowired - private IExhibitionManager exhibitionManager; - - + @RequestMapping(value = "/staff/space/add", method = RequestMethod.GET) public String showAddSpace(Model model) { - model.addAttribute("space", spaceManager.createNewSpaceForm(null)); + ISpace space = new Space(); + model.addAttribute("space", spaceFactory.createNewSpaceForm(space)); model.addAttribute("images", imageService.getImages(1)); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); - return "staff/spaces/add"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 3a9e55264..b9508e4e1 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -124,14 +124,29 @@

Add new Space

- -
-
+ +
+
+ +
-
+
+
+

[[${space.defaultName.exhibitionLanguageLabel}]]

+ + + + + + + + + +
+

[[${title.exhibitionLanguageLabel}]]

@@ -150,6 +165,7 @@

Add new Space

+
From deac6e4709077098f9b4852422019491b068b659 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 12 Jun 2023 15:42:45 -0700 Subject: [PATCH 140/191] [story/VSPC-215] Create Space --- .../vspace/core/services/ISpaceManager.java | 4 +- .../core/services/impl/SpaceManager.java | 38 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 6f2b7b59f..a15f86650 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -48,9 +48,9 @@ public interface ISpaceManager { void setDescriptionAsDefaultLanguage(ISpace space); - void addSpaceDescription(ISpace space, List descriptions); + void addSpaceDescription(ISpace space, LocalizedTextForm descriptions); - void addSpaceName(ISpace space, List names); + void addSpaceName(ISpace space, LocalizedTextForm names); Iterable getSpaceList(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index d745dbead..5773d16c5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -347,9 +347,8 @@ public ISpace createSpace(SpaceForm form) { * @param names */ @Override - public void addSpaceName(ISpace space, List names) { - if(!CollectionUtils.isEmpty(names)) { - for(LocalizedTextForm name : names ) { + public void addSpaceName(ISpace space, LocalizedTextForm name) { + if(name!=null) { LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); @@ -364,11 +363,12 @@ public void addSpaceName(ISpace space, List names) { localizedText.setTargetSpace(space); } } - } } + setNameAsDefaultLanguage(space); - } + + /** * Adds description to spaceDescription list. @@ -376,9 +376,8 @@ public void addSpaceName(ISpace space, List names) { * @param descriptions */ @Override - public void addSpaceDescription(ISpace space, List descriptions) { - if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedTextForm description : descriptions ) { + public void addSpaceDescription(ISpace space, LocalizedTextForm description) { + if(description!=null) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(description.getText()); @@ -387,20 +386,27 @@ public void addSpaceDescription(ISpace space, List descriptio else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, description.getText()); - space.getSpaceDescriptions().add(localizedText); - localizedText.setTargetSpace(space); + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); + space.getSpaceDescriptions().add(newLocalizedText); + newLocalizedText.setTargetSpace(space); } } - } - } + } setDescriptionAsDefaultLanguage(space); } + @Override - public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { - addSpaceName(space, spaceForm.getNames()); - addSpaceDescription(space, spaceForm.getDescriptions()); + public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { + addSpaceName(space,spaceForm.getDefaultName()); + addSpaceDescription(space,spaceForm.getDefaultDescription()); + + for(LocalizedTextForm title:spaceForm.getNames()) { + addSpaceName(space,title); + } + for(LocalizedTextForm text:spaceForm.getDescriptions()) { + addSpaceDescription(space,text); + } System.out.println("after"); } From efd93b053664eb3445cfd97baaf40c4819ef474c Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 12 Jun 2023 15:43:39 -0700 Subject: [PATCH 141/191] [story/VSPC-215] --- .../ExhibitionLanguageDeletionException.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java new file mode 100644 index 000000000..b56daed41 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java @@ -0,0 +1,29 @@ +package edu.asu.diging.vspace.core.exception; + +public class ExhibitionLanguageDeletionException extends Exception{ + + private static final long serialVersionUID = 1L; + + public ExhibitionLanguageDeletionException() { + super(); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause, boolean enableSuppression, + boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause) { + super(message, cause); + } + + public ExhibitionLanguageDeletionException(String message) { + super(message); + } + + public ExhibitionLanguageDeletionException(Throwable cause) { + super(cause); + } + + +} From 9a2c3f6bf8cd9f3d963823a578aaec1e0bfc3611 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 13 Jun 2023 16:17:59 -0700 Subject: [PATCH 142/191] [story/VSPC-215]ExhibitionLanguageDeletionException --- .../core/model/impl/ExhibitionLanguage.java | 10 --- .../core/services/IExhibitionManager.java | 9 ++- .../core/services/impl/ExhibitionManager.java | 80 +++++++++++++++---- .../ExhibitionConfigurationController.java | 29 +++---- 4 files changed, 87 insertions(+), 41 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 619c099a5..bf8dee788 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,8 +33,6 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; -// @OneToMany(targetEntity = LocalizedText.class) -// private List localizedTexts = new ArrayList(); public ExhibitionLanguage() { super(); @@ -91,15 +89,7 @@ public void setDefault(boolean isDefault) { this.isDefault = isDefault; } -// public List getLocalizedTexts() { -// return localizedTexts; -// } -// -// public void setLocalizedTexts(List localizedTexts) { -// this.localizedTexts = localizedTexts; -// } - @Override public int hashCode() { return Objects.hash(code, exhibition, label); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 256c24a1e..fb2695476 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -2,9 +2,11 @@ import java.util.List; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; /* * (non-Javadoc) @@ -35,8 +37,11 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException;; - IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion); + boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); + + void deleteEmptyLocalizedTexts(List emptyLocalizedTexts); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 0735788e5..a6cf5c4ae 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -9,8 +9,6 @@ import javax.transaction.Transactional; import org.apache.commons.collections.CollectionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -18,12 +16,19 @@ import edu.asu.diging.vspace.config.ConfigConstants; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.Space; +import edu.asu.diging.vspace.core.model.impl.VSpaceElement; import edu.asu.diging.vspace.core.services.IExhibitionManager; @Transactional @@ -38,6 +43,9 @@ public class ExhibitionManager implements IExhibitionManager { @Autowired private ExhibitionFactory exhibitFactory; + + @Autowired + private LocalizedTextRepository localizedTextRepo; /* * (non-Javadoc) @@ -99,7 +107,7 @@ public IExhibition getStartExhibition() { * @throws LanguageListConfigurationNotFoundException */ @Override - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws ExhibitionLanguageDeletionException{ if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { throw new LanguageListConfigurationNotFoundException("Exhibition Language Configuration not found"); } @@ -107,9 +115,9 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(CollectionUtils.isEmpty(codes) ) { return; } - + // Adds defaultLanguage to codes list if not already exists. - if(!StringUtils.isEmpty(defaultLanguage) && !codes.contains(defaultLanguage)) { + if(StringUtils.hasText(defaultLanguage) && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } @@ -120,9 +128,57 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); }); - // Removes exhibition langauge if unselected. - exhibition.getLanguages().removeAll(exhibition.getLanguages().stream() - .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList())); + // Finds exhibition language if unselected (to be deleted). + List exhibitionLanguageToBeRemoved = exhibition.getLanguages().stream() + .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList()); + + for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { + if(checkIfLocalizedTextsExists(language)) { + throw new ExhibitionLanguageDeletionException() ; + } + + } + exhibition.getLanguages().removeAll(exhibitionLanguageToBeRemoved); + } + + /** + * Return true if given exhibition language has non empty localized texts linked to it + * + */ + @Override + public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { + List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); + List emptyLocalizedTexts = localizedTexts.stream() + .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + deleteEmptyLocalizedTexts(emptyLocalizedTexts); + + //This returns true if non empty localized texts exist + return localizedTexts.size() > emptyLocalizedTexts.size(); + + } + + /** + * Removes localized texts from parent entities and delete them. + * + */ + @Override + public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { + emptyLocalizedTexts.forEach(localizedText -> { + removeFromSpacePage(localizedText); + + }); + localizedTextRepo.deleteAll(emptyLocalizedTexts); + } + + /** + * Removes localized texts from Exhibition About Page entity + * + * @param localizedText + */ + private void removeFromSpacePage(LocalizedText localizedText) { + ISpace space = localizedText.getTargetSpace(); + space.getSpaceNames().remove(localizedText); + space.getSpaceDescriptions().remove(localizedText); } @@ -146,11 +202,5 @@ private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map lan return exhibitionLanguage; } - - @Override - public IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion) { - return startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); - } - -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index d63b98eb1..83bb999c7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -1,11 +1,7 @@ package edu.asu.diging.vspace.web.staff; import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; - import java.util.List; -import java.util.Map; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -22,6 +18,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; @@ -47,15 +44,12 @@ public class ExhibitionConfigurationController { @Autowired private ExhibitionLanguageConfig exhibitionLanguageConfig; - - - + public static final String EXH_PREVIEW = "EXH_PREVIEW_"; - + @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { // for now we assume there is just one exhibition - IExhibition exhibition = exhibitManager.getStartExhibition(); if(exhibition==null) { exhibition = (Exhibition) exhibitFactory.createExhibition(); @@ -81,6 +75,7 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return + * @throws ExhibitionLanguageDeletionException */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, @@ -90,10 +85,8 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, @RequestParam("exhibitLanguage") List languages, @RequestParam("defaultExhibitLanguage") String defaultLanguage, - RedirectAttributes attributes) throws IOException { - + RedirectAttributes attributes) throws IOException { ISpace startSpace = spaceManager.getSpace(spaceID); - Exhibition exhibition; if (exhibitID == null || exhibitID.isEmpty()) { exhibition = (Exhibition) exhibitFactory.createExhibition(); @@ -103,7 +96,15 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, exhibition.setStartSpace(startSpace); exhibition.setTitle(title); exhibition.setMode(exhibitMode); - exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); + try { + exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); + + } catch (ExhibitionLanguageDeletionException e) { + attributes.addAttribute("alertType", "failure"); + attributes.addAttribute("message", "Could not delete the Exhibition Language as it has localized data associated to it."); + attributes.addAttribute("showAlert", "true"); + return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); + } if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { @@ -115,4 +116,4 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, attributes.addAttribute("showAlert", "true"); return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); } -} +} \ No newline at end of file From c9eaef3689af7808baaf01ee131319f4d8272241 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Wed, 14 Jun 2023 16:15:52 -0700 Subject: [PATCH 143/191] [story/VSPC-215] space factory test cases --- .../services/impl/ExhibitionManagerTest.java | 149 +++++++++++------- .../core/services/impl/SpaceFactoryTest.java | 71 +++++++++ .../core/services/impl/SpaceManagerTest.java | 54 ++----- 3 files changed, 176 insertions(+), 98 deletions(-) create mode 100644 vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java index 92a97d444..cf38dcd3b 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java @@ -16,18 +16,22 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.springframework.security.authentication.BadCredentialsException; +import org.mockito.runners.MockitoJUnitRunner; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +@RunWith(MockitoJUnitRunner.class) public class ExhibitionManagerTest { @Mock @@ -38,6 +42,9 @@ public class ExhibitionManagerTest { @InjectMocks private ExhibitionManager serviceToTest; + + @Mock + private ExhibitionManager serviceToTestMock; @Before public void init() { @@ -58,64 +65,61 @@ public void test_getExhibitionById_success() { String id = "ID"; Exhibition exhibition = new Exhibition(); exhibition.setId(id); - Optional exhibitionOptional = Optional.of(exhibition);; + Optional exhibitionOptional = Optional.of(exhibition); when(exhibitRepo.findById(id)).thenReturn(exhibitionOptional); - + IExhibition exhibitionTest = serviceToTest.getExhibitionById(id); assertEquals(exhibitionTest, exhibition); verify(exhibitRepo).findById(id); } - @Test - public void test_updateExhibitionLanguages_success() { + public void test_updateExhibitionLanguages_success() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); - List languages= new ArrayList() ; + List languages = new ArrayList(); languages.add("en"); languages.add("aa"); - List mappedLanguages= new ArrayList(); + List mappedLanguages = new ArrayList(); - Map language1 = new LinkedHashMap(); + Map language1 = new LinkedHashMap(); language1.put("code", "en"); language1.put("label", "English"); - Map language2 = new LinkedHashMap(); + Map language2 = new LinkedHashMap(); language2.put("code", "aa"); language2.put("label", "Afar"); mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - assertEquals(exhibition.getLanguages().size(),2); - + serviceToTest.updateExhibitionLanguages(exhibition, languages, null); + assertEquals(exhibition.getLanguages().size(), 2); } @Test - public void test_updateExhibitionLanguages_duplicates() { + public void test_updateExhibitionLanguages_duplicates() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); - //Exhibition already consists of 2 languages + // Exhibition already consists of 2 languages exhibition.getLanguages().add(new ExhibitionLanguage("English", "en", exhibition)); exhibition.getLanguages().add(new ExhibitionLanguage("Afar", "aa", exhibition)); - - List languages= new ArrayList() ; + List languages = new ArrayList(); languages.add("en"); languages.add("aa"); languages.add("sq"); // new language added - List mappedLanguages= new ArrayList(); + List mappedLanguages = new ArrayList(); - Map language1 = new LinkedHashMap(); + Map language1 = new LinkedHashMap(); language1.put("code", "en"); language1.put("label", "English"); - Map language2 = new LinkedHashMap(); + Map language2 = new LinkedHashMap(); language2.put("code", "aa"); language2.put("label", "Afar"); - Map language3 = new LinkedHashMap(); + Map language3 = new LinkedHashMap(); language3.put("code", "sq"); language3.put("label", "Albanian"); mappedLanguages.add(language1); @@ -124,92 +128,120 @@ public void test_updateExhibitionLanguages_duplicates() { when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); serviceToTest.updateExhibitionLanguages(exhibition, languages, null); - //no duplicate entries should be added - assertEquals(exhibition.getLanguages().size(),3); + // no duplicate entries should be added + assertEquals(exhibition.getLanguages().size(), 3); } @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); - List languages= new ArrayList() ; + List languages = new ArrayList(); languages.add("en"); languages.add("Invalid"); - List mappedLanguages= new ArrayList(); + List mappedLanguages = new ArrayList(); - Map language1 = new LinkedHashMap(); + Map language1 = new LinkedHashMap(); language1.put("code", "en"); language1.put("label", "English"); - Map language2 = new LinkedHashMap(); + Map language2 = new LinkedHashMap(); language2.put("code", "aa"); language2.put("label", "Afar"); mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - serviceToTest.updateExhibitionLanguages(exhibition, languages,null); - assertEquals(exhibition.getLanguages().size(),1); - + serviceToTest.updateExhibitionLanguages(exhibition, languages, null); + assertEquals(exhibition.getLanguages().size(), 1); } @Test - public void test_updateExhibitionLanguages_defaultLanguage() { + public void test_updateExhibitionLanguages_defaultLanguage() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); - List languages= new ArrayList() ; + List languages = new ArrayList(); languages.add("en"); - languages.add("aa"); - List mappedLanguages= new ArrayList(); + languages.add("aa"); + List mappedLanguages = new ArrayList(); - Map language1 = new LinkedHashMap(); + Map language1 = new LinkedHashMap(); language1.put("code", "en"); language1.put("label", "English"); - Map language2 = new LinkedHashMap(); + Map language2 = new LinkedHashMap(); language2.put("code", "aa"); language2.put("label", "Afar"); mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "en"); - assertEquals(exhibition.getLanguages().size(),2); + assertEquals(exhibition.getLanguages().size(), 2); exhibition.getLanguages().forEach(language -> { - if(language.getCode().equals("en")) { + if (language.getCode().equals("en")) { assertTrue(language.isDefault()); - - } }); - + } + }); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),2); + assertEquals(exhibition.getLanguages().size(), 2); exhibition.getLanguages().forEach(language -> { - if(language.getCode().equals("en")) { + if (language.getCode().equals("en")) { assertFalse(language.isDefault()); - } - if(language.getCode().equals("aa")) { + if (language.getCode().equals("aa")) { assertTrue(language.isDefault()); - - }}); - + } + }); } - + @Test public void test_updateExhibitionLanguages_whenLanguageListConfigurationNotFound() { Exhibition exhibition = new Exhibition(); - List languages= new ArrayList() ; + List languages = new ArrayList(); languages.add("en"); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(new ArrayList()); Assert.assertThrows(LanguageListConfigurationNotFoundException.class, - () -> serviceToTest.updateExhibitionLanguages(exhibition, languages,null)); + () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, null)); } + + @Test + public void test_updateExhibitionLanguages_whenLanguageIsUnselected() throws ExhibitionLanguageDeletionException { + Exhibition exhibition = new Exhibition(); + + List mappedLanguages = new ArrayList(); + + Map language1 = new LinkedHashMap(); + language1.put("code", "en"); + language1.put("label", "English"); + Map language2 = new LinkedHashMap(); + language2.put("code", "aa"); + language2.put("label", "Afar"); + mappedLanguages.add(language1); + mappedLanguages.add(language2); + + List languages = new ArrayList(); + languages.add("en"); + languages.add("aa"); + + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(), 2); + + languages.remove("en"); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),1); + + } @Test - public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { + public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List mappedLanguages= new ArrayList(); @@ -229,14 +261,19 @@ public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { languages.add("aa"); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + IExhibitionLanguage language = new ExhibitionLanguage(); + language.setLabel("English"); + + when(serviceToTestMock.checkIfLocalizedTextsExists(language)).thenReturn(false); + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); assertEquals(exhibition.getLanguages().size(),2); + languages.remove("en"); - serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); - assertEquals(exhibition.getLanguages().size(),1); - + Assert.assertThrows(ExhibitionLanguageDeletionException.class, + () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa")); } -} +} \ No newline at end of file diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java new file mode 100644 index 000000000..146c74dd9 --- /dev/null +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java @@ -0,0 +1,71 @@ +package edu.asu.diging.vspace.core.services.impl; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import edu.asu.diging.vspace.core.data.SpaceRepository; +import edu.asu.diging.vspace.core.factory.impl.SpaceFactory; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.Space; +import edu.asu.diging.vspace.web.staff.forms.SpaceForm; + +public class SpaceFactoryTest { + + @Mock + private SpaceRepository spaceRepo; + + @Mock + private ExhibitionManager exhibitionManager; + + @InjectMocks + private SpaceFactory serviceToTest; + + + @Test + public void test_createNewSpaceForm_success() { + Exhibition exhibition = new Exhibition(); + List languageList = new ArrayList(); + ExhibitionLanguage language2 = new ExhibitionLanguage(); + + + language2.setLabel("English"); + languageList.add(language2); + exhibition.setLanguages(languageList); + + List spacePageList = new ArrayList(); + Space spacePage = new Space(); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + List titleList = new ArrayList(); + titleList.add(new LocalizedText(language2, "title1")); + List spaceTextList = new ArrayList(); + spaceTextList.add(new LocalizedText( language2, "space text")); + spacePage.setSpaceNames(titleList); + spacePage.setSpaceDescriptions(spaceTextList); + spacePageList.add(spacePage); + + when(spaceRepo.findAll()).thenReturn(spacePageList); + + when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + + SpaceForm spaceForm = serviceToTest.createNewSpaceForm(spacePage); + assertEquals(spaceForm.getDescriptions().size(), 1); + + assertEquals(spaceForm.getNames().size(), 1); + + assertEquals(spaceForm.getDescriptions().get(0).getText(), "space text"); + + } + +} diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java index ae16c0573..8c2611134 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java @@ -30,6 +30,7 @@ import edu.asu.diging.vspace.core.factory.ISpaceLinkDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceLinkFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; @@ -348,14 +349,19 @@ public void test_createSpace_success() { when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); - when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); - managerToTest.createSpace(spaceForm); + + Space space = new Space(); + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); + when(spaceRepo.save(space)).thenReturn(space); + ISpace savedspace = managerToTest.createSpace(spaceForm); assertEquals(locText1.getText(), "title"); assertEquals(locText2.getText(), "space text"); + } @Test - public void test_createSlide_failure() { + public void test_createSpace_failure() { List spacePageList = new ArrayList(); spacePageList.add(new Space()); @@ -369,55 +375,19 @@ public void test_createSlide_failure() { spaceForm.setNames(titleList); spaceForm.setDescriptions(spaceTextList); + when(spaceRepo.findAll()).thenReturn(spacePageList); LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.empty()); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.empty()); - - when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); managerToTest.createSpace(spaceForm); assertEquals(locText1.getText(), null); } - - - @Test - public void test_createNewSpaceForm_success() { - Exhibition exhibition = new Exhibition(); - List languageList = new ArrayList(); - ExhibitionLanguage language2 = new ExhibitionLanguage(); - - - language2.setLabel("English"); - languageList.add(language2); - exhibition.setLanguages(languageList); - - List spacePageList = new ArrayList(); - Space spacePage = new Space(); - LocalizedText locText1 = new LocalizedText(); - locText1.setId( "ID1"); - List titleList = new ArrayList(); - titleList.add(new LocalizedText(language2, "title1")); - List spaceTextList = new ArrayList(); - spaceTextList.add(new LocalizedText( language2, "space text")); - spacePage.setSpaceNames(titleList); - spacePage.setSpaceDescriptions(spaceTextList); - spacePageList.add(spacePage); - - when(spaceRepo.findAll()).thenReturn(spacePageList); - - when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); - - SpaceForm spaceForm = managerToTest.createNewSpaceForm(spacePage); - assertEquals(spaceForm.getDescriptions().size(), 1); - - assertEquals(spaceForm.getNames().size(), 1); - - assertEquals(spaceForm.getDescriptions().get(0).getText(), "space text"); - - } } From fd4fa4a2a9f29ae30b44474fd88bc1a40f389485 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 15 Jun 2023 16:20:51 -0700 Subject: [PATCH 144/191] [story/VSPC-215] UI Changes --- .../WEB-INF/views/staff/spaces/add.html | 10 ++++---- .../WEB-INF/views/staff/spaces/edit.html | 23 ++++++++++++++++--- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index b9508e4e1..27b0e39e0 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -141,9 +141,9 @@

Add new Space

- - - + + +
@@ -157,8 +157,8 @@

Add new Space

- - + +
diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html index 1bab45393..512160c81 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html @@ -70,13 +70,30 @@

Edit Space: [(${spaceForm.name})]

th:action='@{|/staff/space/${spaceId}/edit?${_csrf.parameterName}=${_csrf.token}|}' th:object="${spaceForm}" enctype="multipart/form-data" style="margin-top: 40px"> + +
-
+
+ +
-
+
+
+

[[${spaceForm.defaultName.exhibitionLanguageLabel}]]

+ + + + + + + + + +
+

[[${title.exhibitionLanguageLabel}]]

@@ -95,7 +112,7 @@

Edit Space: [(${spaceForm.name})]

- +

From 364327c44cebeae49d7ef186d327de5ccb273fd7 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 16 Jun 2023 16:12:36 -0700 Subject: [PATCH 145/191] [story/VSPC-215] Code Optimization --- .../vspace/core/services/ISpaceManager.java | 8 --- .../core/services/impl/SpaceManager.java | 49 ++----------------- .../vspace/web/staff/AddSpaceController.java | 1 - .../vspace/web/staff/EditSpaceController.java | 10 +--- 4 files changed, 4 insertions(+), 64 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index a15f86650..fe792b084 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -44,18 +44,10 @@ public interface ISpaceManager { void updateNameAndDescription(ISpace space, SpaceForm spaceForm); - void setNameAsDefaultLanguage(ISpace space); - - void setDescriptionAsDefaultLanguage(ISpace space); - void addSpaceDescription(ISpace space, LocalizedTextForm descriptions); void addSpaceName(ISpace space, LocalizedTextForm names); - Iterable getSpaceList(); - - void updateSpacesWithDefaultNameAndDescription(Iterable spaceList); - SpaceForm getSpaceForm(String spaceId); ISpace createSpace(SpaceForm form); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 5773d16c5..18cf46bff 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -205,8 +205,6 @@ public CreationReturnValue storeSpace(ISpace space, IVSImage image) { public ISpace getSpace(String id) { Optional space = spaceRepo.findById(id); if (space != null && space.isPresent()) { - setDescriptionAsDefaultLanguage(space.get()); - setNameAsDefaultLanguage(space.get()); return space.get(); } return null; @@ -222,8 +220,6 @@ public ISpace getFullyLoadedSpace(String id) { space.getSpaceLinks().size(); space.getModuleLinks().size(); space.getExternalLinks().size(); - setDescriptionAsDefaultLanguage(space); - setNameAsDefaultLanguage(space); return space; } @@ -318,8 +314,6 @@ public Iterable addIncomingLinkInfoToSpaces(Iterable spaces) { while (iterator.hasNext()) { Space space = iterator.next(); space.setIncomingLinks((spaceLinkRepo.findByTargetSpace(space)).size() > 0 ? true : false); - setDescriptionAsDefaultLanguage(space); - setNameAsDefaultLanguage(space); } return spaces; } @@ -365,7 +359,6 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { } } - setNameAsDefaultLanguage(space); } @@ -392,12 +385,14 @@ public void addSpaceDescription(ISpace space, LocalizedTextForm description) { } } } - setDescriptionAsDefaultLanguage(space); + } @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { + space.setName(spaceForm.getDefaultName().getText()); + space.setDescription(spaceForm.getDefaultDescription().getText()); addSpaceName(space,spaceForm.getDefaultName()); addSpaceDescription(space,spaceForm.getDefaultDescription()); @@ -407,46 +402,8 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { for(LocalizedTextForm text:spaceForm.getDescriptions()) { addSpaceDescription(space,text); } - System.out.println("after"); - } - - @Override - public void setNameAsDefaultLanguage(ISpace space) { - String defaultSpaceName = space.getSpaceNames().stream() - .filter(title -> Boolean.TRUE.equals(title.getExhibitionLanguage().isDefault())) - .map(ILocalizedText::getText) - .findAny().orElse(space.getName()) ; - space.setName(defaultSpaceName); - - } - - @Override - public void setDescriptionAsDefaultLanguage(ISpace space) { - String defaultSpaceDescription = space.getSpaceDescriptions().stream() - .filter(description -> Boolean.TRUE.equals(description.getExhibitionLanguage().isDefault())) - .map(ILocalizedText::getText) - .findAny().orElse(space.getDescription()); - space.setDescription(defaultSpaceDescription); - - } - - @Override - public Iterable getSpaceList() { - Iterable spaceList = addIncomingLinkInfoToSpaces(spaceRepo.findAll()); - updateSpacesWithDefaultNameAndDescription(spaceList); - return spaceList; - - } - - @Override - public void updateSpacesWithDefaultNameAndDescription(Iterable spaceList) { - spaceList.forEach(space -> { - setDescriptionAsDefaultLanguage(space); - setNameAsDefaultLanguage(space); - }); } - @Override public SpaceForm getSpaceForm(String spaceId) { ISpace space = getSpace(spaceId); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index bdf48bf4f..1c8c55c41 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -61,7 +61,6 @@ public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @Reques Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { ISpace space = spaceManager.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); - System.out.println("here"); space.setSpaceStatus(SpaceStatus.UNPUBLISHED); byte[] bgImage = null; String filename = null; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java index d3d757bc7..d4f3cd45e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java @@ -25,20 +25,12 @@ public class EditSpaceController { @Autowired private ISpaceManager spaceManager; - - @Autowired - private IExhibitionManager exhibitionManager; - + @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("spaceId") String spaceId) { model.addAttribute("spaceForm", spaceManager.getSpaceForm(spaceId)); model.addAttribute("spaceId", spaceId); - - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); - return "staff/spaces/edit"; } From f729a1b9feef3389117c6b65441d020e90cbc9ab Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 16 Jun 2023 16:34:26 -0700 Subject: [PATCH 146/191] [story/VSPC-215] code factor --- .../core/services/IExhibitionManager.java | 2 +- .../core/services/impl/SpaceManager.java | 49 +++++++++---------- .../vspace/web/staff/forms/SpaceForm.java | 3 +- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index fb2695476..64d680d96 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -37,7 +37,7 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException;; + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException; boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 18cf46bff..908145ae5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -342,24 +342,21 @@ public ISpace createSpace(SpaceForm form) { */ @Override public void addSpaceName(ISpace space, LocalizedTextForm name) { - if(name!=null) { - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(name.getText()); + if(name!=null) { + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(name.getText()); } - - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - - localizedText = new LocalizedText(exhibitionLanguage, name.getText()); - space.getSpaceNames().add(localizedText); - localizedText.setTargetSpace(space); + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + space.getSpaceNames().add(localizedText); + localizedText.setTargetSpace(space); } } + } } - - } @@ -370,22 +367,20 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { */ @Override public void addSpaceDescription(ISpace space, LocalizedTextForm description) { - if(description!=null) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); + if(description!=null) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); } - - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); - space.getSpaceDescriptions().add(newLocalizedText); - newLocalizedText.setTargetSpace(space); + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); + space.getSpaceDescriptions().add(newLocalizedText); + newLocalizedText.setTargetSpace(space); } - } + } } - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index 6e19fb410..df57afc7a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -9,8 +9,7 @@ public class SpaceForm { private String name; private String description; - - private LocalizedTextForm defaultName; + private LocalizedTextForm defaultName; private LocalizedTextForm defaultDescription; From 498732564c1135da208598f5dc5df9f95f321968 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 16 Jun 2023 16:39:23 -0700 Subject: [PATCH 147/191] [story/VSPC-215] --- .../java/edu/asu/diging/vspace/core/services/ISpaceManager.java | 1 + .../edu/asu/diging/vspace/core/services/impl/SpaceManager.java | 2 -- .../java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index fe792b084..b0fabbdc7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -51,4 +51,5 @@ public interface ISpaceManager { SpaceForm getSpaceForm(String spaceId); ISpace createSpace(SpaceForm form); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 908145ae5..46d4277c5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -382,8 +382,6 @@ public void addSpaceDescription(ISpace space, LocalizedTextForm description) { } } } - - @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { space.setName(spaceForm.getDefaultName().getText()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index df57afc7a..8daa75d44 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -9,6 +9,7 @@ public class SpaceForm { private String name; private String description; + private LocalizedTextForm defaultName; private LocalizedTextForm defaultDescription; From 4809a7d945123877fc3b483796b0cd860e54a81a Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 16 Jun 2023 16:46:26 -0700 Subject: [PATCH 148/191] [story/VSPC-215] --- .../asu/diging/vspace/core/services/IExhibitionManager.java | 1 - .../edu/asu/diging/vspace/core/services/impl/SpaceManager.java | 2 -- .../java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 64d680d96..dacfba87e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -43,5 +43,4 @@ public interface IExhibitionManager { void deleteEmptyLocalizedTexts(List emptyLocalizedTexts); - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 46d4277c5..cbd46e336 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -358,8 +358,6 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { } } - - /** * Adds description to spaceDescription list. * @param space diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index 8daa75d44..d4a9f014a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -54,6 +54,5 @@ public LocalizedTextForm getDefaultDescription() { public void setDefaultDescription(LocalizedTextForm defaultDescription) { this.defaultDescription = defaultDescription; } - - + } From bb9e4552c4fe15bbf9db2c81ef43e71c7746f459 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 23 Jun 2023 16:24:11 -0700 Subject: [PATCH 149/191] [story/VSPC-214] Updated entity classes --- .../core/data/LocalizedTextRepository.java | 5 + .../diging/vspace/core/model/IExhibition.java | 2 + .../core/model/IExhibitionLanguage.java | 4 +- .../vspace/core/model/impl/Exhibition.java | 9 ++ .../core/model/impl/ExhibitionAboutPage.java | 109 +++++++++++++ .../vspace/core/model/impl/LocalizedText.java | 18 ++- .../services/IExhibitionAboutPageManager.java | 30 ++++ .../impl/ExhibitionAboutPageManager.java | 148 ++++++++++++++++++ .../vspace/web/staff/forms/AboutPageForm.java | 72 +++++++++ 9 files changed, 393 insertions(+), 4 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java index 6a9cb59d1..815121cd3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/LocalizedTextRepository.java @@ -1,13 +1,18 @@ package edu.asu.diging.vspace.core.data; +import java.util.List; + import org.javers.spring.annotation.JaversSpringDataAuditable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @Repository @JaversSpringDataAuditable public interface LocalizedTextRepository extends PagingAndSortingRepository{ + + List findByExhibitionLanguage(IExhibitionLanguage language); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 883cc6b4a..9a458dff0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -32,5 +32,7 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); List getLanguages(); + + public IExhibitionLanguage getDefaultLanguage(); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java index 0e0044109..f2ef71d26 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -14,7 +14,5 @@ public interface IExhibitionLanguage extends IVSpaceElement { void setDefault(boolean isDefault); void setLabel(String label); - - List getLocalizedTexts(); - + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 9616e4e49..362dc4b79 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -148,6 +148,15 @@ public void setPreviewId(String previewId) { this.previewId = previewId; } + /** + * + * Returns the default language of the given exhibition + */ + @Override + public IExhibitionLanguage getDefaultLanguage() { + return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + } + @Override public int hashCode() { return Objects.hash(id); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java new file mode 100644 index 000000000..a283ab957 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -0,0 +1,109 @@ +package edu.asu.diging.vspace.core.model.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.Lob; +import javax.persistence.OneToMany; + +import org.commonmark.node.Node; +import org.commonmark.parser.Parser; +import org.commonmark.renderer.html.HtmlRenderer; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import edu.asu.diging.vspace.core.model.ILocalizedText; + +/** + * Model for Exhibition About Page + * + * @author Avirup Biswas + * + */ +@Entity +public class ExhibitionAboutPage extends VSpaceElement { + @Id + @GeneratedValue(generator = "exh_abtpg_id_generator") + @GenericGenerator(name = "exh_abtpg_id_generator", parameters = @Parameter(name = "prefix", value = "EXHABT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + @Lob + private String title; + + @Lob + private String aboutPageText; + + + + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="AboutPage_LocText_titles", + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) + private List localizedTitles = new ArrayList(); + + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="AboutPage_LocText_descriptions", + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") + ) + private List localizedDescriptions = new ArrayList(); + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAboutPageText() { + return aboutPageText; + } + + public void setAboutPageText(String aboutPageText) { + this.aboutPageText = aboutPageText; + } + + public List getExhibitionTitles() { + return localizedTitles; + } + + public void setExhibitionTitles(List exhibitionTitles) { + this.localizedTitles = exhibitionTitles; + } + + public List getExhibitionTextDescriptions() { + return localizedDescriptions; + } + + public void setExhibitionTextDescriptions(List exhibitionTextDescriptions) { + this.localizedDescriptions = exhibitionTextDescriptions; + } + + /* + * (non-Javadoc) + * + * @see + * edu.asu.diging.vspace.core.model.impl.ITextBlock#htmlRenderedText() + */ + public String htmlRenderedText() { + Parser parser = Parser.builder().build(); + Node document = parser.parse(aboutPageText); + HtmlRenderer renderer = HtmlRenderer.builder().build(); + return renderer.render(document); + } +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index fed98b635..bc9878f84 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,5 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; +import javax.persistence.CascadeType; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -10,6 +12,7 @@ import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.IVSpaceElement; @Entity @@ -20,9 +23,12 @@ public class LocalizedText implements ILocalizedText { @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; + + @ManyToOne( targetEntity = ExhibitionAboutPage.class) + ExhibitionAboutPage targetExhibitionAboutPage; private String text; @@ -59,4 +65,14 @@ public void setText(String text) { this.text = text; } + public ExhibitionAboutPage getTargetExhibitionAboutPage() { + return targetExhibitionAboutPage; + } + + public void setTargetExhibitionAboutPage(ExhibitionAboutPage targetExhibitionAboutPage) { + this.targetExhibitionAboutPage = targetExhibitionAboutPage; + } + + + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java new file mode 100644 index 000000000..ecd5660e5 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java @@ -0,0 +1,30 @@ +package edu.asu.diging.vspace.core.services; + +import java.util.List; + +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; +/** + * IExhibitionAboutPageManager allows to store and manage {@link ExhibitionAboutPage}. + * @author Avirup Biswas + * + */ +public interface IExhibitionAboutPageManager { + + /** + * This method fetches all {@link ExhibitionAboutPage} entries and returns them + */ + List findAll(); + + /** + * This method stores Exhibition About page information and returns the {@link ExhibitionAboutPage} which is being stored + * @param aboutPageForm + * @return {@link ExhibitionAboutPage} Returns the object after being stored. Object will now have an ID. + */ + ExhibitionAboutPage store(AboutPageForm aboutPageForm); + + ExhibitionAboutPage getExhibitionAboutPage(); + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java new file mode 100644 index 000000000..6fe4d0c92 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -0,0 +1,148 @@ +package edu.asu.diging.vspace.core.services.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import javax.transaction.Transactional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; + +import edu.asu.diging.vspace.core.data.ExhibitionAboutPageRepository; +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; +import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; +/** + * + * @author Avirup Biswas + * + */ +@Transactional +@Service +public class ExhibitionAboutPageManager implements IExhibitionAboutPageManager{ + + @Autowired + private ExhibitionAboutPageRepository repo; + + @Autowired + private IExhibitionManager exhibitionManager; + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepository; + + @Autowired + private LocalizedTextRepository localizedTextRepo; + + + /* (non-Javadoc) + * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#findAll() + */ + @Override + public List findAll() { + Iterable aboutpages = repo.findAll(); + List results = new ArrayList<>(); + aboutpages.forEach(e -> results.add(e)); + return results; + } + + + /* (non-Javadoc) + * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#store() + */ + @Override + public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { + IExhibition exhibition = exhibitionManager.getStartExhibition(); + if(!exhibition.isAboutPageConfigured()) { + exhibition.setAboutPageConfigured(true); + exhibitionManager.storeExhibition((Exhibition)exhibition); + } + + + ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); + exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); + exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); + setAboutPageTitle(aboutPageForm.getDefaultTitle(),exhibitionAboutPage); + setAboutPageDescription(aboutPageForm.getDefaultAboutPageText(),exhibitionAboutPage); + + for(LocalizedTextForm title:aboutPageForm.getTitles()) { + setAboutPageTitle(title,exhibitionAboutPage); + } + for(LocalizedTextForm aboutPageText:aboutPageForm.getAboutPageTexts()) { + setAboutPageDescription(aboutPageText,exhibitionAboutPage); + } + + return repo.save(exhibitionAboutPage); + } + + /** + * This method returns the first ExhibitionAboutPage set by a Staff, if the + * ExhibitionAboutPage is not set yet, this method returns a new instance of + * an ExhibitionAbout Page + * @return ExhibitionAboutPage + */ + @Override + public ExhibitionAboutPage getExhibitionAboutPage() { + List aboutPageList = findAll(); + return aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); + } + + /** + * This method maps the title in ExhibitionAboutPage, and add that to + * exhibitionTitles list for each user selected Exhibition Language. + */ + public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhibitionAboutPage) { + if(title!=null) { + + LocalizedText localizedText = localizedTextRepo.findById(title.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(title.getText()); + } else { + + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(title.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, title.getText()); + exhibitionAboutPage.getExhibitionTitles().add(localizedText); + localizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); + + } + } + + } + + } + + /** + * This method maps the description in ExhibitionAboutPage, and add that to + * exhibitionTextDescriptions list for each user selected Exhibition Language. + */ + public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionAboutPage exhibitionAboutPage) { + if(aboutPageText!=null) { + LocalizedText localizedText = localizedTextRepo.findById(aboutPageText.getLocalisedTextId()).orElse(null); + + if(localizedText != null) { + localizedText.setText(aboutPageText.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); + newLocalizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); + exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); + + } + } + } + } + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java new file mode 100644 index 000000000..d213daa5b --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java @@ -0,0 +1,72 @@ +package edu.asu.diging.vspace.web.staff.forms; + +import java.util.ArrayList; +import java.util.List; + +import edu.asu.diging.vspace.core.model.impl.LocalizedText; + +public class AboutPageForm { + + private String title; + + private String aboutPageText; + + private LocalizedTextForm defaultTitle; + + private LocalizedTextForm defaultAboutPageText; + + private List titles = new ArrayList(); + + private List aboutPageTexts = new ArrayList(); + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAboutPageText() { + return aboutPageText; + } + + public void setAboutPageText(String aboutPageText) { + this.aboutPageText = aboutPageText; + } + + public LocalizedTextForm getDefaultTitle() { + return defaultTitle; + } + + public void setDefaultTitle(LocalizedTextForm defaultTitle) { + this.defaultTitle = defaultTitle; + } + + public LocalizedTextForm getDefaultAboutPageText() { + return defaultAboutPageText; + } + + public void setDefaultAboutPageText(LocalizedTextForm defaultAboutPageText) { + this.defaultAboutPageText = defaultAboutPageText; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } + + public List getAboutPageTexts() { + return aboutPageTexts; + } + + public void setAboutPageTexts(List aboutPageTexts) { + this.aboutPageTexts = aboutPageTexts; + } + + + +} \ No newline at end of file From d336c52446db646e21fe08740c1158ca10e083c1 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 26 Jun 2023 15:25:02 -0700 Subject: [PATCH 150/191] [story/VSPC-214] slide factory methods --- .../vspace/core/factory/ISlideFactory.java | 3 + .../core/factory/impl/SlideFactory.java | 63 ++++++++++++++++++- .../diging/vspace/core/model/impl/Slide.java | 16 +++-- .../vspace/web/staff/forms/SlideForm.java | 14 +++++ 4 files changed, 91 insertions(+), 5 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java index 20a865b05..ce2a69052 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java @@ -1,3 +1,4 @@ + package edu.asu.diging.vspace.core.factory; import edu.asu.diging.vspace.core.model.IModule; @@ -8,5 +9,7 @@ public interface ISlideFactory { ISlide createSlide(IModule module, SlideForm form, SlideType type); + + SlideForm createNewSlideForm(ISlide space); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java index f5f2b9448..c0637d5ab 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java @@ -5,18 +5,24 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.factory.IChoiceFactory; import edu.asu.diging.vspace.core.factory.ISlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; import edu.asu.diging.vspace.core.model.IContentBlock; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.BranchingPoint; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.impl.SlideManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Service @@ -27,6 +33,9 @@ public class SlideFactory implements ISlideFactory { @Autowired private SlideManager slideManager; + + @Autowired + private IExhibitionManager exhibitionManager; /* * (non-Javadoc) @@ -50,5 +59,57 @@ public ISlide createSlide(IModule module, SlideForm form, SlideType type) { slide.setModule(module); slide.setContents(new ArrayList()); return slide; - } + } + + /** + * + * Creates new slide form object + * @param slide + * @return + */ + @Override + public SlideForm createNewSlideForm(ISlide slide) { + SlideForm slideForm = new SlideForm(); + slideForm.setName(slide.getName()); + slideForm.setDescription(slide.getDescription()); + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); + + slideForm.setDefaultName(createLocalizedTextForm(slide, defaultLanguage, slide.getSlideNames())); + slideForm.setDefaultDescription(createLocalizedTextForm(slide, defaultLanguage, slide.getSlideDescriptions())); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + slideForm.getNames().add(createLocalizedTextForm(slide, language, slide.getSlideNames())); + slideForm.getDescriptions().add(createLocalizedTextForm(slide, language, slide.getSlideDescriptions())); + } + }); + + return slideForm; + } + + /** + * Creates LocalizedTextForm form using provided list of localizedTexts. + * @param exhibitionAboutPage + * @param language + * @param localizedTexts + * @return + */ + private LocalizedTextForm createLocalizedTextForm(ISlide slide, IExhibitionLanguage language, List localizedTexts) { + + LocalizedTextForm localizedSpaceForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + ILocalizedText slideText = localizedTexts.stream() + .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + + if(slideText != null) { + localizedSpaceForm.setText(slideText.getText()); + localizedSpaceForm.setLocalisedTextId( slideText.getId()); + + } + localizedSpaceForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedSpaceForm; + } + + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java index 236bb0911..6dfc30651 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java @@ -14,6 +14,8 @@ import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; +import javax.persistence.JoinTable; +import javax.persistence.JoinColumn; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; @@ -49,14 +51,20 @@ public class Slide extends VSpaceElement implements ISlide { @ManyToMany(mappedBy = "slides", targetEntity = Sequence.class) private List sequence; - @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="Slide_LangObj_names") + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="Slide_LangObj_names", + joinColumns = @JoinColumn(name = "Slide_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List slideNames = new ArrayList(); - @OneToMany( targetEntity = LocalizedText.class, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) - @JoinTable(name="Slide_LangObj_descriptions") + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) + @JoinTable(name="Slide_LangObj_descriptions", + joinColumns = @JoinColumn(name = "Slide_Id", referencedColumnName="id"), + inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List slideDescriptions = new ArrayList(); + + public List getSlideNames() { return slideNames; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java index bd3708506..ca8bf6657 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SlideForm.java @@ -8,6 +8,8 @@ public class SlideForm { private String name; private String description; + private LocalizedTextForm defaultName; + private LocalizedTextForm defaultDescription; private String type; private List choices; @@ -51,6 +53,18 @@ public List getDescriptions() { public void setDescriptions(List descriptions) { this.descriptions = descriptions; } + public LocalizedTextForm getDefaultName() { + return defaultName; + } + public void setDefaultName(LocalizedTextForm defaultName) { + this.defaultName = defaultName; + } + public LocalizedTextForm getDefaultDescription() { + return defaultDescription; + } + public void setDefaultDescription(LocalizedTextForm defaultDescription) { + this.defaultDescription = defaultDescription; + } } From c5078bb17ba66d0ea806e30c90644b0c91c2a5d1 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Tue, 27 Jun 2023 16:27:55 -0700 Subject: [PATCH 151/191] [story/VSPC-214] Updated manager class methods --- .../vspace/core/model/impl/LocalizedText.java | 15 +- .../vspace/core/services/ISlideManager.java | 9 +- .../core/services/impl/SlideManager.java | 162 ++++-------------- 3 files changed, 46 insertions(+), 140 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index bc9878f84..298b9d6ef 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -12,6 +12,7 @@ import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.IVSpaceElement; @@ -27,8 +28,8 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - @ManyToOne( targetEntity = ExhibitionAboutPage.class) - ExhibitionAboutPage targetExhibitionAboutPage; + @ManyToOne( targetEntity = Slide.class) + ISlide targetSlide; private String text; @@ -65,14 +66,16 @@ public void setText(String text) { this.text = text; } - public ExhibitionAboutPage getTargetExhibitionAboutPage() { - return targetExhibitionAboutPage; + public ISlide getTargetSlide() { + return targetSlide; } - public void setTargetExhibitionAboutPage(ExhibitionAboutPage targetExhibitionAboutPage) { - this.targetExhibitionAboutPage = targetExhibitionAboutPage; + public void setTargetSlide(ISlide targetSlide) { + this.targetSlide = targetSlide; } + + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index 02b4c141d..897bf872e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -39,15 +39,10 @@ public interface ISlideManager { void updateNameAndDescription(ISlide slide, SlideForm slideForm); - void setNameAsDefaultLanguage(ISlide slide); + void addSlideDescription(ISlide slide, LocalizedTextForm description); - void setDescriptionAsDefaultLanguage(ISlide slide); + void addSlideName(ISlide slide, LocalizedTextForm name); - void addSlideDescription(ISlide slide, List descriptions); - - void addSlideName(ISlide slide, List names); - SlideForm getSlideForm(String slideId); - SlideForm createNewSlideForm(ISlide slide); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 32825a832..eb95a2967 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -117,8 +117,6 @@ public void updateBranchingPoint(IBranchingPoint branchingPoint, List ed public ISlide getSlide(String slideId) { Optional slide = slideRepo.findById(slideId); if (slide.isPresent()) { - setDescriptionAsDefaultLanguage(slide.get()); - setNameAsDefaultLanguage(slide.get()); return slide.get(); } return null; @@ -191,8 +189,17 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc @Override public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { - addSlideName(slide, slideForm.getNames()); - addSlideDescription(slide, slideForm.getDescriptions()); + slide.setName(slideForm.getDefaultName().getText()); + slide.setDescription(slideForm.getDefaultDescription().getText()); + addSlideName(slide,slideForm.getDefaultName()); + addSlideDescription(slide,slideForm.getDefaultDescription()); + + for(LocalizedTextForm title:slideForm.getNames()) { + addSlideName(slide,title); + } + for(LocalizedTextForm text:slideForm.getDescriptions()) { + addSlideDescription(slide,text); + } } /** @@ -201,27 +208,21 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { * @param names */ @Override - public void addSlideName(ISlide slide, List names) { - if(!CollectionUtils.isEmpty(names)) { - for(LocalizedTextForm name : names ) { - - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(name.getText()); + public void addSlideName(ISlide slide, LocalizedTextForm name) { + if(name!=null) { + LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(name.getText()); } - - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - - localizedText = new LocalizedText(exhibitionLanguage, name.getText()); - slide.getSlideNames().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, name.getText()); + slide.getSlideNames().add(localizedText); + localizedText.setTargetSlide(slide); } - } } } - setNameAsDefaultLanguage(slide); } /** @@ -230,124 +231,31 @@ public void addSlideName(ISlide slide, List names) { * @param descriptions */ @Override - public void addSlideDescription(ISlide slide, List descriptions) { - if(!CollectionUtils.isEmpty(descriptions)) { - for(LocalizedTextForm description : descriptions ) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); + public void addSlideDescription(ISlide slide, LocalizedTextForm description) { + if(description!=null) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); } - - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, description.getText()); - slide.getSlideDescriptions().add(localizedText); - exhibitionLanguage.getLocalizedTexts().add(localizedText); + else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); + slide.getSlideDescriptions().add(newLocalizedText); + newLocalizedText.setTargetSlide(slide); } - } } - } - setDescriptionAsDefaultLanguage(slide); + } } - @Override - public void setNameAsDefaultLanguage(ISlide slide) { - String defaultSlideName = slide.getSlideNames().stream() - .filter(title -> Boolean.TRUE.equals(title.getExhibitionLanguage().isDefault())) - .map(ILocalizedText::getText) - .findAny().orElse(slide.getName()) ; - slide.setName(defaultSlideName); - - } - - @Override - public void setDescriptionAsDefaultLanguage(ISlide slide) { - String defaultSlideDescription = slide.getSlideDescriptions().stream() - .filter(description -> Boolean.TRUE.equals(description.getExhibitionLanguage().isDefault())) - .map(ILocalizedText::getText) - .findAny().orElse(slide.getDescription()); - slide.setDescription(defaultSlideDescription); - - } @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); - SlideForm slideForm = createNewSlideForm(slide); + SlideForm slideForm = slideFactory.createNewSlideForm(slide); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); return slideForm; } - - /** - * Creates Localized slide title object for form - * - * @param slide - * @param language - * @return - */ - - private LocalizedTextForm createLocalizedNameForm(ISlide slide, IExhibitionLanguage language) { - LocalizedTextForm localizedTitleForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); - if(slide!=null) { - ILocalizedText title = slide.getSlideNames().stream() - .filter(name -> StringUtils.equals(language.getId(), name.getExhibitionLanguage().getId())).findAny().orElse(null); - if(title != null) { - localizedTitleForm.setText(title.getText()); - localizedTitleForm.setLocalisedTextId(title.getId()); - } - } - localizedTitleForm.setExhibitionLanguageId(language.getId()); - localizedTitleForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedTitleForm; - } - - /** - * - * Creates Localized slide description object for form - * @param slide - * @param language - * @return - */ - - private LocalizedTextForm createLocalizedDescriptionForm(ISlide slide, IExhibitionLanguage language) { - LocalizedTextForm localizedDescriptionForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel()); - if(slide!=null) { - ILocalizedText text = slide.getSlideDescriptions().stream() - .filter(description -> StringUtils.equals(language.getId(), description.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(text != null) { - localizedDescriptionForm.setText(text.getText()); - localizedDescriptionForm.setLocalisedTextId(text.getId()); - } - } - localizedDescriptionForm.setExhibitionLanguageId(language.getId()); - localizedDescriptionForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedDescriptionForm; - } - - /** - * - * Creates new slide form object - * @param slide - * @return - */ - @Override - public SlideForm createNewSlideForm(ISlide slide) { - SlideForm slideForm = new SlideForm(); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibtion); - slideForm.getNames().add(createLocalizedNameForm(slide, defaultLanguage)); - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, defaultLanguage)); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - slideForm.getNames().add(createLocalizedNameForm(slide, language)); - slideForm.getDescriptions().add(createLocalizedDescriptionForm(slide, language)); - } - }); - return slideForm; - } } \ No newline at end of file From f9ccec2cc48037cd164d8a56e19e8ec178e12e2f Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Wed, 28 Jun 2023 16:01:53 -0700 Subject: [PATCH 152/191] [story/VSPC-214] Updated manager class --- .../vspace/web/staff/AddSlideController.java | 10 +++--- .../vspace/web/staff/EditSlideController.java | 5 --- .../views/staff/modules/slides/add.html | 34 +++++++++++++------ 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index adf35cab9..dd6927217 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import edu.asu.diging.vspace.core.factory.ISlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoiceBlock; import edu.asu.diging.vspace.core.model.IExhibition; @@ -37,17 +38,16 @@ public class AddSlideController { @Autowired private IExhibitionManager exhibitionManager; + + @Autowired + private ISlideFactory slideFactory; @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - model.addAttribute("slide", slideManager.createNewSlideForm(null)); + model.addAttribute("slide", slideFactory.createNewSlideForm(null)); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); - return "staff/modules/slides/add"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java index d95d7d499..4613dfff4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java @@ -42,8 +42,6 @@ public ResponseEntity saveDescription(@RequestParam("description") Strin @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); slide.setDescription(description); - slideManager.setDescriptionAsDefaultLanguage(slide); - slideManager.updateSlide((Slide) slide); return new ResponseEntity(HttpStatus.OK); } @@ -53,7 +51,6 @@ public ResponseEntity saveTitle(@RequestParam("title") String title, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); slide.setName(title); - slideManager.setNameAsDefaultLanguage(slide); slideManager.updateSlide((Slide) slide); return new ResponseEntity(HttpStatus.OK); } @@ -76,8 +73,6 @@ public String show(Model model, @PathVariable("moduleId") String moduleId, @Path model.addAttribute("slideId", slideId); model.addAttribute("moduleId", moduleId); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - model.addAttribute("languageObjectList" , startExhibtion.getLanguages()); return "staff/modules/slides/edit"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html index 82d4ecde6..6a1eac662 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/add.html @@ -114,15 +114,31 @@

Add new Slide

- + -
-
+ +
+
+ +
-
+
+
+

[[${slide.defaultName.exhibitionLanguageLabel}]]

+ + + + + + + + + +
+

[[${title.exhibitionLanguageLabel}]]

@@ -135,14 +151,12 @@

Add new Slide

- +
- - -
-
-
+
+
+
From 1017c9a96b67372a10011660efe39db3d5b19d16 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 29 Jun 2023 16:28:16 -0700 Subject: [PATCH 153/191] [story/VSPC-214] edit slide updation --- .../vspace/web/staff/AddSlideController.java | 4 ++- .../views/staff/modules/slides/edit.html | 27 ++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index dd6927217..3b2fd0816 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -18,6 +18,7 @@ import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; +import edu.asu.diging.vspace.core.model.impl.Slide; import edu.asu.diging.vspace.core.services.IContentBlockManager; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IModuleManager; @@ -45,7 +46,8 @@ public class AddSlideController { @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - model.addAttribute("slide", slideFactory.createNewSlideForm(null)); + ISlide slide=new Slide(); + model.addAttribute("slide", slideFactory.createNewSlideForm(slide)); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); return "staff/modules/slides/add"; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index f519e649e..1bd752a29 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -118,12 +118,27 @@

Edit Slide: [[${slideForm.name}]]

th:object="${slideForm}" enctype="multipart/form-data">
-
+
+ +
-
+
+
+

[[${slideForm.defaultName.exhibitionLanguageLabel}]]

+ + + + + + + + + +
+

[[${title.exhibitionLanguageLabel}]]

@@ -136,12 +151,12 @@

Edit Slide: [[${slideForm.name}]]

- +
-
+
-
-
+
+
From a0e2c24ca4d91f89c72ed9eae1334b9f1077a056 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 30 Jun 2023 16:23:29 -0700 Subject: [PATCH 154/191] [story/VSPC-214] JPA system error resolved --- .../diging/vspace/core/factory/ISlideFactory.java | 2 +- .../vspace/core/factory/impl/SlideFactory.java | 13 +++++-------- .../vspace/core/model/impl/LocalizedText.java | 4 ---- .../vspace/web/staff/EditSlideController.java | 4 ++-- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java index ce2a69052..8ec23bd7f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java @@ -10,6 +10,6 @@ public interface ISlideFactory { ISlide createSlide(IModule module, SlideForm form, SlideType type); - SlideForm createNewSlideForm(ISlide space); + SlideForm createNewSlideForm(ISlide slide); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java index c0637d5ab..afa0b2f79 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java @@ -31,9 +31,6 @@ public class SlideFactory implements ISlideFactory { @Autowired private IChoiceFactory choiceFactory; - @Autowired - private SlideManager slideManager; - @Autowired private IExhibitionManager exhibitionManager; @@ -98,17 +95,17 @@ public SlideForm createNewSlideForm(ISlide slide) { */ private LocalizedTextForm createLocalizedTextForm(ISlide slide, IExhibitionLanguage language, List localizedTexts) { - LocalizedTextForm localizedSpaceForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + LocalizedTextForm localizedSlideForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); ILocalizedText slideText = localizedTexts.stream() .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); if(slideText != null) { - localizedSpaceForm.setText(slideText.getText()); - localizedSpaceForm.setLocalisedTextId( slideText.getId()); + localizedSlideForm.setText(slideText.getText()); + localizedSlideForm.setLocalisedTextId( slideText.getId()); } - localizedSpaceForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedSpaceForm; + localizedSlideForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedSlideForm; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 298b9d6ef..97f2f50ee 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -74,8 +74,4 @@ public void setTargetSlide(ISlide targetSlide) { this.targetSlide = targetSlide; } - - - - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java index 4613dfff4..3073a2d82 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java @@ -79,8 +79,8 @@ public String show(Model model, @PathVariable("moduleId") String moduleId, @Path @RequestMapping(value="/staff/module/{moduleId}/slide/{slideId}/edit", method=RequestMethod.POST) public String save(@ModelAttribute SlideForm slideForm, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); - slide.setName(slideForm.getName()); - slide.setDescription(slideForm.getDescription()); + slide.setName(slideForm.getDefaultName().getText()); + slide.setDescription(slideForm.getDefaultName().getText()); SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); slideManager.updateNameAndDescription(slide, slideForm); if(type.equals(SlideType.BRANCHING_POINT)) { From ba71de462da37ea2d5fded76b810be8fde83358d Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Mon, 3 Jul 2023 16:21:47 -0700 Subject: [PATCH 155/191] [story/VSPC-214] LocalizedText Deletion exception --- .../ExhibitionLanguageDeletionException.java | 29 +++++++ .../core/services/IExhibitionManager.java | 9 ++- .../core/services/impl/ExhibitionManager.java | 80 +++++++++++++++---- 3 files changed, 102 insertions(+), 16 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java new file mode 100644 index 000000000..45394f526 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/ExhibitionLanguageDeletionException.java @@ -0,0 +1,29 @@ +package edu.asu.diging.vspace.core.exception; + +public class ExhibitionLanguageDeletionException extends Exception{ + + private static final long serialVersionUID = 1L; + + public ExhibitionLanguageDeletionException() { + super(); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause, boolean enableSuppression, + boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public ExhibitionLanguageDeletionException(String message, Throwable cause) { + super(message, cause); + } + + public ExhibitionLanguageDeletionException(String message) { + super(message); + } + + public ExhibitionLanguageDeletionException(Throwable cause) { + super(cause); + } + + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 256c24a1e..b5d6d514f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -2,9 +2,11 @@ import java.util.List; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; /* * (non-Javadoc) @@ -35,8 +37,11 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException;; - IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion); + boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); + + void deleteEmptyLocalizedTexts(List emptyLocalizedTexts); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 7ac6759ad..482f4c637 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -9,8 +9,6 @@ import javax.transaction.Transactional; import org.apache.commons.collections.CollectionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -18,12 +16,20 @@ import edu.asu.diging.vspace.config.ConfigConstants; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ISlide; +import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.Space; +import edu.asu.diging.vspace.core.model.impl.VSpaceElement; import edu.asu.diging.vspace.core.services.IExhibitionManager; @Transactional @@ -38,6 +44,9 @@ public class ExhibitionManager implements IExhibitionManager { @Autowired private ExhibitionFactory exhibitFactory; + + @Autowired + private LocalizedTextRepository localizedTextRepo; /* * (non-Javadoc) @@ -99,7 +108,7 @@ public IExhibition getStartExhibition() { * @throws LanguageListConfigurationNotFoundException */ @Override - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws ExhibitionLanguageDeletionException{ if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { throw new LanguageListConfigurationNotFoundException("Exhibition Language Configuration not found"); } @@ -107,9 +116,9 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(CollectionUtils.isEmpty(codes) ) { return; } - + // Adds defaultLanguage to codes list if not already exists. - if(!StringUtils.isEmpty(defaultLanguage) && !codes.contains(defaultLanguage)) { + if(StringUtils.hasText(defaultLanguage) && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } @@ -120,9 +129,57 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); }); - // Removes exhibition langauge if unselected. - exhibition.getLanguages().removeAll(exhibition.getLanguages().stream() - .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList())); + // Finds exhibition language if unselected (to be deleted). + List exhibitionLanguageToBeRemoved = exhibition.getLanguages().stream() + .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList()); + + for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { + if(checkIfLocalizedTextsExists(language)) { + throw new ExhibitionLanguageDeletionException() ; + } + + } + exhibition.getLanguages().removeAll(exhibitionLanguageToBeRemoved); + } + + /** + * Return true if given exhibition language has non empty localized texts linked to it + * + */ + @Override + public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { + List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); + List emptyLocalizedTexts = localizedTexts.stream() + .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); + deleteEmptyLocalizedTexts(emptyLocalizedTexts); + + //This returns true if non empty localized texts exist + return localizedTexts.size() > emptyLocalizedTexts.size(); + + } + + /** + * Removes localized texts from parent entities and delete them. + * + */ + @Override + public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { + emptyLocalizedTexts.forEach(localizedText -> { + removeFromSlidePage(localizedText); + + }); + localizedTextRepo.deleteAll(emptyLocalizedTexts); + } + + /** + * Removes localized texts from Exhibition About Page entity + * + * @param localizedText + */ + private void removeFromSlidePage(LocalizedText localizedText) { + ISlide slide = localizedText.getTargetSlide(); + slide.getSlideNames().remove(localizedText); + slide.getSlideDescriptions().remove(localizedText); } @@ -147,9 +204,4 @@ private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map lan return exhibitionLanguage; } - @Override - public IExhibitionLanguage getDefaultLanguage(IExhibition startExhibtion) { - return startExhibtion.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); - } - -} +} \ No newline at end of file From c1cf3690dc8c58fd8d590a3dbfeef2b10ff40ea7 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Wed, 5 Jul 2023 16:26:32 -0700 Subject: [PATCH 156/191] [story/VSPC-214] Exhibition Language Deletion Exception --- .../ExhibitionConfigurationController.java | 119 ++++++++++++++++++ .../services/impl/ExhibitionManagerTest.java | 49 +++++++- 2 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java new file mode 100644 index 000000000..c6e4d2d7f --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -0,0 +1,119 @@ +package edu.asu.diging.vspace.web.staff; + +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +import javax.servlet.http.HttpServletRequest; + +import org.javers.common.collections.Arrays; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springframework.web.servlet.view.RedirectView; + +import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; +import edu.asu.diging.vspace.core.data.SpaceRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; +import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; +import edu.asu.diging.vspace.core.model.ExhibitionModes; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.core.services.ISpaceManager; + +@Controller +public class ExhibitionConfigurationController { + + @Autowired + private SpaceRepository spaceRepo; + + @Autowired + private ISpaceManager spaceManager; + + @Autowired + private IExhibitionManager exhibitManager; + + @Autowired + private ExhibitionFactory exhibitFactory; + + @Autowired + private ExhibitionLanguageConfig exhibitionLanguageConfig; + + public static final String EXH_PREVIEW = "EXH_PREVIEW_"; + + @RequestMapping("/staff/exhibit/config") + public String showExhibitions(Model model) { + // for now we assume there is just one exhibition + IExhibition exhibition = exhibitManager.getStartExhibition(); + if(exhibition==null) { + exhibition = (Exhibition) exhibitFactory.createExhibition(); + } + if(exhibition.getLanguages() != null ) { + model.addAttribute("savedExhibitionLanguages", exhibition.getLanguages() + .stream().map(language -> language.getLabel()).collect(Collectors.toList())); + model.addAttribute("defaultLanguage",exhibition.getLanguages().stream() + .filter(language -> language.isDefault()).findFirst().orElse(null) ); + + } + model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); + model.addAttribute("spacesList", spaceRepo.findAll()); + model.addAttribute("languageList", exhibitionLanguageConfig.getExhibitionLanguageList()); + model.addAttribute("exhibition", exhibition); + return "staff/exhibit/config"; + } + + /** + * exhibitionParam is used when default space of existing exhibition is updated. + * + * @param exhibitionParam + * @param spaceParam + * @param attributes + * @return + * @throws ExhibitionLanguageDeletionException + */ + @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) + public RedirectView createOrUpdateExhibition(HttpServletRequest request, + @RequestParam(required = false, name = "exhibitionParam") String exhibitID, + @RequestParam("spaceParam") String spaceID, @RequestParam("title") String title, + @RequestParam("exhibitMode") ExhibitionModes exhibitMode, + @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, + @RequestParam("exhibitLanguage") List languages, + @RequestParam("defaultExhibitLanguage") String defaultLanguage, + RedirectAttributes attributes) throws IOException { + ISpace startSpace = spaceManager.getSpace(spaceID); + Exhibition exhibition; + if (exhibitID == null || exhibitID.isEmpty()) { + exhibition = (Exhibition) exhibitFactory.createExhibition(); + } else { + exhibition = (Exhibition) exhibitManager.getExhibitionById(exhibitID); + } + exhibition.setStartSpace(startSpace); + exhibition.setTitle(title); + exhibition.setMode(exhibitMode); + try { + exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); + + } catch (ExhibitionLanguageDeletionException e) { + attributes.addAttribute("alertType", "failure"); + attributes.addAttribute("message", "Could not delete the Exhibition Language as it has localized data associated to it."); + attributes.addAttribute("showAlert", "true"); + return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); + } + + if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { + + exhibition.setCustomMessage(customMessage); + } + exhibition = (Exhibition) exhibitManager.storeExhibition(exhibition); + attributes.addAttribute("alertType", "success"); + attributes.addAttribute("message", "Successfully Saved!"); + attributes.addAttribute("showAlert", "true"); + return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); + } +} \ No newline at end of file diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java index 92a97d444..f53bbca27 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManagerTest.java @@ -23,8 +23,10 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @@ -68,7 +70,7 @@ public void test_getExhibitionById_success() { @Test - public void test_updateExhibitionLanguages_success() { + public void test_updateExhibitionLanguages_success() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -93,7 +95,7 @@ public void test_updateExhibitionLanguages_success() { } @Test - public void test_updateExhibitionLanguages_duplicates() { + public void test_updateExhibitionLanguages_duplicates() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); //Exhibition already consists of 2 languages @@ -129,7 +131,7 @@ public void test_updateExhibitionLanguages_duplicates() { } @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -154,7 +156,7 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { } @Test - public void test_updateExhibitionLanguages_defaultLanguage() { + public void test_updateExhibitionLanguages_defaultLanguage() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -209,7 +211,7 @@ public void test_updateExhibitionLanguages_whenLanguageListConfigurationNotFound } @Test - public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { + public void test_updateExhibitionLanguages_whenLanguageIsUnselected() throws ExhibitionLanguageDeletionException { Exhibition exhibition = new Exhibition(); List mappedLanguages= new ArrayList(); @@ -239,4 +241,41 @@ public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { } + + @Test + public void test_updateExhibitionLanguages_whenLanguageCouldNotBeDeleted() throws ExhibitionLanguageDeletionException { + Exhibition exhibition = new Exhibition(); + + List mappedLanguages= new ArrayList(); + + Map language1 = new LinkedHashMap(); + language1.put("code", "en"); + language1.put("label", "English"); + Map language2 = new LinkedHashMap(); + language2.put("code", "aa"); + language2.put("label", "Afar"); + mappedLanguages.add(language1); + mappedLanguages.add(language2); + + + List languages= new ArrayList() ; + languages.add("en"); + languages.add("aa"); + + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + IExhibitionLanguage language = new ExhibitionLanguage(); + language.setLabel("English"); + + + when(serviceToTest.checkIfLocalizedTextsExists(language)).thenReturn(false); + + serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa"); + assertEquals(exhibition.getLanguages().size(),2); + + + languages.remove("en"); + Assert.assertThrows(ExhibitionLanguageDeletionException.class, + () -> serviceToTest.updateExhibitionLanguages(exhibition, languages, "aa")); + + } } From 4c3fd4237c2419a654fed850bbee3b0f7325c1e9 Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Thu, 6 Jul 2023 16:18:12 -0700 Subject: [PATCH 157/191] [story/VSPC-214] slide factory test cases --- .../core/services/impl/SlideFactoryTest.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java new file mode 100644 index 000000000..585ea0e4f --- /dev/null +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java @@ -0,0 +1,71 @@ +package edu.asu.diging.vspace.core.services.impl; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import edu.asu.diging.vspace.core.data.SlideRepository; +import edu.asu.diging.vspace.core.factory.impl.SlideFactory; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.web.staff.forms.SlideForm; + +public class SlideFactoryTest { + + @Mock + private SlideRepository slideRepo; + + @Mock + private ExhibitionManager exhibitionManager; + + @InjectMocks + private SlideFactory serviceToTest; + + + @Test + public void test_createNewSlideForm_success() { + Exhibition exhibition = new Exhibition(); + List languageList = new ArrayList(); + ExhibitionLanguage language2 = new ExhibitionLanguage(); + + + language2.setLabel("English"); + languageList.add(language2); + exhibition.setLanguages(languageList); + + List spacePageList = new ArrayList(); + Slide slidePage = new Slide(); + LocalizedText locText1 = new LocalizedText(); + locText1.setId( "ID1"); + List titleList = new ArrayList(); + titleList.add(new LocalizedText(language2, "title1")); + List slideTextList = new ArrayList(); + slideTextList.add(new LocalizedText( language2, "slide text")); + slidePage.setSlideNames(titleList); + slidePage.setSlideDescriptions(slideTextList); + spacePageList.add(slidePage); + + when(slideRepo.findAll()).thenReturn(spacePageList); + + when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + + SlideForm slideForm = serviceToTest.createNewSlideForm(slidePage); + assertEquals(slideForm.getDescriptions().size(), 1); + + assertEquals(slideForm.getNames().size(), 1); + + assertEquals(slideForm.getDescriptions().get(0).getText(), "slide text"); + + } + +} \ No newline at end of file From 0f6412795cce616272d5a842f829ccdab8f7a94b Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 7 Jul 2023 16:21:16 -0700 Subject: [PATCH 158/191] [story/VSPC-214] test cases --- .../vspace/core/model/impl/LocalizedText.java | 12 +++++ .../core/services/impl/SlideFactoryTest.java | 6 +-- .../core/services/impl/SlideManagerTest.java | 48 ++++--------------- 3 files changed, 24 insertions(+), 42 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 97f2f50ee..ea7892db5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -30,6 +30,9 @@ public class LocalizedText implements ILocalizedText { @ManyToOne( targetEntity = Slide.class) ISlide targetSlide; + + @ManyToOne( targetEntity = ExhibitionAboutPage.class) + ExhibitionAboutPage targetExhibitionAboutPage; private String text; @@ -74,4 +77,13 @@ public void setTargetSlide(ISlide targetSlide) { this.targetSlide = targetSlide; } + public ExhibitionAboutPage getTargetExhibitionAboutPage() { + return targetExhibitionAboutPage; + } + + public void setTargetExhibitionAboutPage(ExhibitionAboutPage targetExhibitionAboutPage) { + this.targetExhibitionAboutPage = targetExhibitionAboutPage; + } + + } \ No newline at end of file diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java index 585ea0e4f..481b65ab2 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java @@ -43,7 +43,7 @@ public void test_createNewSlideForm_success() { languageList.add(language2); exhibition.setLanguages(languageList); - List spacePageList = new ArrayList(); + List slidePageList = new ArrayList(); Slide slidePage = new Slide(); LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); @@ -53,9 +53,9 @@ public void test_createNewSlideForm_success() { slideTextList.add(new LocalizedText( language2, "slide text")); slidePage.setSlideNames(titleList); slidePage.setSlideDescriptions(slideTextList); - spacePageList.add(slidePage); + slidePageList.add(slidePage); - when(slideRepo.findAll()).thenReturn(spacePageList); + when(slideRepo.findAll()).thenReturn(slidePageList); when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java index 3ba201b75..50d7e9b51 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java @@ -21,6 +21,7 @@ import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.exception.SlideDoesNotExistException; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; @@ -216,8 +217,12 @@ public void test_createSlide_success() { IModule module = moduleManager.getModule(moduleId); SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); - - slideManagerToTest.createSlide(module, slideForm, type); + + Slide slide = new Slide(); + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); + when(slideRepo.save(slide)).thenReturn(slide); + ISlide savedslide = slideManagerToTest.createSlide(module, slideForm, type); assertEquals(locText1.getText(), "title"); assertEquals(locText2.getText(), "slide text"); } @@ -242,6 +247,8 @@ public void test_createSlide_failure() { LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); + Exhibition exhibition = new Exhibition(); + when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.empty()); @@ -254,41 +261,4 @@ public void test_createSlide_failure() { assertEquals(locText1.getText(), null); } - - @Test - public void test_createAboutPageForm_success() { - Exhibition exhibition = new Exhibition(); - List languageList = new ArrayList(); - ExhibitionLanguage language2 = new ExhibitionLanguage(); - - - language2.setLabel("English"); - languageList.add(language2); - exhibition.setLanguages(languageList); - - List slidePageList = new ArrayList(); - Slide slidePage = new Slide(); - LocalizedText locText1 = new LocalizedText(); - locText1.setId( "ID1"); - List titleList = new ArrayList(); - titleList.add(new LocalizedText(language2, "title1")); - List slideTextList = new ArrayList(); - slideTextList.add(new LocalizedText( language2, "about text")); - slidePage.setSlideNames(titleList); - slidePage.setSlideDescriptions(slideTextList); - slidePageList.add(slidePage); - - when(slideRepo.findAll()).thenReturn(slidePageList); - - when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); - - SlideForm slideForm = slideManagerToTest.createNewSlideForm(slidePage); - assertEquals(slideForm.getDescriptions().size(), 1); - - assertEquals(slideForm.getNames().size(), 1); - - assertEquals(slideForm.getDescriptions().get(0).getText(), "slide text"); - - } - } From b168dab8a142a65ba17276d1030a799862b677fc Mon Sep 17 00:00:00 2001 From: swetalina-prusty25 Date: Fri, 7 Jul 2023 16:27:54 -0700 Subject: [PATCH 159/191] [story/VSPC-214] code factor --- .../diging/vspace/core/services/IExhibitionManager.java | 2 +- .../diging/vspace/core/services/impl/SlideManager.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index b5d6d514f..6e5189e20 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -37,7 +37,7 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException;; + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws ExhibitionLanguageDeletionException; boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index eb95a2967..767210541 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -213,14 +213,14 @@ public void addSlideName(ISlide slide, LocalizedTextForm name) { LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); - } + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); localizedText.setTargetSlide(slide); - } + } } } } @@ -236,14 +236,14 @@ public void addSlideDescription(ISlide slide, LocalizedTextForm description) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(description.getText()); - } + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); slide.getSlideDescriptions().add(newLocalizedText); newLocalizedText.setTargetSlide(slide); - } + } } } } From ae42bc2abb25ac70ca9a0e5f40d720639185aae0 Mon Sep 17 00:00:00 2001 From: pkharge Date: Thu, 31 Aug 2023 13:32:25 -0700 Subject: [PATCH 160/191] [VSPC-232-215-214-multiple-languages] trying to remove exhibition about page from localized text --- vspace/pom.xml | 8 ++++---- .../vspace/core/services/impl/ExhibitionManager.java | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/vspace/pom.xml b/vspace/pom.xml index 6bade677b..a0f20312d 100644 --- a/vspace/pom.xml +++ b/vspace/pom.xml @@ -22,10 +22,10 @@ debug com.mysql.jdbc.Driver - jdbc:mysql://localhost:3306/vspace?serverTimezone=UTC&useEncoding=true - vspace - vspace - + jdbc:mysql://localhost:3306/vspace?serverTimezone=UTC&useEncoding=true&useSSL=false + root + + /Users/prachikharge/newfolder/virtual-spaces-2.0/vspace/uploads diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 82704fe31..c0cdc8f80 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -161,10 +161,11 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { */ @Override public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { - emptyLocalizedTexts.forEach(localizedText -> { - removeFromExhibitionAboutPage(localizedText); - - }); +// emptyLocalizedTexts.forEach(localizedText -> { +// localizedTextRepo.delete(localizedText); +//// removeFromExhibitionAboutPage(localizedText); +// +// }); localizedTextRepo.deleteAll(emptyLocalizedTexts); } From 669b72b4b0188ffb0261e5261d66cb1f4cfd5b3b Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 5 Sep 2023 15:58:00 -0700 Subject: [PATCH 161/191] [VSPC-232-214-215-multiple-languages] removed target from localized text --- .../core/model/impl/ExhibitionAboutPage.java | 7 +++---- .../vspace/core/model/impl/LocalizedText.java | 12 ------------ .../impl/ExhibitionAboutPageManager.java | 4 ++-- .../core/services/impl/ExhibitionManager.java | 16 ---------------- 4 files changed, 5 insertions(+), 34 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 36dc58852..c49a71ef3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -43,14 +43,13 @@ public class ExhibitionAboutPage extends VSpaceElement { @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_titles", - joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), - inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id") + ) private List localizedTitles = new ArrayList(); @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_descriptions", - joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id"), - inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") + joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id") ) private List localizedDescriptions = new ArrayList(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index b6844dcbf..73d6a5b0d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -26,9 +26,6 @@ public class LocalizedText implements ILocalizedText { @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - - @ManyToOne( targetEntity = ExhibitionAboutPage.class) - ExhibitionAboutPage targetExhibitionAboutPage; private String text; @@ -65,14 +62,5 @@ public void setText(String text) { this.text = text; } - public ExhibitionAboutPage getTargetExhibitionAboutPage() { - return targetExhibitionAboutPage; - } - - public void setTargetExhibitionAboutPage(ExhibitionAboutPage targetExhibitionAboutPage) { - this.targetExhibitionAboutPage = targetExhibitionAboutPage; - } - - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 007ac381a..bd9ad30d2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -114,7 +114,7 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); - localizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); +// localizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); } } @@ -137,7 +137,7 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); - newLocalizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); +// newLocalizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index c0cdc8f80..8f4587841 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -161,25 +161,9 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { */ @Override public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { -// emptyLocalizedTexts.forEach(localizedText -> { -// localizedTextRepo.delete(localizedText); -//// removeFromExhibitionAboutPage(localizedText); -// -// }); localizedTextRepo.deleteAll(emptyLocalizedTexts); } - /** - * Removes localized texts from Exhibition About Page entity - * - * @param localizedText - */ - private void removeFromExhibitionAboutPage(LocalizedText localizedText) { - ExhibitionAboutPage exhibitionAboutPage = localizedText.getTargetExhibitionAboutPage(); - exhibitionAboutPage.getExhibitionTextDescriptions().remove(localizedText); - exhibitionAboutPage.getExhibitionTitles().remove(localizedText); - - } /** * Adds exhibitionLanguage to exhibition if not already present. If already present, returns exhibitionLanguage from the exhibition. From 0cf01e5ea84826b4db37fa7cc3637c9e1bb552a9 Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 5 Sep 2023 16:25:36 -0700 Subject: [PATCH 162/191] [VSPC-232-214-215-multiple-languages] remove target slide from localized text --- .../vspace/core/model/impl/LocalizedText.java | 24 ++++++--------- .../core/services/impl/ExhibitionManager.java | 30 +++++++++---------- .../core/services/impl/SlideManager.java | 4 +-- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 8a4c70de9..7bdee3d8e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,20 +1,16 @@ package edu.asu.diging.vspace.core.model.impl; import javax.persistence.CascadeType; import javax.persistence.Entity; -import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; - import edu.asu.diging.vspace.core.model.ISlide; -import edu.asu.diging.vspace.core.model.IVSpaceElement; @Entity @@ -29,11 +25,9 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - @ManyToOne( targetEntity = Slide.class) - ISlide targetSlide; +// @ManyToOne( targetEntity = Slide.class) +// ISlide targetSlide; -// @ManyToOne( targetEntity = ExhibitionAboutPage.class) -// ExhibitionAboutPage targetExhibitionAboutPage; private String text; @@ -70,13 +64,13 @@ public void setText(String text) { this.text = text; } - public ISlide getTargetSlide() { - return targetSlide; - } - - public void setTargetSlide(ISlide targetSlide) { - this.targetSlide = targetSlide; - } +// public ISlide getTargetSlide() { +// return targetSlide; +// } +// +// public void setTargetSlide(ISlide targetSlide) { +// this.targetSlide = targetSlide; +// } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 27f338e8e..4b19d1064 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -166,24 +166,24 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { */ @Override public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { - emptyLocalizedTexts.forEach(localizedText -> { - removeFromSlidePage(localizedText); - - }); +// emptyLocalizedTexts.forEach(localizedText -> { +// removeFromSlidePage(localizedText); +// +// }); localizedTextRepo.deleteAll(emptyLocalizedTexts); } - /** - * Removes localized texts from Exhibition About Page entity - * - * @param localizedText - */ - private void removeFromSlidePage(LocalizedText localizedText) { - ISlide slide = localizedText.getTargetSlide(); - slide.getSlideNames().remove(localizedText); - slide.getSlideDescriptions().remove(localizedText); - - } +// /** +// * Removes localized texts from Exhibition About Page entity +// * +// * @param localizedText +// */ +// private void removeFromSlidePage(LocalizedText localizedText) { +// ISlide slide = localizedText.getTargetSlide(); +// slide.getSlideNames().remove(localizedText); +// slide.getSlideDescriptions().remove(localizedText); +// +// } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 767210541..7460a6432 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -219,7 +219,7 @@ public void addSlideName(ISlide slide, LocalizedTextForm name) { if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); - localizedText.setTargetSlide(slide); +// localizedText.setTargetSlide(slide); } } } @@ -242,7 +242,7 @@ public void addSlideDescription(ISlide slide, LocalizedTextForm description) { if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); slide.getSlideDescriptions().add(newLocalizedText); - newLocalizedText.setTargetSlide(slide); +// newLocalizedText.setTargetSlide(slide); } } } From a8e823af6ceb2194eca45c15fb29312c324cb081 Mon Sep 17 00:00:00 2001 From: pkharge Date: Tue, 12 Sep 2023 16:26:03 -0700 Subject: [PATCH 163/191] [VSPC-232-214-215] addressed review comment for 215 --- .../vspace/core/model/impl/LocalizedText.java | 21 ++----------- .../core/services/impl/ExhibitionManager.java | 30 ------------------- .../core/services/impl/SpaceManager.java | 11 +++---- 3 files changed, 6 insertions(+), 56 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index fb6f94dd7..b9bdd59e8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -34,8 +34,8 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; - @ManyToOne( targetEntity = Space.class) - ISpace targetSpace; +// @ManyToOne( targetEntity = Space.class) +// ISpace targetSpace; private String text; @@ -73,21 +73,4 @@ public void setText(String text) { this.text = text; } -// public ISlide getTargetSlide() { -// return targetSlide; -// } -// -// public void setTargetSlide(ISlide targetSlide) { -// this.targetSlide = targetSlide; -// } - - - public ISpace getTargetSpace() { - return targetSpace; - } - - public void setTargetSpace(ISpace space) { - this.targetSpace = space; - } - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 7c611a5f7..9abb8f0f4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -160,39 +160,9 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { */ @Override public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { - emptyLocalizedTexts.forEach(localizedText -> { - removeFromSpacePage(localizedText); - - }); localizedTextRepo.deleteAll(emptyLocalizedTexts); } - /** - * Removes localized texts from Exhibition About Page entity - * - * @param localizedText - */ - private void removeFromSpacePage(LocalizedText localizedText) { - ISpace space = localizedText.getTargetSpace(); - space.getSpaceNames().remove(localizedText); - space.getSpaceDescriptions().remove(localizedText); - - } - - - -// /** -// * Removes localized texts from Exhibition About Page entity -// * -// * @param localizedText -// */ -// private void removeFromSlidePage(LocalizedText localizedText) { -// ISlide slide = localizedText.getTargetSlide(); -// slide.getSlideNames().remove(localizedText); -// slide.getSlideDescriptions().remove(localizedText); -// -// } - /** diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index cbd46e336..f3cd63736 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -346,17 +346,16 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); - } + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); space.getSpaceNames().add(localizedText); - localizedText.setTargetSpace(space); - } } } } + } /** * Adds description to spaceDescription list. @@ -369,14 +368,12 @@ public void addSpaceDescription(ISpace space, LocalizedTextForm description) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(description.getText()); - } - else { + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); space.getSpaceDescriptions().add(newLocalizedText); - newLocalizedText.setTargetSpace(space); - } + } } } } From 6a770a0acba20dc3a15840b6fffcb07fc1c297cb Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 13 Sep 2023 12:38:38 -0700 Subject: [PATCH 164/191] [VSPC-232-214-215] localized text will not get saved if empty --- .../impl/ExhibitionAboutPageManager.java | 16 ++++++---------- .../vspace/core/services/impl/SlideManager.java | 12 ++++-------- .../vspace/core/services/impl/SpaceManager.java | 4 ++-- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index eef0f9d5a..a894f063d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -103,23 +103,21 @@ public ExhibitionAboutPage getExhibitionAboutPage() { * exhibitionTitles list for each user selected Exhibition Language. */ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhibitionAboutPage) { - if(title!=null) { - + if(title!=null && !StringUtils.isEmpty(title.getText())) { + LocalizedText localizedText = localizedTextRepo.findById(title.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(title.getText()); } else { - + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(title.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); -// localizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); - } } - + } } @@ -129,7 +127,7 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib * exhibitionTextDescriptions list for each user selected Exhibition Language. */ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionAboutPage exhibitionAboutPage) { - if(aboutPageText!=null) { + if(aboutPageText!=null && !StringUtils.isEmpty(aboutPageText.getText())) { LocalizedText localizedText = localizedTextRepo.findById(aboutPageText.getLocalisedTextId()).orElse(null); if(localizedText != null) { @@ -138,10 +136,8 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); -// newLocalizedText.setTargetExhibitionAboutPage(exhibitionAboutPage); - exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); - + } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 7460a6432..af36798d2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -209,17 +209,15 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { */ @Override public void addSlideName(ISlide slide, LocalizedTextForm name) { - if(name!=null) { + if(name!=null && !StringUtils.isEmpty(name.getText())) { LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); - } - else { + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); -// localizedText.setTargetSlide(slide); } } } @@ -232,17 +230,15 @@ public void addSlideName(ISlide slide, LocalizedTextForm name) { */ @Override public void addSlideDescription(ISlide slide, LocalizedTextForm description) { - if(description!=null) { + if(description!=null && !StringUtils.isEmpty(description.getText())) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(description.getText()); - } - else { + } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); slide.getSlideDescriptions().add(newLocalizedText); -// newLocalizedText.setTargetSlide(slide); } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index f3cd63736..c24a59738 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -342,7 +342,7 @@ public ISpace createSpace(SpaceForm form) { */ @Override public void addSpaceName(ISpace space, LocalizedTextForm name) { - if(name!=null) { + if(name!=null && !StringUtils.isEmpty(name.getText())) { LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(name.getText()); @@ -364,7 +364,7 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { */ @Override public void addSpaceDescription(ISpace space, LocalizedTextForm description) { - if(description!=null) { + if(description!=null && !StringUtils.isEmpty(description.getText())) { LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); if(localizedText != null) { localizedText.setText(description.getText()); From b8c5df000360499a82cb59d3a2add8d42d77e106 Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 13 Sep 2023 12:47:39 -0700 Subject: [PATCH 165/191] [VSPC-232-215-214] pomxml revert --- vspace/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vspace/pom.xml b/vspace/pom.xml index a0f20312d..6bade677b 100644 --- a/vspace/pom.xml +++ b/vspace/pom.xml @@ -22,10 +22,10 @@ debug com.mysql.jdbc.Driver - jdbc:mysql://localhost:3306/vspace?serverTimezone=UTC&useEncoding=true&useSSL=false - root - - /Users/prachikharge/newfolder/virtual-spaces-2.0/vspace/uploads + jdbc:mysql://localhost:3306/vspace?serverTimezone=UTC&useEncoding=true + vspace + vspace + From f0803d56d4f9508a448125c8885bd813825466e2 Mon Sep 17 00:00:00 2001 From: pkharge Date: Wed, 13 Sep 2023 13:14:22 -0700 Subject: [PATCH 166/191] [VSPC-232-214-215] refactor --- .../factory/impl/ExhibitionAboutPageFactory.java | 15 ++++++++++----- .../vspace/core/factory/impl/SlideFactory.java | 3 ++- .../core/model/impl/ExhibitionLanguage.java | 13 ------------- .../vspace/core/model/impl/LocalizedText.java | 16 +++------------- .../impl/ExhibitionAboutPageManager.java | 10 +++++----- .../vspace/core/services/impl/SlideManager.java | 6 ++++-- 6 files changed, 24 insertions(+), 39 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index 1410911e1..44b7c487e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -35,12 +35,16 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - aboutPageForm.setDefaultTitle(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); + aboutPageForm.setDefaultTitle(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, + exhibitionAboutPage.getExhibitionTitles())); + aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, + exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { if(!language.isDefault()) { - aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, language, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, language, exhibitionAboutPage.getExhibitionTextDescriptions())); + aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, language, + exhibitionAboutPage.getExhibitionTitles())); + aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, language, + exhibitionAboutPage.getExhibitionTextDescriptions())); } }); return aboutPageForm; @@ -58,7 +62,8 @@ private LocalizedTextForm createLocalizedTextForm(ExhibitionAboutPage exhibition LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); ILocalizedText aboutPageText = localizedTexts.stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + .filter(exhibitionText -> StringUtils.equals(language.getId(), + exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); if(aboutPageText != null) { localizedAboutTextForm.setText(aboutPageText.getText()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java index afa0b2f79..a4a83f7b2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java @@ -97,7 +97,8 @@ private LocalizedTextForm createLocalizedTextForm(ISlide slide, IExhibitionLangu LocalizedTextForm localizedSlideForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); ILocalizedText slideText = localizedTexts.stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + .filter(exhibitionText -> StringUtils.equals(language.getId(), + exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); if(slideText != null) { localizedSlideForm.setText(slideText.getText()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 852c40f3a..73671d8b1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -33,10 +33,6 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private boolean isDefault; -// @OneToMany(targetEntity = LocalizedText.class) -// private List localizedTexts = new ArrayList(); - - public ExhibitionLanguage() { super(); } @@ -91,15 +87,6 @@ public boolean isDefault() { public void setDefault(boolean isDefault) { this.isDefault = isDefault; } - -// public List getLocalizedTexts() { -// return localizedTexts; -// } -// -// public void setLocalizedTexts(List localizedTexts) { -// this.localizedTexts = localizedTexts; -// } - @Override public int hashCode() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index b9bdd59e8..5493f414b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,29 +1,22 @@ package edu.asu.diging.vspace.core.model.impl; -import javax.persistence.CascadeType; - import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; - - import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ILocalizedText; -import edu.asu.diging.vspace.core.model.ISlide; - -import edu.asu.diging.vspace.core.model.ISpace; - @Entity public class LocalizedText implements ILocalizedText { + + @Id @GeneratedValue(generator = "localized_text_id_generator") @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -34,16 +27,12 @@ public class LocalizedText implements ILocalizedText { @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; -// @ManyToOne( targetEntity = Space.class) -// ISpace targetSpace; - private String text; public LocalizedText() { super(); } - public LocalizedText(ExhibitionLanguage exhibitionLanguage, String text) { super(); this.exhibitionLanguage = exhibitionLanguage; @@ -65,6 +54,7 @@ public ExhibitionLanguage getExhibitionLanguage() { public void setExhibitionLanguage(ExhibitionLanguage exhibitionLanguage) { this.exhibitionLanguage = exhibitionLanguage; } + public String getText() { return text; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index a894f063d..fe2d06f82 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -109,8 +109,8 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib if(localizedText != null) { localizedText.setText(title.getText()); } else { - - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(title.getExhibitionLanguageId()).orElse(null); + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(title.getExhibitionLanguageId()) + .orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, title.getText()); exhibitionAboutPage.getExhibitionTitles().add(localizedText); @@ -133,7 +133,8 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA if(localizedText != null) { localizedText.setText(aboutPageText.getText()); } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()).orElse(null); + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()) + .orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); @@ -143,5 +144,4 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA } } -} - +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index af36798d2..3b656e44b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -214,7 +214,8 @@ public void addSlideName(ISlide slide, LocalizedTextForm name) { if(localizedText != null) { localizedText.setText(name.getText()); } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()) + .orElse(null); if(exhibitionLanguage != null) { localizedText = new LocalizedText(exhibitionLanguage, name.getText()); slide.getSlideNames().add(localizedText); @@ -235,7 +236,8 @@ public void addSlideDescription(ISlide slide, LocalizedTextForm description) { if(localizedText != null) { localizedText.setText(description.getText()); } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()) + .orElse(null); if(exhibitionLanguage != null) { LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); slide.getSlideDescriptions().add(newLocalizedText); From 18e2414974642cc73bedd74b908e03476dc7d978 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Mon, 4 Mar 2024 16:31:21 -0700 Subject: [PATCH 167/191] [VSPC-232-214-215-multiple-languages] Addressed review comments: removed empty spaces, removed unused imports, created new factory classes as suggested. --- .../core/factory/IAboutPageFormFactory.java | 0 .../factory/IExhibitionAboutPageFactory.java | 13 ----- .../vspace/core/factory/ISpaceFactory.java | 5 ++ ...Factory.java => AboutPageFormFactory.java} | 15 +++--- .../core/factory/impl/SlideFactory.java | 2 +- .../core/factory/impl/SpaceFactory.java | 44 +++++++++++++++++ .../vspace/core/model/impl/Exhibition.java | 6 +-- .../core/model/impl/ExhibitionAboutPage.java | 1 - .../vspace/core/model/impl/LocalizedText.java | 5 -- .../diging/vspace/core/model/impl/Slide.java | 5 +- .../diging/vspace/core/model/impl/Space.java | 7 --- .../services/IExhibitionAboutPageManager.java | 3 +- .../vspace/core/services/ISpaceManager.java | 6 +-- .../impl/ExhibitionAboutPageManager.java | 9 +--- .../core/services/impl/SpaceManager.java | 48 ++----------------- .../vspace/web/staff/AddSlideController.java | 15 +----- .../web/staff/DeleteSpaceController.java | 4 +- .../web/staff/DeleteTextBlockController.java | 2 +- .../staff/ExhibitionAboutPageController.java | 4 +- .../ExhibitionConfigurationController.java | 5 ++ .../vspace/web/staff/SpaceController.java | 4 -- .../vspace/web/staff/forms/AboutPageForm.java | 3 +- .../web/staff/forms/LocalizedTextForm.java | 16 +++---- .../vspace/web/staff/forms/SpaceForm.java | 3 +- .../java/ExhibitionAboutPageFactoryTest.java | 4 +- 25 files changed, 90 insertions(+), 139 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java rename vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/{ExhibitionAboutPageFactory.java => AboutPageFormFactory.java} (83%) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java new file mode 100644 index 000000000..e69de29bb diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java deleted file mode 100644 index d04869b9f..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package edu.asu.diging.vspace.core.factory; - -import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; -import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; - -public interface IExhibitionAboutPageFactory { - - /** - * Creates About Page form object - */ - AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage); - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index e22f6bc63..de87dbf0d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -1,10 +1,15 @@ package edu.asu.diging.vspace.core.factory; import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public interface ISpaceFactory { SpaceForm createNewSpaceForm(ISpace space); + + public ISpace createSpace(SpaceForm form); + + public void addSpaceDescription(ISpace space, LocalizedTextForm description); } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java similarity index 83% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java index 44b7c487e..75c65492d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import org.thymeleaf.util.StringUtils; -import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.factory.IAboutPageFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; @@ -16,7 +16,7 @@ import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @Component -public class ExhibitionAboutPageFactory implements IExhibitionAboutPageFactory{ +public class AboutPageFormFactory implements IAboutPageFormFactory{ @@ -35,15 +35,15 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - aboutPageForm.setDefaultTitle(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, + aboutPageForm.setDefaultTitle(createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm(exhibitionAboutPage, defaultLanguage, + aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { if(!language.isDefault()) { - aboutPageForm.getTitles().add(createLocalizedTextForm(exhibitionAboutPage, language, + aboutPageForm.getTitles().add(createLocalizedTextForm( language, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(exhibitionAboutPage, language, + aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(language, exhibitionAboutPage.getExhibitionTextDescriptions())); } }); @@ -57,8 +57,7 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage * @param localizedTexts * @return */ - private LocalizedTextForm createLocalizedTextForm(ExhibitionAboutPage exhibitionAboutPage, - IExhibitionLanguage language, List localizedTexts) { + private LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, List localizedTexts) { LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); ILocalizedText aboutPageText = localizedTexts.stream() diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java index a4a83f7b2..632dd7b9e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.factory.impl; import java.util.ArrayList; + import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +22,6 @@ import edu.asu.diging.vspace.core.model.impl.BranchingPoint; import edu.asu.diging.vspace.core.model.impl.Slide; import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.core.services.impl.SlideManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index 10a719af3..abb702a82 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -2,16 +2,21 @@ import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.thymeleaf.util.StringUtils; +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @@ -23,6 +28,15 @@ public class SpaceFactory implements ISpaceFactory { @Autowired private IExhibitionManager exhibitionManager; + @Autowired + private SpaceRepository spaceRepo; + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepository; + + @Autowired + private LocalizedTextRepository localizedTextRepo; + /** * * Creates new space form object @@ -51,6 +65,36 @@ public SpaceForm createNewSpaceForm(ISpace space) { return spaceForm; } + + @Override + public ISpace createSpace(SpaceForm form) { + ISpace space = new Space(); + space.setName(form.getName()); + space.setDescription(form.getDescription()); + return spaceRepo.save((Space) space); + } + + /** + * Adds description to spaceDescription list. + * @param space + * @param descriptions + */ + @Override + public void addSpaceDescription(ISpace space, LocalizedTextForm description) { + if(description!=null && !StringUtils.isEmpty(description.getText())) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + if(exhibitionLanguage != null) { + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); + space.getSpaceDescriptions().add(newLocalizedText); + } + } + } + } + /** * Creates LocalizedTextForm form using provided list of localizedTexts. * @param exhibitionAboutPage diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 362dc4b79..95e8bc7e1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -1,11 +1,9 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.ArrayList; -import java.util.HashSet; + import java.util.List; import java.util.Objects; -import java.util.Set; - import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -17,10 +15,8 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.ExhibitionModes; -import edu.asu.diging.vspace.core.model.IContentBlock; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.IExternalLink; import edu.asu.diging.vspace.core.model.ISpace; /** diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 8fe4f9852..6d16b2b3b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -45,7 +45,6 @@ public class ExhibitionAboutPage extends VSpaceElement { @JoinTable(name="AboutPage_LocText_titles", joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id") ) - private List localizedTitles = new ArrayList(); @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 5493f414b..ff8d504ab 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -10,19 +10,14 @@ import edu.asu.diging.vspace.core.model.ILocalizedText; - - @Entity public class LocalizedText implements ILocalizedText { - - @Id @GeneratedValue(generator = "localized_text_id_generator") @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - @ManyToOne @JoinColumn(name = "LOC_EXH_LANG") private ExhibitionLanguage exhibitionLanguage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java index 6dfc30651..e6506be73 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.ArrayList; + import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -14,7 +15,6 @@ import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; -import javax.persistence.JoinTable; import javax.persistence.JoinColumn; import org.hibernate.annotations.GenericGenerator; @@ -28,7 +28,6 @@ import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISequence; import edu.asu.diging.vspace.core.model.ISlide; -import edu.asu.diging.vspace.core.model.ISlideExhibitionLanguageObject; import edu.asu.diging.vspace.core.model.ITextBlock; @Entity @@ -63,8 +62,6 @@ public class Slide extends VSpaceElement implements ISlide { inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) private List slideDescriptions = new ArrayList(); - - public List getSlideNames() { return slideNames; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 2947e7e87..cb83a32d8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -73,12 +73,9 @@ public class Space extends VSpaceElement implements ISpace { ) private List spaceDescriptions = new ArrayList(); - @Transient private Boolean incomingLinks; - - /* * (non-Javadoc) * @@ -221,7 +218,6 @@ public boolean isHideIncomingLinks() { return hideIncomingLinks; } - @Override public void setHideIncomingLinks(boolean hideIncomingLinks) { this.hideIncomingLinks = hideIncomingLinks; @@ -243,7 +239,4 @@ public void setSpaceDescriptions(List spaceDescriptions) { this.spaceDescriptions = spaceDescriptions; } - - - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java index a8c19b4b3..f03e0a96a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionAboutPageManager.java @@ -2,10 +2,9 @@ import java.util.List; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; + import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; -import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; /** * IExhibitionAboutPageManager allows to store and manage {@link ExhibitionAboutPage}. * @author Avirup Biswas diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index d6e32e5df..3ea5aead0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -2,13 +2,13 @@ import java.util.List; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceLink; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; @@ -44,12 +44,8 @@ public interface ISpaceManager { void updateNameAndDescription(ISpace space, SpaceForm spaceForm); - void addSpaceDescription(ISpace space, LocalizedTextForm descriptions); - void addSpaceName(ISpace space, LocalizedTextForm names); SpaceForm getSpaceForm(String spaceId); - - ISpace createSpace(SpaceForm form); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index fe2d06f82..76fcfaa21 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -1,9 +1,8 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.List; import javax.transaction.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,11 +10,8 @@ import edu.asu.diging.vspace.core.data.ExhibitionAboutPageRepository; import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; -import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @@ -45,7 +41,6 @@ public class ExhibitionAboutPageManager implements IExhibitionAboutPageManager{ @Autowired private LocalizedTextRepository localizedTextRepo; - /* (non-Javadoc) * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#findAll() */ @@ -57,7 +52,6 @@ public List findAll() { return results; } - /* (non-Javadoc) * @see edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager#store() */ @@ -68,7 +62,6 @@ public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { exhibition.setAboutPageConfigured(true); exhibitionManager.storeExhibition((Exhibition)exhibition); } - ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index c24a59738..dcf32f403 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -1,7 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; -import java.util.Collections; + import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -9,14 +9,11 @@ import javax.transaction.Transactional; import org.apache.tika.Tika; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.PropertySource; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import org.thymeleaf.util.StringUtils; import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; @@ -33,9 +30,6 @@ import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; @@ -96,15 +90,12 @@ public class SpaceManager implements ISpaceManager { private SpaceLinkDisplayRepository spaceLinkDisplayRepo; @Autowired - ExhibitionLanguageRepository exhibitionLanguageRepository; + private ExhibitionLanguageRepository exhibitionLanguageRepository; @Autowired private LocalizedTextRepository localizedTextRepo; - - private final Logger logger = LoggerFactory.getLogger(getClass()); - - + /* * (non-Javadoc) * @@ -323,15 +314,6 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc return spaceRepo.findDistinctByNameContainingOrDescriptionContaining(requestedPage, searchText,searchText); } - - @Override - public ISpace createSpace(SpaceForm form) { - ISpace space = new Space(); - space.setName(form.getName()); - space.setDescription(form.getDescription()); - return spaceRepo.save((Space) space); - } - /** * * Adds name to spaceNames List @@ -357,38 +339,18 @@ public void addSpaceName(ISpace space, LocalizedTextForm name) { } } - /** - * Adds description to spaceDescription list. - * @param space - * @param descriptions - */ - @Override - public void addSpaceDescription(ISpace space, LocalizedTextForm description) { - if(description!=null && !StringUtils.isEmpty(description.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); - space.getSpaceDescriptions().add(newLocalizedText); - } - } - } - } @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { space.setName(spaceForm.getDefaultName().getText()); space.setDescription(spaceForm.getDefaultDescription().getText()); addSpaceName(space,spaceForm.getDefaultName()); - addSpaceDescription(space,spaceForm.getDefaultDescription()); + spaceFactory.addSpaceDescription(space,spaceForm.getDefaultDescription()); for(LocalizedTextForm title:spaceForm.getNames()) { addSpaceName(space,title); } for(LocalizedTextForm text:spaceForm.getDescriptions()) { - addSpaceDescription(space,text); + spaceFactory.addSpaceDescription(space,text); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index 3b2fd0816..02299835e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -3,6 +3,7 @@ import java.security.Principal; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -13,14 +14,10 @@ import edu.asu.diging.vspace.core.factory.ISlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; -import edu.asu.diging.vspace.core.model.IChoiceBlock; -import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.Slide; -import edu.asu.diging.vspace.core.services.IContentBlockManager; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IModuleManager; import edu.asu.diging.vspace.core.services.ISlideManager; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @@ -33,12 +30,6 @@ public class AddSlideController { @Autowired private IModuleManager moduleManager; - - @Autowired - private IContentBlockManager contentBlockManager; - - @Autowired - private IExhibitionManager exhibitionManager; @Autowired private ISlideFactory slideFactory; @@ -46,8 +37,7 @@ public class AddSlideController { @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - ISlide slide=new Slide(); - model.addAttribute("slide", slideFactory.createNewSlideForm(slide)); + model.addAttribute("slide", slideFactory.createNewSlideForm(new Slide())); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); return "staff/modules/slides/add"; @@ -62,7 +52,6 @@ public String addSlide(Model model, @PathVariable("moduleId") String moduleId, @ String slideId; if(type.equals(SlideType.BRANCHING_POINT)) { IBranchingPoint branchingPoint = slideManager.createBranchingPoint(module, slideForm, type); - IChoiceBlock choiceBlock = contentBlockManager.createChoiceBlock(branchingPoint.getId(), null, 0, true); slideId = branchingPoint.getId(); } else { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteSpaceController.java index a9a3d2eee..11deff0ea 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteSpaceController.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.web.staff; import org.slf4j.Logger; + import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -11,10 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import com.google.gson.JsonObject; - import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISpaceManager; @Controller diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteTextBlockController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteTextBlockController.java index cc1d0cca3..037b486be 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteTextBlockController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/DeleteTextBlockController.java @@ -2,6 +2,7 @@ import java.io.IOException; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import edu.asu.diging.vspace.core.data.ContentBlockRepository; import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException; import edu.asu.diging.vspace.core.services.IContentBlockManager; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java index 828c909a2..dded82a3f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionAboutPageController.java @@ -16,7 +16,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; -import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.factory.IAboutPageFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; @@ -40,7 +40,7 @@ public class ExhibitionAboutPageController { private IExhibitionAboutPageManager aboutPageManager; @Autowired - private IExhibitionAboutPageFactory exhibitionAboutPageFactory; + private IAboutPageFormFactory exhibitionAboutPageFactory; @RequestMapping(value = "/staff/exhibit/about", method = RequestMethod.GET) public String showAboutPage(Model model) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index 8c8804b60..2bd4b029d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -7,6 +7,8 @@ import javax.servlet.http.HttpServletRequest; import org.javers.common.collections.Arrays; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -46,6 +48,8 @@ public class ExhibitionConfigurationController { private ExhibitionLanguageConfig exhibitionLanguageConfig; public static final String EXH_PREVIEW = "EXH_PREVIEW_"; + + private final Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { @@ -104,6 +108,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, attributes.addAttribute("alertType", "failure"); attributes.addAttribute("message", "Could not delete the Exhibition Language as it has localized data associated to it."); attributes.addAttribute("showAlert", "true"); + logger.info("Could not delete the Exhibition Language as it has localized data associated to it.",e); return new RedirectView(request.getContextPath() + "/staff/exhibit/config"); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/SpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/SpaceController.java index c6ea76210..65dda5cf9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/SpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/SpaceController.java @@ -65,10 +65,6 @@ public String showSpace(@PathVariable String id, Model model) { model.addAttribute("display", spaceDisplayManager.getBySpace(space)); model.addAttribute("moduleList", moduleManager.getAllModules()); model.addAttribute("spaceTextBlocks", spaceTextBlockManager.getSpaceTextBlockDisplays(id)); - - -// model.addAttribute("defaultName" , spaceManager.getDefaultSpaceName(space)); -// model.addAttribute("defaultDescription" , spaceManager.getDefaultSpaceDescription(space)); return "staff/spaces/space"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java index fab6df4b5..886a3a1d4 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/AboutPageForm.java @@ -1,9 +1,8 @@ package edu.asu.diging.vspace.web.staff.forms; import java.util.ArrayList; -import java.util.List; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import java.util.List; public class AboutPageForm { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index 2f36f2e63..a4c242661 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -2,15 +2,15 @@ public class LocalizedTextForm { - String text; + private String text; - String localisedTextId; + private String localizedTextId; - String exhibitionLanguageId; + private String exhibitionLanguageId; - String exhibitionLanguageLabel; + private String exhibitionLanguageLabel; - Boolean isDefaultExhibitionLanguage; + private Boolean isDefaultExhibitionLanguage; public LocalizedTextForm() { @@ -21,7 +21,7 @@ public LocalizedTextForm(String text, String localisedTextId, String exhibitionL String exhibitionLanguageLabel) { super(); this.text = text; - this.localisedTextId = localisedTextId; + this.localizedTextId = localisedTextId; this.exhibitionLanguageId = exhibitionLanguageId; this.exhibitionLanguageLabel = exhibitionLanguageLabel; } @@ -35,11 +35,11 @@ public void setText(String text) { } public String getLocalisedTextId() { - return localisedTextId; + return localizedTextId; } public void setLocalisedTextId(String localisedTextId) { - this.localisedTextId = localisedTextId; + this.localizedTextId = localisedTextId; } public String getExhibitionLanguageId() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index d4a9f014a..d307a5b48 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -1,9 +1,8 @@ package edu.asu.diging.vspace.web.staff.forms; import java.util.ArrayList; -import java.util.List; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import java.util.List; public class SpaceForm { diff --git a/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java b/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java index 62dad7d1c..2eb428061 100644 --- a/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java +++ b/vspace/src/test/java/ExhibitionAboutPageFactoryTest.java @@ -9,7 +9,7 @@ import org.mockito.Mock; import edu.asu.diging.vspace.core.data.ExhibitionAboutPageRepository; -import edu.asu.diging.vspace.core.factory.impl.ExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.factory.impl.AboutPageFormFactory; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -22,7 +22,7 @@ public class ExhibitionAboutPageFactoryTest { @InjectMocks - private ExhibitionAboutPageFactory serviceToTest; + private AboutPageFormFactory serviceToTest; @Mock private ExhibitionAboutPageRepository repo; From b3a430fa79c3730a8c2e1fe98628c1709e56db76 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Tue, 5 Mar 2024 14:40:58 -0700 Subject: [PATCH 168/191] [VSPC-232-214-215-multiple-languages] Addressed review comments: separating slideform, exhibitionaboutPageForm methods into their own factories. --- .../core/factory/IAboutPageFormFactory.java | 13 ++++ .../factory/IExhibitionAboutPageFactory.java | 15 +++++ .../vspace/core/factory/ISlideFactory.java | 2 - .../core/factory/ISlideFormFactory.java | 10 +++ .../factory/impl/AboutPageFormFactory.java | 40 +++--------- .../impl/ExhibitionAboutPageFactory.java | 30 +++++++++ .../impl/LocalizedTextFormCreation.java | 39 ++++++++++++ .../core/factory/impl/SlideFactory.java | 62 ------------------- .../core/factory/impl/SlideFormFactory.java | 51 +++++++++++++++ .../core/model/impl/ExhibitionAboutPage.java | 2 - .../core/services/impl/SlideManager.java | 10 +-- .../vspace/web/staff/AddSlideController.java | 7 ++- .../vspace/web/staff/AddSpaceController.java | 6 +- 13 files changed, 177 insertions(+), 110 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java index e69de29bb..f82c96ab0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IAboutPageFormFactory.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.factory; + +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; +import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; + +public interface IAboutPageFormFactory { + + /** + * Creates About Page form object + */ + AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage); + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java new file mode 100644 index 000000000..0ad78f109 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java @@ -0,0 +1,15 @@ +package edu.asu.diging.vspace.core.factory; + +import java.util.List; + +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; + +public interface IExhibitionAboutPageFactory { + + /** + * Creates Exhibition About Page + */ + ExhibitionAboutPage createAboutPageForm(String title, String aboutPageText, List localizedTitles, List localizedDescriptions); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java index 8ec23bd7f..f85688621 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java @@ -9,7 +9,5 @@ public interface ISlideFactory { ISlide createSlide(IModule module, SlideForm form, SlideType type); - - SlideForm createNewSlideForm(ISlide slide); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java new file mode 100644 index 000000000..f550cbcef --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java @@ -0,0 +1,10 @@ +package edu.asu.diging.vspace.core.factory; + +import edu.asu.diging.vspace.core.model.ISlide; +import edu.asu.diging.vspace.web.staff.forms.SlideForm; + +public interface ISlideFormFactory { + + SlideForm createNewSlideForm(ISlide slide); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java index 75c65492d..c1d4dccc7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java @@ -1,19 +1,13 @@ package edu.asu.diging.vspace.core.factory.impl; -import java.util.List; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.thymeleaf.util.StringUtils; - import edu.asu.diging.vspace.core.factory.IAboutPageFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.AboutPageForm; -import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @Component public class AboutPageFormFactory implements IAboutPageFormFactory{ @@ -23,6 +17,9 @@ public class AboutPageFormFactory implements IAboutPageFormFactory{ @Autowired private IExhibitionManager exhibitionManager; + @Autowired + private LocalizedTextFormCreation localizedTextFormCreation; + /** * Creates About Page form object */ @@ -35,42 +32,19 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage IExhibition startExhibtion = exhibitionManager.getStartExhibition(); IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - aboutPageForm.setDefaultTitle(createLocalizedTextForm( defaultLanguage, + aboutPageForm.setDefaultTitle(localizedTextFormCreation.createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.setDefaultAboutPageText(createLocalizedTextForm( defaultLanguage, + aboutPageForm.setDefaultAboutPageText(localizedTextFormCreation.createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); startExhibtion.getLanguages().forEach(language -> { if(!language.isDefault()) { - aboutPageForm.getTitles().add(createLocalizedTextForm( language, + aboutPageForm.getTitles().add(localizedTextFormCreation.createLocalizedTextForm( language, exhibitionAboutPage.getExhibitionTitles())); - aboutPageForm.getAboutPageTexts().add(createLocalizedTextForm(language, + aboutPageForm.getAboutPageTexts().add(localizedTextFormCreation.createLocalizedTextForm(language, exhibitionAboutPage.getExhibitionTextDescriptions())); } }); return aboutPageForm; } - - /** - * Creates LocalizedTextForm form using provided list of localizedTexts. - * @param exhibitionAboutPage - * @param language - * @param localizedTexts - * @return - */ - private LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, List localizedTexts) { - - LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText aboutPageText = localizedTexts.stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), - exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(aboutPageText != null) { - localizedAboutTextForm.setText(aboutPageText.getText()); - localizedAboutTextForm.setLocalisedTextId( aboutPageText.getId()); - - } - localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedAboutTextForm; - } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java new file mode 100644 index 000000000..8e9d66b26 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -0,0 +1,30 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import java.util.List; + +import org.springframework.stereotype.Component; + +import edu.asu.diging.vspace.core.factory.IExhibitionAboutPageFactory; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; + +@Component +public class ExhibitionAboutPageFactory implements IExhibitionAboutPageFactory{ + + @Override + public ExhibitionAboutPage createAboutPageForm(String title, String aboutPageText, + List localizedTitles, List localizedDescriptions) { + + ExhibitionAboutPage exhibitionAboutPage = new ExhibitionAboutPage(); + + exhibitionAboutPage.setTitle(title); + exhibitionAboutPage.setAboutPageText(aboutPageText); + exhibitionAboutPage.setExhibitionTitles(localizedTitles); + exhibitionAboutPage.setExhibitionTextDescriptions(localizedDescriptions); + + return exhibitionAboutPage; + } + + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java new file mode 100644 index 000000000..27b0a7711 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java @@ -0,0 +1,39 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import java.util.List; + +import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; + +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +@Service +public class LocalizedTextFormCreation { + + + /** + * Creates LocalizedTextForm form using provided list of localizedTexts. + * @param exhibitionAboutPage + * @param language + * @param localizedTexts + * @return + */ + public LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, List localizedTexts) { + + LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); + ILocalizedText aboutPageText = localizedTexts.stream() + .filter(exhibitionText -> StringUtils.equals(language.getId(), + exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); + + if(aboutPageText != null) { + localizedAboutTextForm.setText(aboutPageText.getText()); + localizedAboutTextForm.setLocalisedTextId( aboutPageText.getId()); + + } + localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); + return localizedAboutTextForm; + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java index 632dd7b9e..469281c55 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFactory.java @@ -6,23 +6,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.thymeleaf.util.StringUtils; - import edu.asu.diging.vspace.core.factory.IChoiceFactory; import edu.asu.diging.vspace.core.factory.ISlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; import edu.asu.diging.vspace.core.model.IContentBlock; -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.BranchingPoint; import edu.asu.diging.vspace.core.model.impl.Slide; -import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Service @@ -30,9 +23,6 @@ public class SlideFactory implements ISlideFactory { @Autowired private IChoiceFactory choiceFactory; - - @Autowired - private IExhibitionManager exhibitionManager; /* * (non-Javadoc) @@ -58,56 +48,4 @@ public ISlide createSlide(IModule module, SlideForm form, SlideType type) { return slide; } - /** - * - * Creates new slide form object - * @param slide - * @return - */ - @Override - public SlideForm createNewSlideForm(ISlide slide) { - SlideForm slideForm = new SlideForm(); - slideForm.setName(slide.getName()); - slideForm.setDescription(slide.getDescription()); - - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - - slideForm.setDefaultName(createLocalizedTextForm(slide, defaultLanguage, slide.getSlideNames())); - slideForm.setDefaultDescription(createLocalizedTextForm(slide, defaultLanguage, slide.getSlideDescriptions())); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - slideForm.getNames().add(createLocalizedTextForm(slide, language, slide.getSlideNames())); - slideForm.getDescriptions().add(createLocalizedTextForm(slide, language, slide.getSlideDescriptions())); - } - }); - - return slideForm; - } - - /** - * Creates LocalizedTextForm form using provided list of localizedTexts. - * @param exhibitionAboutPage - * @param language - * @param localizedTexts - * @return - */ - private LocalizedTextForm createLocalizedTextForm(ISlide slide, IExhibitionLanguage language, List localizedTexts) { - - LocalizedTextForm localizedSlideForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText slideText = localizedTexts.stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), - exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(slideText != null) { - localizedSlideForm.setText(slideText.getText()); - localizedSlideForm.setLocalisedTextId( slideText.getId()); - - } - localizedSlideForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedSlideForm; - } - - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java new file mode 100644 index 000000000..0bdbd7e59 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java @@ -0,0 +1,51 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import edu.asu.diging.vspace.core.factory.ISlideFormFactory; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ISlide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.web.staff.forms.SlideForm; + +@Service +public class SlideFormFactory implements ISlideFormFactory{ + + @Autowired + private IExhibitionManager exhibitionManager; + + @Autowired + private LocalizedTextFormCreation localizedTextFormCreation; + + /** + * + * Creates new slide form object + * @param slide + * @return + */ + @Override + public SlideForm createNewSlideForm(ISlide slide) { + SlideForm slideForm = new SlideForm(); + slideForm.setName(slide.getName()); + slideForm.setDescription(slide.getDescription()); + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); + + slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideNames())); + slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideDescriptions())); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + slideForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideNames())); + slideForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); + } + }); + + return slideForm; + } + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java index 6d16b2b3b..def8a159d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionAboutPage.java @@ -39,8 +39,6 @@ public class ExhibitionAboutPage extends VSpaceElement { @Lob private String aboutPageText; - - @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="AboutPage_LocText_titles", joinColumns = @JoinColumn(name = "ExhibitionAboutPage_Id", referencedColumnName="id") diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 3b656e44b..80bae6c67 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; + import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -23,11 +24,9 @@ import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.factory.impl.ChoiceFactory; import edu.asu.diging.vspace.core.factory.impl.SlideFactory; +import edu.asu.diging.vspace.core.factory.impl.SlideFormFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; @@ -47,6 +46,9 @@ public class SlideManager implements ISlideManager { @Autowired private SlideFactory slideFactory; + + @Autowired + private SlideFormFactory slideFormFactory; @Autowired private SlideRepository slideRepo; @@ -249,7 +251,7 @@ public void addSlideDescription(ISlide slide, LocalizedTextForm description) { @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); - SlideForm slideForm = slideFactory.createNewSlideForm(slide); + SlideForm slideForm = slideFormFactory.createNewSlideForm(slide); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); return slideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index 02299835e..610195443 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -4,6 +4,7 @@ import java.security.Principal; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -12,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import edu.asu.diging.vspace.core.factory.ISlideFactory; +import edu.asu.diging.vspace.core.factory.ISlideFormFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; @@ -32,12 +33,12 @@ public class AddSlideController { private IModuleManager moduleManager; @Autowired - private ISlideFactory slideFactory; + private ISlideFormFactory slideFormFactory; @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - model.addAttribute("slide", slideFactory.createNewSlideForm(new Slide())); + model.addAttribute("slide", slideFormFactory.createNewSlideForm(new Slide())); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); return "staff/modules/slides/add"; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 1c8c55c41..d6d43c263 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -1,10 +1,8 @@ package edu.asu.diging.vspace.web.staff; import java.io.IOException; -import java.security.Principal; -import java.util.ArrayList; -import java.util.List; +import java.security.Principal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -59,7 +57,7 @@ public String showAddSpace(Model model) { @RequestMapping(value = "/staff/space/add", method = RequestMethod.POST) public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @RequestParam("file") MultipartFile file, Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { - ISpace space = spaceManager.createSpace(spaceForm); + ISpace space = spaceFactory.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); space.setSpaceStatus(SpaceStatus.UNPUBLISHED); byte[] bgImage = null; From f29c13a50c4334dbf8775ad77783fb105a46f3de Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Tue, 5 Mar 2024 16:25:33 -0700 Subject: [PATCH 169/191] [VSPC-232-214-215-multiple-languages] Addressed review comments. --- .../data/ExhibitionLanguageRepository.java | 3 + .../vspace/core/factory/ISpaceFactory.java | 2 - .../core/factory/ISpaceFormFactory.java | 10 +++ .../impl/LocalizedTextFormCreation.java | 9 ++- .../core/factory/impl/SpaceFactory.java | 63 ------------------- .../vspace/core/model/impl/Exhibition.java | 8 ++- .../core/model/impl/ExhibitionLanguage.java | 6 -- .../vspace/core/model/impl/LocalizedText.java | 2 +- .../core/services/impl/SpaceManager.java | 6 +- .../vspace/web/staff/AddSpaceController.java | 11 ++-- 10 files changed, 35 insertions(+), 85 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java index a86a4074e..2a5c08168 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java @@ -4,6 +4,7 @@ import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; +import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @Repository @@ -11,5 +12,7 @@ public interface ExhibitionLanguageRepository extends PagingAndSortingRepository{ ExhibitionLanguage findByLabel(String label); + + ExhibitionLanguage findDefaultLanguageByExhibition(Exhibition exhibition); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index de87dbf0d..9eb20ed91 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -6,8 +6,6 @@ public interface ISpaceFactory { - SpaceForm createNewSpaceForm(ISpace space); - public ISpace createSpace(SpaceForm form); public void addSpaceDescription(ISpace space, LocalizedTextForm description); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java new file mode 100644 index 000000000..a91f54344 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java @@ -0,0 +1,10 @@ +package edu.asu.diging.vspace.core.factory; + +import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.web.staff.forms.SpaceForm; + +public interface ISpaceFormFactory { + + SpaceForm createNewSpaceForm(ISpace space); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java index 27b0a7711..eca807fe2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java @@ -12,7 +12,6 @@ @Service public class LocalizedTextFormCreation { - /** * Creates LocalizedTextForm form using provided list of localizedTexts. * @param exhibitionAboutPage @@ -23,13 +22,13 @@ public class LocalizedTextFormCreation { public LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, List localizedTexts) { LocalizedTextForm localizedAboutTextForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText aboutPageText = localizedTexts.stream() + ILocalizedText localizedText = localizedTexts.stream() .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); - if(aboutPageText != null) { - localizedAboutTextForm.setText(aboutPageText.getText()); - localizedAboutTextForm.setLocalisedTextId( aboutPageText.getId()); + if(localizedText != null) { + localizedAboutTextForm.setText(localizedText.getText()); + localizedAboutTextForm.setLocalisedTextId( localizedText.getId()); } localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index abb702a82..5a6d27f15 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -1,8 +1,5 @@ package edu.asu.diging.vspace.core.factory.impl; -import java.util.List; - - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.thymeleaf.util.StringUtils; @@ -11,23 +8,16 @@ import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; -import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Service public class SpaceFactory implements ISpaceFactory { - @Autowired - private IExhibitionManager exhibitionManager; - @Autowired private SpaceRepository spaceRepo; @@ -37,34 +27,6 @@ public class SpaceFactory implements ISpaceFactory { @Autowired private LocalizedTextRepository localizedTextRepo; - /** - * - * Creates new space form object - * @param space - * @return - */ - @Override - public SpaceForm createNewSpaceForm(ISpace space) { - SpaceForm spaceForm = new SpaceForm(); - spaceForm.setName(space.getName()); - spaceForm.setDescription(space.getDescription()); - - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); - - spaceForm.setDefaultName(createLocalizedTextForm(space, defaultLanguage, space.getSpaceNames())); - spaceForm.setDefaultDescription(createLocalizedTextForm(space, defaultLanguage, space.getSpaceDescriptions())); - - startExhibtion.getLanguages().forEach(language -> { - if(!language.isDefault()) { - spaceForm.getNames().add(createLocalizedTextForm(space, language, space.getSpaceNames())); - spaceForm.getDescriptions().add(createLocalizedTextForm(space, language, space.getSpaceDescriptions())); - } - }); - - return spaceForm; - } - @Override public ISpace createSpace(SpaceForm form) { @@ -94,30 +56,5 @@ public void addSpaceDescription(ISpace space, LocalizedTextForm description) { } } } - - /** - * Creates LocalizedTextForm form using provided list of localizedTexts. - * @param exhibitionAboutPage - * @param language - * @param localizedTexts - * @return - */ - private LocalizedTextForm createLocalizedTextForm(ISpace space, IExhibitionLanguage language, List localizedTexts) { - - LocalizedTextForm localizedSpaceForm = new LocalizedTextForm(null, null, language.getId(), language.getLabel() ); - ILocalizedText spaceText = localizedTexts.stream() - .filter(exhibitionText -> StringUtils.equals(language.getId(), exhibitionText.getExhibitionLanguage().getId())).findAny().orElse(null); - - if(spaceText != null) { - localizedSpaceForm.setText(spaceText.getText()); - localizedSpaceForm.setLocalisedTextId( spaceText.getId()); - - } - localizedSpaceForm.setIsDefaultExhibitionLanguage(language.isDefault()); - return localizedSpaceForm; - } - - - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 95e8bc7e1..a85383267 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -14,6 +14,9 @@ import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import org.springframework.beans.factory.annotation.Autowired; + +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -49,6 +52,9 @@ public class Exhibition extends VSpaceElement implements IExhibition { private List languages = new ArrayList(); private String previewId; + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepo; /* * (non-Javadoc) @@ -150,7 +156,7 @@ public void setPreviewId(String previewId) { */ @Override public IExhibitionLanguage getDefaultLanguage() { - return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); + return exhibitionLanguageRepo.findDefaultLanguageByExhibition(this); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 73671d8b1..56f680865 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -1,17 +1,11 @@ package edu.asu.diging.vspace.core.model.impl; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; -import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; -import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; - import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index ff8d504ab..8d35e3811 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -58,4 +58,4 @@ public void setText(String text) { this.text = text; } -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index dcf32f403..53a44b2e3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -29,6 +29,7 @@ import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceFactory; +import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; @@ -95,6 +96,9 @@ public class SpaceManager implements ISpaceManager { @Autowired private LocalizedTextRepository localizedTextRepo; + @Autowired + private ISpaceFormFactory spaceFormFactory; + /* * (non-Javadoc) @@ -357,7 +361,7 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { @Override public SpaceForm getSpaceForm(String spaceId) { ISpace space = getSpace(spaceId); - SpaceForm slideForm = spaceFactory.createNewSpaceForm(space); + SpaceForm slideForm = spaceFormFactory.createNewSpaceForm(space); slideForm.setName(space.getName()); slideForm.setDescription(space.getDescription()); return slideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index d6d43c263..874117cc1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -17,18 +17,14 @@ import edu.asu.diging.vspace.core.exception.ImageDoesNotExistException; import edu.asu.diging.vspace.core.factory.ISpaceFactory; -import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; -import edu.asu.diging.vspace.core.services.impl.ExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Controller @@ -44,11 +40,14 @@ public class AddSpaceController { @Autowired private IImageService imageService; + + @Autowired + private ISpaceFormFactory spaceFormFactory; @RequestMapping(value = "/staff/space/add", method = RequestMethod.GET) public String showAddSpace(Model model) { ISpace space = new Space(); - model.addAttribute("space", spaceFactory.createNewSpaceForm(space)); + model.addAttribute("space", spaceFormFactory.createNewSpaceForm(space)); model.addAttribute("images", imageService.getImages(1)); return "staff/spaces/add"; From c9d5f1c3a4445c6d7cceefd4bd4c4720721777ec Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Wed, 6 Mar 2024 15:56:37 -0700 Subject: [PATCH 170/191] [VSPC-232-214-215-multiple-languages] Addressed review comments. --- .../data/ExhibitionLanguageRepository.java | 3 +- .../core/factory/ISpaceFormFactory.java | 2 + .../core/factory/impl/SpaceFormFactory.java | 61 +++++++++++++++++++ .../vspace/core/model/impl/Exhibition.java | 9 +-- .../core/services/IExhibitionManager.java | 2 +- .../vspace/core/services/ISlideManager.java | 3 +- .../vspace/core/services/ISpaceManager.java | 2 - .../impl/ExhibitionAboutPageManager.java | 48 ++++++--------- .../core/services/impl/ExhibitionManager.java | 19 +++--- .../core/services/impl/SlideManager.java | 5 +- .../core/services/impl/SpaceManager.java | 16 +---- .../vspace/web/staff/EditSpaceController.java | 14 ++--- 12 files changed, 100 insertions(+), 84 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java index 2a5c08168..f3dd4b26a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java @@ -1,10 +1,10 @@ package edu.asu.diging.vspace.core.data; import org.javers.spring.annotation.JaversSpringDataAuditable; + import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @Repository @@ -13,6 +13,5 @@ public interface ExhibitionLanguageRepository extends PagingAndSortingRepository ExhibitionLanguage findByLabel(String label); - ExhibitionLanguage findDefaultLanguageByExhibition(Exhibition exhibition); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java index a91f54344..1ee4c74e9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java @@ -6,5 +6,7 @@ public interface ISpaceFormFactory { SpaceForm createNewSpaceForm(ISpace space); + + SpaceForm getSpaceForm(String spaceId); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java new file mode 100644 index 000000000..6c6529efc --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java @@ -0,0 +1,61 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.core.services.ISpaceManager; +import edu.asu.diging.vspace.web.staff.forms.SpaceForm; + +@Service +public class SpaceFormFactory implements ISpaceFormFactory { + + @Autowired + private IExhibitionManager exhibitionManager; + + @Autowired + private ISpaceManager spaceManager; + + @Autowired + private LocalizedTextFormCreation localizedTextFormCreation; + + /** + * + * Creates new space form object + * @param space + * @return + */ + @Override + public SpaceForm createNewSpaceForm(ISpace space) { + SpaceForm spaceForm = new SpaceForm(); + spaceForm.setName(space.getName()); + spaceForm.setDescription(space.getDescription()); + + IExhibition startExhibtion = exhibitionManager.getStartExhibition(); + + spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibtion.getDefaultLanguage(), space.getSpaceNames())); + spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibtion.getDefaultLanguage(), space.getSpaceDescriptions())); + + startExhibtion.getLanguages().forEach(language -> { + if(!language.isDefault()) { + spaceForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); + spaceForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceDescriptions())); + } + }); + + return spaceForm; + } + + @Override + public SpaceForm getSpaceForm(String spaceId) { + ISpace space = spaceManager.getSpace(spaceId); + SpaceForm slideForm = createNewSpaceForm(space); + slideForm.setName(space.getName()); + slideForm.setDescription(space.getDescription()); + return slideForm; + + } +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index a85383267..8a1dedf18 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -2,6 +2,7 @@ import java.util.ArrayList; + import java.util.List; import java.util.Objects; import javax.persistence.CascadeType; @@ -14,9 +15,6 @@ import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import org.springframework.beans.factory.annotation.Autowired; - -import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -52,9 +50,6 @@ public class Exhibition extends VSpaceElement implements IExhibition { private List languages = new ArrayList(); private String previewId; - - @Autowired - private ExhibitionLanguageRepository exhibitionLanguageRepo; /* * (non-Javadoc) @@ -156,7 +151,7 @@ public void setPreviewId(String previewId) { */ @Override public IExhibitionLanguage getDefaultLanguage() { - return exhibitionLanguageRepo.findDefaultLanguageByExhibition(this); + return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index dacfba87e..6118bbd33 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -41,6 +41,6 @@ public interface IExhibitionManager { boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); - void deleteEmptyLocalizedTexts(List emptyLocalizedTexts); + void deleteLocalizedTexts(List emptyLocalizedTexts); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index 897bf872e..c280be4af 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -2,16 +2,15 @@ import java.util.List; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 3ea5aead0..4d82d7869 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -45,7 +45,5 @@ public interface ISpaceManager { void updateNameAndDescription(ISpace space, SpaceForm spaceForm); void addSpaceName(ISpace space, LocalizedTextForm names); - - SpaceForm getSpaceForm(String spaceId); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 76fcfaa21..bf1e11014 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -12,6 +12,7 @@ import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionAboutPage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @@ -94,25 +95,9 @@ public ExhibitionAboutPage getExhibitionAboutPage() { /** * This method maps the title in ExhibitionAboutPage, and add that to * exhibitionTitles list for each user selected Exhibition Language. - */ + */ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhibitionAboutPage) { - if(title!=null && !StringUtils.isEmpty(title.getText())) { - - LocalizedText localizedText = localizedTextRepo.findById(title.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(title.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(title.getExhibitionLanguageId()) - .orElse(null); - if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, title.getText()); - exhibitionAboutPage.getExhibitionTitles().add(localizedText); - - } - } - - } - + setLocalizedText(title, exhibitionAboutPage.getExhibitionTitles()); } /** @@ -120,21 +105,22 @@ public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhib * exhibitionTextDescriptions list for each user selected Exhibition Language. */ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionAboutPage exhibitionAboutPage) { - if(aboutPageText!=null && !StringUtils.isEmpty(aboutPageText.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(aboutPageText.getLocalisedTextId()).orElse(null); - - if(localizedText != null) { - localizedText.setText(aboutPageText.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(aboutPageText.getExhibitionLanguageId()) - .orElse(null); - if(exhibitionLanguage != null) { - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, aboutPageText.getText()); - exhibitionAboutPage.getExhibitionTextDescriptions().add(newLocalizedText); + setLocalizedText(aboutPageText, exhibitionAboutPage.getExhibitionTextDescriptions()); + } + private void setLocalizedText(LocalizedTextForm textForm, List localizedTextList) { + if (textForm != null && !StringUtils.isEmpty(textForm.getText())) { + LocalizedText localizedText = localizedTextRepo.findById(textForm.getLocalisedTextId()).orElse(null); + if (localizedText != null) { + localizedText.setText(textForm.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(textForm.getExhibitionLanguageId()).orElse(null); + if (exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, textForm.getText()); + localizedTextList.add(localizedText); } - } + } } - } + } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 9abb8f0f4..204357958 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; + import java.util.List; import java.util.Map; import java.util.Optional; @@ -22,7 +23,6 @@ import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -131,6 +131,10 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { if(checkIfLocalizedTextsExists(language)) { + /** + * ExhibitionLanguageDeletionException is thrown if any IExhibitionLanguage object in the specified list + * does not have associated localized texts. + */ throw new ExhibitionLanguageDeletionException() ; } @@ -144,14 +148,9 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, */ @Override public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { - List localizedTexts = localizedTextRepo.findByExhibitionLanguage(language); - List emptyLocalizedTexts = localizedTexts.stream() - .filter(localizedText -> !StringUtils.hasText(localizedText.getText())).collect(Collectors.toList()); - deleteEmptyLocalizedTexts(emptyLocalizedTexts); //This returns true if non empty localized texts exist - return localizedTexts.size() > emptyLocalizedTexts.size(); - + return localizedTextRepo.findByExhibitionLanguage(language).isEmpty(); } /** @@ -159,12 +158,10 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { * */ @Override - public void deleteEmptyLocalizedTexts(List emptyLocalizedTexts) { - localizedTextRepo.deleteAll(emptyLocalizedTexts); + public void deleteLocalizedTexts(List localizedTexts) { + localizedTextRepo.deleteAll(localizedTexts); } - - /** * Adds exhibitionLanguage to exhibition if not already present. If already present, returns exhibitionLanguage from the exhibition. * diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 80bae6c67..bde79a3d8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -2,6 +2,7 @@ import java.util.ArrayList; + import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -36,7 +37,6 @@ import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISlideManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @@ -68,9 +68,6 @@ public class SlideManager implements ISlideManager { @Autowired ExhibitionLanguageRepository exhibitionLanguageRepository; - @Autowired - private IExhibitionManager exhibitionManager; - @Autowired private LocalizedTextRepository localizedTextRepo; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 53a44b2e3..a76455729 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -2,6 +2,7 @@ import java.util.ArrayList; + import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -29,7 +30,6 @@ import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceFactory; -import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; @@ -95,10 +95,6 @@ public class SpaceManager implements ISpaceManager { @Autowired private LocalizedTextRepository localizedTextRepo; - - @Autowired - private ISpaceFormFactory spaceFormFactory; - /* * (non-Javadoc) @@ -357,14 +353,4 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { spaceFactory.addSpaceDescription(space,text); } } - - @Override - public SpaceForm getSpaceForm(String spaceId) { - ISpace space = getSpace(spaceId); - SpaceForm slideForm = spaceFormFactory.createNewSpaceForm(space); - slideForm.setName(space.getName()); - slideForm.setDescription(space.getDescription()); - return slideForm; - - } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java index d4f3cd45e..8853ec04b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java @@ -1,9 +1,5 @@ package edu.asu.diging.vspace.web.staff; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -12,11 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.model.ISpace; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @@ -25,11 +18,14 @@ public class EditSpaceController { @Autowired private ISpaceManager spaceManager; + + @Autowired + private ISpaceFormFactory spaceFormFactory; @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("spaceId") String spaceId) { - model.addAttribute("spaceForm", spaceManager.getSpaceForm(spaceId)); + model.addAttribute("spaceForm", spaceFormFactory.getSpaceForm(spaceId)); model.addAttribute("spaceId", spaceId); return "staff/spaces/edit"; } From 5b46307b61086db721a56c2e5e2bd7c0eb781af0 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Wed, 20 Mar 2024 16:04:08 -0700 Subject: [PATCH 171/191] [VSPC-232-214-215-multiple-languages] Title for exhibition languages that are not default. --- .../edu/asu/diging/vspace/core/model/impl/Exhibition.java | 7 ++++++- .../diging/vspace/core/model/impl/ExhibitionLanguage.java | 5 +++++ .../asu/diging/vspace/core/model/impl/LocalizedText.java | 8 +++++++- .../java/edu/asu/diging/vspace/core/model/impl/Space.java | 6 +++++- .../asu/diging/vspace/web/staff/AddSpaceController.java | 5 ++++- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 8a1dedf18..606037df8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -3,6 +3,7 @@ import java.util.ArrayList; + import java.util.List; import java.util.Objects; import javax.persistence.CascadeType; @@ -15,6 +16,9 @@ import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; + +import com.fasterxml.jackson.annotation.JsonBackReference; + import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -33,7 +37,8 @@ public class Exhibition extends VSpaceElement implements IExhibition { @GeneratedValue(generator = "exhibit_id_generator") @GenericGenerator(name = "exhibit_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - + + @JsonBackReference() @OneToOne(targetEntity = Space.class) private ISpace startSpace; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 56f680865..940d8d451 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -2,12 +2,16 @@ import java.util.Objects; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @Entity @@ -21,6 +25,7 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private String label; @ManyToOne(targetEntity = Exhibition.class) + @JsonManagedReference() private Exhibition exhibition; private String code; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 8d35e3811..e4e2b0b2b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,5 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; import javax.persistence.Entity; + + import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -8,6 +10,9 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; + import edu.asu.diging.vspace.core.model.ILocalizedText; @Entity @@ -17,9 +22,10 @@ public class LocalizedText implements ILocalizedText { @GeneratedValue(generator = "localized_text_id_generator") @GenericGenerator(name = "localized_text_id_generator", parameters = @Parameter(name = "prefix", value = "LOCTEXT"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; - + @ManyToOne @JoinColumn(name = "LOC_EXH_LANG") + @JsonBackReference() private ExhibitionLanguage exhibitionLanguage; private String text; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index cb83a32d8..596ad76f6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.ArrayList; + import java.util.List; import javax.persistence.Access; @@ -21,6 +22,7 @@ import org.hibernate.annotations.Parameter; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonManagedReference; import edu.asu.diging.vspace.core.model.IExternalLink; import edu.asu.diging.vspace.core.model.ILocalizedText; @@ -64,13 +66,15 @@ public class Space extends VSpaceElement implements ISpace { @JoinTable(name="Space_LangObj_names", joinColumns = @JoinColumn(name = "Space_Id", referencedColumnName="id"), inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id")) + @JsonManagedReference() private List spaceNames = new ArrayList(); - + @OneToMany(targetEntity = LocalizedText.class, cascade={CascadeType.ALL}) @JoinTable(name="Space_LangObj_descriptions", joinColumns = @JoinColumn(name = "Space_Id", referencedColumnName="id"), inverseJoinColumns = @JoinColumn(name = "LocalizedText_Id", referencedColumnName="id") ) + @JsonManagedReference() private List spaceDescriptions = new ArrayList(); @Transient diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 874117cc1..efe5007cc 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -48,7 +48,8 @@ public class AddSpaceController { public String showAddSpace(Model model) { ISpace space = new Space(); model.addAttribute("space", spaceFormFactory.createNewSpaceForm(space)); - model.addAttribute("images", imageService.getImages(1)); + model.addAttribute("images", imageService.getImages(1)); + System.out.println(spaceFormFactory.createNewSpaceForm(space).getDefaultName().getText()); return "staff/spaces/add"; } @@ -58,6 +59,8 @@ public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @Reques Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { ISpace space = spaceFactory.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); + System.out.println("--------------------------------"+space.getName()); + spaceForm.getDescriptions().forEach(description -> System.out.println(description.getText())); space.setSpaceStatus(SpaceStatus.UNPUBLISHED); byte[] bgImage = null; String filename = null; From 09ed763104f1ee43b0beb4dd1aebbcd147283828 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Sun, 24 Mar 2024 18:31:34 -0700 Subject: [PATCH 172/191] [VSPC-232-214-215-multiple-languages] Added Space title and description for non-default languages. --- .../vspace/core/model/impl/LocalizedText.java | 2 -- .../core/services/impl/SpaceManager.java | 2 +- .../vspace/web/staff/AddSpaceController.java | 22 ++++++++++++++----- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index e4e2b0b2b..41d7a2fc7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -11,8 +11,6 @@ import org.hibernate.annotations.Parameter; import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonManagedReference; - import edu.asu.diging.vspace.core.model.ILocalizedText; @Entity diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index a76455729..7c8605bc2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -346,7 +346,7 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { addSpaceName(space,spaceForm.getDefaultName()); spaceFactory.addSpaceDescription(space,spaceForm.getDefaultDescription()); - for(LocalizedTextForm title:spaceForm.getNames()) { + for(LocalizedTextForm title:spaceForm.getNames()) { addSpaceName(space,title); } for(LocalizedTextForm text:spaceForm.getDescriptions()) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index efe5007cc..3bd7ba2f3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -2,6 +2,7 @@ import java.io.IOException; + import java.security.Principal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,6 +26,7 @@ import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Controller @@ -49,7 +51,6 @@ public String showAddSpace(Model model) { ISpace space = new Space(); model.addAttribute("space", spaceFormFactory.createNewSpaceForm(space)); model.addAttribute("images", imageService.getImages(1)); - System.out.println(spaceFormFactory.createNewSpaceForm(space).getDefaultName().getText()); return "staff/spaces/add"; } @@ -57,10 +58,21 @@ public String showAddSpace(Model model) { @RequestMapping(value = "/staff/space/add", method = RequestMethod.POST) public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @RequestParam("file") MultipartFile file, Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { - ISpace space = spaceFactory.createSpace(spaceForm); - spaceManager.updateNameAndDescription(space, spaceForm); - System.out.println("--------------------------------"+space.getName()); - spaceForm.getDescriptions().forEach(description -> System.out.println(description.getText())); + + ISpace space = new Space(); + if (!spaceForm.getDefaultName().getText().isEmpty()) { + SpaceForm nonDefaultSpaceForm = new SpaceForm(); + LocalizedTextForm nameSpace = spaceForm.getNames().stream().filter(name -> name != null).findFirst().orElse(null); + LocalizedTextForm descriptionSpace = spaceForm.getDescriptions().stream().filter(description -> description != null).findFirst().orElse(null); + nonDefaultSpaceForm.setDefaultDescription(descriptionSpace); + nonDefaultSpaceForm.setDefaultName(nameSpace); + space = spaceFactory.createSpace(nonDefaultSpaceForm); + spaceManager.updateNameAndDescription(space, nonDefaultSpaceForm); + } else { + space = spaceFactory.createSpace(spaceForm); + spaceManager.updateNameAndDescription(space, spaceForm); + } + space.setSpaceStatus(SpaceStatus.UNPUBLISHED); byte[] bgImage = null; String filename = null; From dba44a42147c25d885621ab9f69621071e6cfbad Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Wed, 10 Apr 2024 15:55:27 -0700 Subject: [PATCH 173/191] [VSPC-232-214-215-multiple-languages] Code clean up. --- .../edu/asu/diging/vspace/core/factory/ISlideFactory.java | 3 +-- .../edu/asu/diging/vspace/core/factory/ISpaceFactory.java | 4 ++-- .../vspace/core/factory/impl/AboutPageFormFactory.java | 5 +---- .../vspace/core/factory/impl/LocalizedTextFormCreation.java | 4 +--- .../diging/vspace/core/factory/impl/SpaceFormFactory.java | 1 - .../java/edu/asu/diging/vspace/core/model/IExhibition.java | 2 +- .../edu/asu/diging/vspace/core/model/impl/LocalizedText.java | 5 ----- .../java/edu/asu/diging/vspace/core/model/impl/Slide.java | 5 ----- .../java/edu/asu/diging/vspace/core/model/impl/Space.java | 1 - .../core/services/impl/ExhibitionAboutPageManager.java | 2 +- 10 files changed, 7 insertions(+), 25 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java index f85688621..cbce240b2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFactory.java @@ -1,4 +1,3 @@ - package edu.asu.diging.vspace.core.factory; import edu.asu.diging.vspace.core.model.IModule; @@ -10,4 +9,4 @@ public interface ISlideFactory { ISlide createSlide(IModule module, SlideForm form, SlideType type); -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index 9eb20ed91..a4df9f85a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -6,8 +6,8 @@ public interface ISpaceFactory { - public ISpace createSpace(SpaceForm form); + ISpace createSpace(SpaceForm form); - public void addSpaceDescription(ISpace space, LocalizedTextForm description); + void addSpaceDescription(ISpace space, LocalizedTextForm description); } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java index c1d4dccc7..1c323bb32 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java @@ -12,8 +12,6 @@ @Component public class AboutPageFormFactory implements IAboutPageFormFactory{ - - @Autowired private IExhibitionManager exhibitionManager; @@ -46,5 +44,4 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage }); return aboutPageForm; } - -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java index eca807fe2..0576b90e6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java @@ -29,10 +29,8 @@ public LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, if(localizedText != null) { localizedAboutTextForm.setText(localizedText.getText()); localizedAboutTextForm.setLocalisedTextId( localizedText.getId()); - } localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedAboutTextForm; } - -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java index 6c6529efc..22f8df280 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java @@ -56,6 +56,5 @@ public SpaceForm getSpaceForm(String spaceId) { slideForm.setName(space.getName()); slideForm.setDescription(space.getDescription()); return slideForm; - } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 1bbb74e3f..fa2dfba61 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -30,7 +30,7 @@ public interface IExhibition extends IVSpaceElement { List getLanguages(); - public IExhibitionLanguage getDefaultLanguage(); + IExhibitionLanguage getDefaultLanguage(); ExhibitionModes getMode(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 41d7a2fc7..6d7012ec6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -1,15 +1,11 @@ package edu.asu.diging.vspace.core.model.impl; import javax.persistence.Entity; - - import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; - import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; - import com.fasterxml.jackson.annotation.JsonBackReference; import edu.asu.diging.vspace.core.model.ILocalizedText; @@ -61,5 +57,4 @@ public String getText() { public void setText(String text) { this.text = text; } - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java index e6506be73..681e70fbe 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Slide.java @@ -1,12 +1,10 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.ArrayList; - import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Optional; - import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -16,12 +14,9 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.JoinColumn; - import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; - import com.fasterxml.jackson.annotation.JsonIgnore; - import edu.asu.diging.vspace.core.model.IContentBlock; import edu.asu.diging.vspace.core.model.IImageBlock; import edu.asu.diging.vspace.core.model.ILocalizedText; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java index 596ad76f6..0cdb03338 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Space.java @@ -240,7 +240,6 @@ public List getSpaceDescriptions() { } public void setSpaceDescriptions(List spaceDescriptions) { - this.spaceDescriptions = spaceDescriptions; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index bf1e11014..b9f9dbeb5 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -71,7 +71,7 @@ public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { setAboutPageDescription(aboutPageForm.getDefaultAboutPageText(),exhibitionAboutPage); for(LocalizedTextForm title:aboutPageForm.getTitles()) { - setAboutPageTitle(title,exhibitionAboutPage); + setLocalizedText(title, exhibitionAboutPage.getExhibitionTitles()); } for(LocalizedTextForm aboutPageText:aboutPageForm.getAboutPageTexts()) { setAboutPageDescription(aboutPageText,exhibitionAboutPage); From 58d89508de93fa1eab212eeea4d3b38537dc3e22 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Mon, 22 Apr 2024 16:05:09 -0700 Subject: [PATCH 174/191] [VSPC-232-214-215-multiple-languages] Addressed review comments. --- .../factory/IExhibitionAboutPageFactory.java | 2 +- .../core/factory/ISlideFormFactory.java | 3 +- .../vspace/core/factory/ISpaceFactory.java | 4 +- .../factory/impl/AboutPageFormFactory.java | 2 +- .../impl/ExhibitionAboutPageFactory.java | 2 +- ...ion.java => LocalizedTextFormFactory.java} | 2 +- .../core/factory/impl/SlideFormFactory.java | 18 +++---- .../core/factory/impl/SpaceFactory.java | 47 ++++--------------- .../core/factory/impl/SpaceFormFactory.java | 2 +- .../core/services/IExhibitionManager.java | 6 ++- .../vspace/core/services/ISpaceManager.java | 2 + .../impl/ExhibitionAboutPageManager.java | 8 ++-- .../core/services/impl/ExhibitionManager.java | 9 +++- .../core/services/impl/SlideManager.java | 5 +- .../core/services/impl/SpaceManager.java | 28 ++++++++--- .../vspace/web/staff/AddSlideController.java | 6 ++- 16 files changed, 70 insertions(+), 76 deletions(-) rename vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/{LocalizedTextFormCreation.java => LocalizedTextFormFactory.java} (97%) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java index 0ad78f109..04cac6812 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IExhibitionAboutPageFactory.java @@ -10,6 +10,6 @@ public interface IExhibitionAboutPageFactory { /** * Creates Exhibition About Page */ - ExhibitionAboutPage createAboutPageForm(String title, String aboutPageText, List localizedTitles, List localizedDescriptions); + ExhibitionAboutPage createExhibitionAboutPage(String title, String aboutPageText, List localizedTitles, List localizedDescriptions); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java index f550cbcef..3a542347d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISlideFormFactory.java @@ -1,10 +1,11 @@ package edu.asu.diging.vspace.core.factory; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.web.staff.forms.SlideForm; public interface ISlideFormFactory { - SlideForm createNewSlideForm(ISlide slide); + SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index a4df9f85a..a8d1f4428 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -1,13 +1,11 @@ package edu.asu.diging.vspace.core.factory; import edu.asu.diging.vspace.core.model.ISpace; -import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public interface ISpaceFactory { ISpace createSpace(SpaceForm form); - void addSpaceDescription(ISpace space, LocalizedTextForm description); - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java index 1c323bb32..f57116f34 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java @@ -16,7 +16,7 @@ public class AboutPageFormFactory implements IAboutPageFormFactory{ private IExhibitionManager exhibitionManager; @Autowired - private LocalizedTextFormCreation localizedTextFormCreation; + private LocalizedTextFormFactory localizedTextFormCreation; /** * Creates About Page form object diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java index 8e9d66b26..e0a698108 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionAboutPageFactory.java @@ -12,7 +12,7 @@ public class ExhibitionAboutPageFactory implements IExhibitionAboutPageFactory{ @Override - public ExhibitionAboutPage createAboutPageForm(String title, String aboutPageText, + public ExhibitionAboutPage createExhibitionAboutPage(String title, String aboutPageText, List localizedTitles, List localizedDescriptions) { ExhibitionAboutPage exhibitionAboutPage = new ExhibitionAboutPage(); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java similarity index 97% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java rename to vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java index 0576b90e6..47815dedb 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormCreation.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java @@ -10,7 +10,7 @@ import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @Service -public class LocalizedTextFormCreation { +public class LocalizedTextFormFactory { /** * Creates LocalizedTextForm form using provided list of localizedTexts. diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java index 0bdbd7e59..ecb9360f2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java @@ -1,23 +1,20 @@ package edu.asu.diging.vspace.core.factory.impl; import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; import edu.asu.diging.vspace.core.factory.ISlideFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ISlide; -import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Service public class SlideFormFactory implements ISlideFormFactory{ @Autowired - private IExhibitionManager exhibitionManager; - - @Autowired - private LocalizedTextFormCreation localizedTextFormCreation; + private LocalizedTextFormFactory localizedTextFormCreation; /** * @@ -26,18 +23,17 @@ public class SlideFormFactory implements ISlideFormFactory{ * @return */ @Override - public SlideForm createNewSlideForm(ISlide slide) { + public SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition) { SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); + IExhibitionLanguage defaultLanguage = startExhibition.getDefaultLanguage(); slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideNames())); slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideDescriptions())); - startExhibtion.getLanguages().forEach(language -> { + startExhibition.getLanguages().forEach(language -> { if(!language.isDefault()) { slideForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideNames())); slideForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); @@ -46,6 +42,4 @@ public SlideForm createNewSlideForm(ISlide slide) { return slideForm; } - - -} +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index 5a6d27f15..c93bd3445 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -1,18 +1,12 @@ package edu.asu.diging.vspace.core.factory.impl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.thymeleaf.util.StringUtils; -import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; -import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import org.springframework.stereotype.Service; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.model.ISpace; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; -import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Service @@ -21,40 +15,17 @@ public class SpaceFactory implements ISpaceFactory { @Autowired private SpaceRepository spaceRepo; - @Autowired - private ExhibitionLanguageRepository exhibitionLanguageRepository; - - @Autowired - private LocalizedTextRepository localizedTextRepo; - - + /** + * Creates a new space based on the provided form. + * + * @param form The form containing details for creating the space. + * @return The newly created space and saves it to the repository. + */ @Override public ISpace createSpace(SpaceForm form) { ISpace space = new Space(); space.setName(form.getName()); space.setDescription(form.getDescription()); return spaceRepo.save((Space) space); - } - - /** - * Adds description to spaceDescription list. - * @param space - * @param descriptions - */ - @Override - public void addSpaceDescription(ISpace space, LocalizedTextForm description) { - if(description!=null && !StringUtils.isEmpty(description.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); - space.getSpaceDescriptions().add(newLocalizedText); - } - } - } - } - -} + } +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java index 22f8df280..916a567e7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java @@ -20,7 +20,7 @@ public class SpaceFormFactory implements ISpaceFormFactory { private ISpaceManager spaceManager; @Autowired - private LocalizedTextFormCreation localizedTextFormCreation; + private LocalizedTextFormFactory localizedTextFormCreation; /** * diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 6118bbd33..5ca51a5f7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -2,9 +2,11 @@ import java.util.List; + import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -41,6 +43,6 @@ public interface IExhibitionManager { boolean checkIfLocalizedTextsExists(IExhibitionLanguage language); - void deleteLocalizedTexts(List emptyLocalizedTexts); - + void deleteLocalizedTexts(List emptyLocalizedTexts); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 4d82d7869..79d26ffe1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -46,4 +46,6 @@ public interface ISpaceManager { void addSpaceName(ISpace space, LocalizedTextForm names); + void addSpaceDescription(ISpace space, LocalizedTextForm description); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index b9f9dbeb5..19c75ea81 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -109,16 +109,14 @@ public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionA } private void setLocalizedText(LocalizedTextForm textForm, List localizedTextList) { - if (textForm != null && !StringUtils.isEmpty(textForm.getText())) { + if (!StringUtils.isEmpty(textForm.getText())) { LocalizedText localizedText = localizedTextRepo.findById(textForm.getLocalisedTextId()).orElse(null); if (localizedText != null) { localizedText.setText(textForm.getText()); } else { ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(textForm.getExhibitionLanguageId()).orElse(null); - if (exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, textForm.getText()); - localizedTextList.add(localizedText); - } + localizedText = new LocalizedText(exhibitionLanguage, textForm.getText()); + localizedTextList.add(localizedText); } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 204357958..0c694ea9c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -23,6 +23,7 @@ import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; @@ -158,8 +159,12 @@ public boolean checkIfLocalizedTextsExists(IExhibitionLanguage language) { * */ @Override - public void deleteLocalizedTexts(List localizedTexts) { - localizedTextRepo.deleteAll(localizedTexts); + public void deleteLocalizedTexts(List emptyLocalizedTexts) { + + List convertedLocalizedTextsList = emptyLocalizedTexts.stream() + .map(localizedText -> (LocalizedText) localizedText) + .collect(Collectors.toList()); + localizedTextRepo.deleteAll(convertedLocalizedTextsList); } /** diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index bde79a3d8..f3e80ac08 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -68,6 +68,9 @@ public class SlideManager implements ISlideManager { @Autowired ExhibitionLanguageRepository exhibitionLanguageRepository; + @Autowired + private ExhibitionManager exhibitionManager; + @Autowired private LocalizedTextRepository localizedTextRepo; @@ -248,7 +251,7 @@ public void addSlideDescription(ISlide slide, LocalizedTextForm description) { @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); - SlideForm slideForm = slideFormFactory.createNewSlideForm(slide); + SlideForm slideForm = slideFormFactory.createNewSlideForm(slide, exhibitionManager.getStartExhibition()); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); return slideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 7c8605bc2..39fe5163b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -3,6 +3,7 @@ import java.util.ArrayList; + import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -29,7 +30,6 @@ import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; -import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; @@ -71,9 +71,6 @@ public class SpaceManager implements ISpaceManager { @Autowired private IImageFactory imageFactory; - - @Autowired - private ISpaceFactory spaceFactory; @Autowired private IImageService imageService; @@ -344,13 +341,32 @@ public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { space.setName(spaceForm.getDefaultName().getText()); space.setDescription(spaceForm.getDefaultDescription().getText()); addSpaceName(space,spaceForm.getDefaultName()); - spaceFactory.addSpaceDescription(space,spaceForm.getDefaultDescription()); + addSpaceDescription(space,spaceForm.getDefaultDescription()); for(LocalizedTextForm title:spaceForm.getNames()) { addSpaceName(space,title); } for(LocalizedTextForm text:spaceForm.getDescriptions()) { - spaceFactory.addSpaceDescription(space,text); + addSpaceDescription(space,text); + } + } + + /** + * Adds description to spaceDescription list. + * @param space + * @param descriptions + */ + @Override + public void addSpaceDescription(ISpace space, LocalizedTextForm description) { + if(!StringUtils.isEmpty(description.getText())) { + LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); + if(localizedText != null) { + localizedText.setText(description.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); + LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); + space.getSpaceDescriptions().add(newLocalizedText); + } } } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index 610195443..d4b378c87 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -21,6 +21,7 @@ import edu.asu.diging.vspace.core.model.impl.Slide; import edu.asu.diging.vspace.core.services.IModuleManager; import edu.asu.diging.vspace.core.services.ISlideManager; +import edu.asu.diging.vspace.core.services.impl.ExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Controller @@ -34,11 +35,14 @@ public class AddSlideController { @Autowired private ISlideFormFactory slideFormFactory; + + @Autowired + private ExhibitionManager exhibitionManager; @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { model.addAttribute("moduleId", moduleId); - model.addAttribute("slide", slideFormFactory.createNewSlideForm(new Slide())); + model.addAttribute("slide", slideFormFactory.createNewSlideForm(new Slide(), exhibitionManager.getStartExhibition())); model.addAttribute("sequences", moduleManager.getModuleSequences(moduleId)); return "staff/modules/slides/add"; From 4cc9fff9260e0cc09c5f6913ed63f1cab8f0dc66 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Wed, 24 Apr 2024 16:01:04 -0700 Subject: [PATCH 175/191] [VSPC-232-214-215-multiple-languages] Addressed review comments on redundacy of methods. --- .../vspace/core/services/ISlideManager.java | 4 +- .../impl/ExhibitionAboutPageManager.java | 24 ++------- .../core/services/impl/ExhibitionManager.java | 4 +- .../core/services/impl/SlideManager.java | 49 +++++-------------- 4 files changed, 20 insertions(+), 61 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index c280be4af..f7d1a7839 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -38,9 +38,7 @@ public interface ISlideManager { void updateNameAndDescription(ISlide slide, SlideForm slideForm); - void addSlideDescription(ISlide slide, LocalizedTextForm description); - - void addSlideName(ISlide slide, LocalizedTextForm name); + void addSlideDetails(ISlide slide, LocalizedTextForm name); SlideForm getSlideForm(String slideId); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 19c75ea81..0a938f93c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -67,14 +67,14 @@ public ExhibitionAboutPage store(AboutPageForm aboutPageForm) { ExhibitionAboutPage exhibitionAboutPage = getExhibitionAboutPage(); exhibitionAboutPage.setTitle(aboutPageForm.getTitle()); exhibitionAboutPage.setAboutPageText(aboutPageForm.getAboutPageText()); - setAboutPageTitle(aboutPageForm.getDefaultTitle(),exhibitionAboutPage); - setAboutPageDescription(aboutPageForm.getDefaultAboutPageText(),exhibitionAboutPage); - + setLocalizedText(aboutPageForm.getDefaultTitle(), exhibitionAboutPage.getExhibitionTitles()); + setLocalizedText(aboutPageForm.getDefaultAboutPageText(), exhibitionAboutPage.getExhibitionTextDescriptions()); + for(LocalizedTextForm title:aboutPageForm.getTitles()) { setLocalizedText(title, exhibitionAboutPage.getExhibitionTitles()); } for(LocalizedTextForm aboutPageText:aboutPageForm.getAboutPageTexts()) { - setAboutPageDescription(aboutPageText,exhibitionAboutPage); + setLocalizedText(aboutPageText, exhibitionAboutPage.getExhibitionTextDescriptions()); } return repo.save(exhibitionAboutPage); @@ -91,22 +91,6 @@ public ExhibitionAboutPage getExhibitionAboutPage() { List aboutPageList = findAll(); return aboutPageList != null && !aboutPageList.isEmpty() ? aboutPageList.get(0):new ExhibitionAboutPage(); } - - /** - * This method maps the title in ExhibitionAboutPage, and add that to - * exhibitionTitles list for each user selected Exhibition Language. - */ - public void setAboutPageTitle(LocalizedTextForm title, ExhibitionAboutPage exhibitionAboutPage) { - setLocalizedText(title, exhibitionAboutPage.getExhibitionTitles()); - } - - /** - * This method maps the description in ExhibitionAboutPage, and add that to - * exhibitionTextDescriptions list for each user selected Exhibition Language. - */ - public void setAboutPageDescription(LocalizedTextForm aboutPageText, ExhibitionAboutPage exhibitionAboutPage) { - setLocalizedText(aboutPageText, exhibitionAboutPage.getExhibitionTextDescriptions()); - } private void setLocalizedText(LocalizedTextForm textForm, List localizedTextList) { if (!StringUtils.isEmpty(textForm.getText())) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 0c694ea9c..6b154329d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -133,8 +133,8 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { if(checkIfLocalizedTextsExists(language)) { /** - * ExhibitionLanguageDeletionException is thrown if any IExhibitionLanguage object in the specified list - * does not have associated localized texts. + * ExhibitionLanguageDeletionException is thrown to let the user know that the + * particular language has some information associated with it and that it cannot be deleted. */ throw new ExhibitionLanguageDeletionException() ; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index f3e80ac08..f19f0a272 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -66,7 +66,7 @@ public class SlideManager implements ISlideManager { private ChoiceFactory choiceFactory; @Autowired - ExhibitionLanguageRepository exhibitionLanguageRepository; + private ExhibitionLanguageRepository exhibitionLanguageRepository; @Autowired private ExhibitionManager exhibitionManager; @@ -193,14 +193,14 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { slide.setName(slideForm.getDefaultName().getText()); slide.setDescription(slideForm.getDefaultDescription().getText()); - addSlideName(slide,slideForm.getDefaultName()); - addSlideDescription(slide,slideForm.getDefaultDescription()); + addSlideDetails(slide,slideForm.getDefaultName()); + addSlideDetails(slide,slideForm.getDefaultDescription()); for(LocalizedTextForm title:slideForm.getNames()) { - addSlideName(slide,title); + addSlideDetails(slide,title); } for(LocalizedTextForm text:slideForm.getDescriptions()) { - addSlideDescription(slide,text); + addSlideDetails(slide,text); } } @@ -210,40 +210,17 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { * @param names */ @Override - public void addSlideName(ISlide slide, LocalizedTextForm name) { - if(name!=null && !StringUtils.isEmpty(name.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); + public void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData) { + if(!StringUtils.isEmpty(localizedTextFormData.getText())) { + LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalisedTextId()).orElse(null); if(localizedText != null) { - localizedText.setText(name.getText()); + localizedText.setText(localizedTextFormData.getText()); } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()) + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(localizedTextFormData.getExhibitionLanguageId()) .orElse(null); - if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, name.getText()); - slide.getSlideNames().add(localizedText); - } - } - } - } - - /** - * Adds description to slideDescription list. - * @param slide - * @param descriptions - */ - @Override - public void addSlideDescription(ISlide slide, LocalizedTextForm description) { - if(description!=null && !StringUtils.isEmpty(description.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()) - .orElse(null); - if(exhibitionLanguage != null) { - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); - slide.getSlideDescriptions().add(newLocalizedText); - } + localizedText = new LocalizedText(exhibitionLanguage, localizedTextFormData.getText()); + slide.getSlideNames().add(localizedText); + } } } From 106c3c64d7201fff66924019945a92d04d70a0a6 Mon Sep 17 00:00:00 2001 From: ShivaniYerram Date: Tue, 30 Apr 2024 15:22:10 -0700 Subject: [PATCH 176/191] [VSPC-232-214-215-multiple-languages] Addressed review comments. --- .../core/factory/ISpaceFormFactory.java | 5 +- .../impl/LocalizedTextFormFactory.java | 1 + .../core/factory/impl/SlideFormFactory.java | 4 - .../core/factory/impl/SpaceFactory.java | 1 - .../core/factory/impl/SpaceFormFactory.java | 26 ++----- .../model/ISlideExhibitionLanguageObject.java | 5 -- .../ILocalizedTextFormDataManager.java | 13 ++++ .../vspace/core/services/ISpaceManager.java | 4 +- .../impl/LocalizedTextFormDataManager.java | 52 +++++++++++++ .../core/services/impl/SlideManager.java | 36 ++------- .../core/services/impl/SpaceManager.java | 72 ++++-------------- .../vspace/web/staff/AddSpaceController.java | 12 ++- .../vspace/web/staff/EditSpaceController.java | 6 +- .../ExhibitionConfigurationController.java | 2 +- .../vspace/web/staff/forms/SpaceForm.java | 4 +- .../core/services/impl/SlideFactoryTest.java | 26 +++++-- .../core/services/impl/SlideManagerTest.java | 14 +--- .../core/services/impl/SpaceFactoryTest.java | 8 +- .../core/services/impl/SpaceManagerTest.java | 75 ++----------------- 19 files changed, 149 insertions(+), 217 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ISlideExhibitionLanguageObject.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java index 1ee4c74e9..3dc8f196d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java @@ -1,12 +1,13 @@ package edu.asu.diging.vspace.core.factory; +import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; public interface ISpaceFormFactory { - SpaceForm createNewSpaceForm(ISpace space); + SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibtion); - SpaceForm getSpaceForm(String spaceId); + SpaceForm getSpaceForm(ISpace space, IExhibition startExhibtion); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java index 47815dedb..432ea5591 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java @@ -2,6 +2,7 @@ import java.util.List; + import org.springframework.stereotype.Service; import org.thymeleaf.util.StringUtils; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java index ecb9360f2..0995ebdfe 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java @@ -27,19 +27,15 @@ public SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition) { SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - IExhibitionLanguage defaultLanguage = startExhibition.getDefaultLanguage(); - slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideNames())); slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideDescriptions())); - startExhibition.getLanguages().forEach(language -> { if(!language.isDefault()) { slideForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideNames())); slideForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); } }); - return slideForm; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index c93bd3445..776692cf2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -17,7 +17,6 @@ public class SpaceFactory implements ISpaceFactory { /** * Creates a new space based on the provided form. - * * @param form The form containing details for creating the space. * @return The newly created space and saves it to the repository. */ diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java index 916a567e7..870b7933c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java @@ -1,24 +1,17 @@ package edu.asu.diging.vspace.core.factory.impl; import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; -import edu.asu.diging.vspace.core.services.IExhibitionManager; -import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Service public class SpaceFormFactory implements ISpaceFormFactory { - @Autowired - private IExhibitionManager exhibitionManager; - - @Autowired - private ISpaceManager spaceManager; - @Autowired private LocalizedTextFormFactory localizedTextFormCreation; @@ -29,20 +22,18 @@ public class SpaceFormFactory implements ISpaceFormFactory { * @return */ @Override - public SpaceForm createNewSpaceForm(ISpace space) { + public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { SpaceForm spaceForm = new SpaceForm(); spaceForm.setName(space.getName()); spaceForm.setDescription(space.getDescription()); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - - spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibtion.getDefaultLanguage(), space.getSpaceNames())); - spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibtion.getDefaultLanguage(), space.getSpaceDescriptions())); - - startExhibtion.getLanguages().forEach(language -> { + startExhibition.getLanguages().forEach(language -> { if(!language.isDefault()) { spaceForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); spaceForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceDescriptions())); + } else { + spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceNames())); + spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceDescriptions())); } }); @@ -50,9 +41,8 @@ public SpaceForm createNewSpaceForm(ISpace space) { } @Override - public SpaceForm getSpaceForm(String spaceId) { - ISpace space = spaceManager.getSpace(spaceId); - SpaceForm slideForm = createNewSpaceForm(space); + public SpaceForm getSpaceForm(ISpace space, IExhibition startExhibition) { + SpaceForm slideForm = createNewSpaceForm(space, startExhibition); slideForm.setName(space.getName()); slideForm.setDescription(space.getDescription()); return slideForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISlideExhibitionLanguageObject.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISlideExhibitionLanguageObject.java deleted file mode 100644 index 96f05e22c..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ISlideExhibitionLanguageObject.java +++ /dev/null @@ -1,5 +0,0 @@ -package edu.asu.diging.vspace.core.model; - -public interface ISlideExhibitionLanguageObject { - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java new file mode 100644 index 000000000..eca50f679 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.services; + +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +import java.util.List; + +import edu.asu.diging.vspace.core.model.ILocalizedText; + +public interface ILocalizedTextFormDataManager { + + public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFormData, List detailList); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 79d26ffe1..9dd058390 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -44,8 +44,6 @@ public interface ISpaceManager { void updateNameAndDescription(ISpace space, SpaceForm spaceForm); - void addSpaceName(ISpace space, LocalizedTextForm names); - - void addSpaceDescription(ISpace space, LocalizedTextForm description); + void addSpaceDetails(ISpace space, LocalizedTextForm names); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java new file mode 100644 index 000000000..40afb9cf5 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java @@ -0,0 +1,52 @@ +package edu.asu.diging.vspace.core.services.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; + +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.services.ILocalizedTextFormDataManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +@Service +public class LocalizedTextFormDataManager implements ILocalizedTextFormDataManager{ + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepository; + + @Autowired + private LocalizedTextRepository localizedTextRepo; + + /** + * Adds localized details (names or descriptions) to the specified list. + * + * @param entity The entity (slide or space) to which the details will be added. + * @param localizedTextFormData The localized text form containing the details to be added. + * @param detailList The list in the entity where the details will be added (e.g., slideNames, spaceNames). + */ + @Override + public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFormData, List detailList) { + if (entity == null || StringUtils.isEmpty(localizedTextFormData.getText())) { + return; + } + + LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalisedTextId()).orElse(null); + if (localizedText != null) { + localizedText.setText(localizedTextFormData.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(localizedTextFormData.getExhibitionLanguageId()).orElse(null); + if (exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, localizedTextFormData.getText()); + detailList.add(localizedText); + } + } + } + + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index f19f0a272..a2b6a466a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -1,13 +1,10 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; - - import java.util.Iterator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; - import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,12 +12,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.thymeleaf.util.StringUtils; - import edu.asu.diging.vspace.core.data.BranchingPointRepository; import edu.asu.diging.vspace.core.data.ChoiceRepository; -import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; -import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.factory.impl.ChoiceFactory; @@ -33,10 +26,9 @@ import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.BranchingPoint; import edu.asu.diging.vspace.core.model.impl.Choice; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.ILocalizedTextFormDataManager; import edu.asu.diging.vspace.core.services.ISlideManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @@ -65,19 +57,16 @@ public class SlideManager implements ISlideManager { @Autowired private ChoiceFactory choiceFactory; - @Autowired - private ExhibitionLanguageRepository exhibitionLanguageRepository; - @Autowired private ExhibitionManager exhibitionManager; @Autowired - private LocalizedTextRepository localizedTextRepo; + private ILocalizedTextFormDataManager localizedTextFormDataManager; private final Logger logger = LoggerFactory.getLogger(getClass()); @Override - public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type) { + public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type){ ISlide slide = slideFactory.createSlide(module, slideForm, type); return slideRepo.save((Slide) slide); } @@ -205,24 +194,13 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { } /** - * Adds name to slideNames List + * Adds name or descriptions to slideNames List * @param slide * @param names */ @Override public void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData) { - if(!StringUtils.isEmpty(localizedTextFormData.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(localizedTextFormData.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(localizedTextFormData.getExhibitionLanguageId()) - .orElse(null); - localizedText = new LocalizedText(exhibitionLanguage, localizedTextFormData.getText()); - slide.getSlideNames().add(localizedText); - - } - } + localizedTextFormDataManager.addLocalizedDetails(slide, localizedTextFormData, slide.getSlideNames()); } @Override @@ -233,6 +211,4 @@ public SlideForm getSlideForm(String slideId) { slideForm.setDescription(slide.getDescription()); return slideForm; } -} - - \ No newline at end of file +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 39fe5163b..2d2909fa3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -1,27 +1,18 @@ package edu.asu.diging.vspace.core.services.impl; import java.util.ArrayList; - - - import java.util.Iterator; import java.util.List; import java.util.Optional; - import javax.transaction.Transactional; - import org.apache.tika.Tika; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.PropertySource; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.thymeleaf.util.StringUtils; - -import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.data.ImageRepository; -import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SpaceLinkRepository; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.data.display.SpaceDisplayRepository; @@ -36,14 +27,13 @@ import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; import edu.asu.diging.vspace.core.model.display.impl.SpaceDisplay; import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceLink; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; import edu.asu.diging.vspace.core.model.impl.VSImage; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; +import edu.asu.diging.vspace.core.services.ILocalizedTextFormDataManager; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.model.ImageData; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @@ -86,12 +76,9 @@ public class SpaceManager implements ISpaceManager { @Autowired private SpaceLinkDisplayRepository spaceLinkDisplayRepo; - - @Autowired - private ExhibitionLanguageRepository exhibitionLanguageRepository; - + @Autowired - private LocalizedTextRepository localizedTextRepo; + private ILocalizedTextFormDataManager localizedTextFormDataManager; /* * (non-Javadoc) @@ -312,61 +299,28 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc } /** - * - * Adds name to spaceNames List - * - * - * @param space - * @param names + * Adds name to spaceNames List of the given space object. + * @param space The space to which the name will be added. + * @param name The localized text form containing the name to be added. */ @Override - public void addSpaceName(ISpace space, LocalizedTextForm name) { - if(name!=null && !StringUtils.isEmpty(name.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(name.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(name.getText()); - } - else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(name.getExhibitionLanguageId()).orElse(null); - if(exhibitionLanguage != null) { - localizedText = new LocalizedText(exhibitionLanguage, name.getText()); - space.getSpaceNames().add(localizedText); - } - } - } + public void addSpaceDetails(ISpace space, LocalizedTextForm name) { + localizedTextFormDataManager.addLocalizedDetails(space, name, space.getSpaceNames()); } @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { space.setName(spaceForm.getDefaultName().getText()); space.setDescription(spaceForm.getDefaultDescription().getText()); - addSpaceName(space,spaceForm.getDefaultName()); - addSpaceDescription(space,spaceForm.getDefaultDescription()); + addSpaceDetails(space,spaceForm.getDefaultName()); + addSpaceDetails(space,spaceForm.getDefaultDescription()); for(LocalizedTextForm title:spaceForm.getNames()) { - addSpaceName(space,title); + addSpaceDetails(space,title); } for(LocalizedTextForm text:spaceForm.getDescriptions()) { - addSpaceDescription(space,text); - } - } - - /** - * Adds description to spaceDescription list. - * @param space - * @param descriptions - */ - @Override - public void addSpaceDescription(ISpace space, LocalizedTextForm description) { - if(!StringUtils.isEmpty(description.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(description.getLocalisedTextId()).orElse(null); - if(localizedText != null) { - localizedText.setText(description.getText()); - } else { - ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(description.getExhibitionLanguageId()).orElse(null); - LocalizedText newLocalizedText = new LocalizedText(exhibitionLanguage, description.getText()); - space.getSpaceDescriptions().add(newLocalizedText); - } + addSpaceDetails(space,text); } } + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java index 3bd7ba2f3..ae71ae690 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSpaceController.java @@ -23,6 +23,7 @@ import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceStatus; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IImageService; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; @@ -45,11 +46,14 @@ public class AddSpaceController { @Autowired private ISpaceFormFactory spaceFormFactory; - + + @Autowired + private IExhibitionManager exhibitionManager; + @RequestMapping(value = "/staff/space/add", method = RequestMethod.GET) public String showAddSpace(Model model) { ISpace space = new Space(); - model.addAttribute("space", spaceFormFactory.createNewSpaceForm(space)); + model.addAttribute("space", spaceFormFactory.createNewSpaceForm(space, exhibitionManager.getStartExhibition())); model.addAttribute("images", imageService.getImages(1)); return "staff/spaces/add"; @@ -60,6 +64,9 @@ public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @Reques Principal principal, @RequestParam(value = "imageId", required=false) String imageId, RedirectAttributes redirectAttrs) throws IOException { ISpace space = new Space(); + /* + * Check if the default name is provided. If a non-default name is provided, create a new form without default values + */ if (!spaceForm.getDefaultName().getText().isEmpty()) { SpaceForm nonDefaultSpaceForm = new SpaceForm(); LocalizedTextForm nameSpace = spaceForm.getNames().stream().filter(name -> name != null).findFirst().orElse(null); @@ -69,6 +76,7 @@ public String addSpace(Model model, @ModelAttribute SpaceForm spaceForm, @Reques space = spaceFactory.createSpace(nonDefaultSpaceForm); spaceManager.updateNameAndDescription(space, nonDefaultSpaceForm); } else { + // If only the default name is provided, create the space with the default form space = spaceFactory.createSpace(spaceForm); spaceManager.updateNameAndDescription(space, spaceForm); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java index 8853ec04b..5b99f15a0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java @@ -10,6 +10,7 @@ import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISpaceManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @@ -21,11 +22,14 @@ public class EditSpaceController { @Autowired private ISpaceFormFactory spaceFormFactory; + + @Autowired + private IExhibitionManager exhibitionManager; @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("spaceId") String spaceId) { - model.addAttribute("spaceForm", spaceFormFactory.getSpaceForm(spaceId)); + model.addAttribute("spaceForm", spaceFormFactory.getSpaceForm(spaceManager.getSpace(spaceId), exhibitionManager.getStartExhibition())); model.addAttribute("spaceId", spaceId); return "staff/spaces/edit"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java index 2bd4b029d..0a79f8fc0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionConfigurationController.java @@ -79,7 +79,7 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return - * @throws ExhibitionLanguageDeletionException + * @throws IOException */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java index d307a5b48..fe24c5b34 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/SpaceForm.java @@ -5,8 +5,8 @@ import java.util.List; public class SpaceForm { - - private String name; + + private String name; private String description; private LocalizedTextForm defaultName; diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java index 481b65ab2..3ffd51920 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideFactoryTest.java @@ -6,12 +6,15 @@ import java.util.ArrayList; import java.util.List; +import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.factory.impl.SlideFactory; +import edu.asu.diging.vspace.core.factory.impl.SlideFormFactory; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -28,22 +31,28 @@ public class SlideFactoryTest { @Mock private ExhibitionManager exhibitionManager; + @Mock + private SlideFormFactory slideFormFactory; + @InjectMocks private SlideFactory serviceToTest; - + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); // Initialize annotated mocks + } + @Test public void test_createNewSlideForm_success() { Exhibition exhibition = new Exhibition(); List languageList = new ArrayList(); ExhibitionLanguage language2 = new ExhibitionLanguage(); - language2.setLabel("English"); languageList.add(language2); exhibition.setLanguages(languageList); - List slidePageList = new ArrayList(); + List slidePageList = new ArrayList<>(); Slide slidePage = new Slide(); LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); @@ -54,12 +63,17 @@ public void test_createNewSlideForm_success() { slidePage.setSlideNames(titleList); slidePage.setSlideDescriptions(slideTextList); slidePageList.add(slidePage); - + + when(slideRepo.findAll()).thenReturn(slidePageList); - when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); + + //when(slideFormFactory.createNewSlideForm(slidePage, exhibition)).thenReturn(slideForm); + + SlideForm slideForm = serviceToTest.createSlide(slidePage, exhibitionManager.getStartExhibition()); + - SlideForm slideForm = serviceToTest.createNewSlideForm(slidePage); assertEquals(slideForm.getDescriptions().size(), 1); assertEquals(slideForm.getNames().size(), 1); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java index 50d7e9b51..7a9b8b041 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import static org.junit.Assert.assertEquals; + import static org.mockito.Mockito.when; import java.util.ArrayList; @@ -14,21 +15,16 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.springframework.beans.factory.annotation.Autowired; - import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.exception.SlideDoesNotExistException; import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; @@ -190,7 +186,7 @@ public void test_deleteSlideById_slideIdPresentManySequences() throws SlideDoesN @Test public void test_createSlide_success() { - List slidePageList = new ArrayList(); + List slidePageList = new ArrayList(); slidePageList.add(new Slide()); @@ -215,21 +211,17 @@ public void test_createSlide_success() { when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); - IModule module = moduleManager.getModule(moduleId); - SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); - Slide slide = new Slide(); Exhibition exhibition = new Exhibition(); when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); when(slideRepo.save(slide)).thenReturn(slide); - ISlide savedslide = slideManagerToTest.createSlide(module, slideForm, type); assertEquals(locText1.getText(), "title"); assertEquals(locText2.getText(), "slide text"); } @Test public void test_createSlide_failure() { - List slidePageList = new ArrayList(); + List slidePageList = new ArrayList(); slidePageList.add(new Slide()); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java index 146c74dd9..82fd76c3b 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceFactoryTest.java @@ -12,6 +12,7 @@ import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.impl.SpaceFactory; +import edu.asu.diging.vspace.core.factory.impl.SpaceFormFactory; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -28,6 +29,9 @@ public class SpaceFactoryTest { @Mock private ExhibitionManager exhibitionManager; + @Mock + private SpaceFormFactory spaceFormFactory; + @InjectMocks private SpaceFactory serviceToTest; @@ -43,7 +47,7 @@ public void test_createNewSpaceForm_success() { languageList.add(language2); exhibition.setLanguages(languageList); - List spacePageList = new ArrayList(); + List spacePageList = new ArrayList(); Space spacePage = new Space(); LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); @@ -59,7 +63,7 @@ public void test_createNewSpaceForm_success() { when(exhibitionManager.getStartExhibition()).thenReturn(exhibition); - SpaceForm spaceForm = serviceToTest.createNewSpaceForm(spacePage); + SpaceForm spaceForm = spaceFormFactory.createNewSpaceForm(spacePage, exhibitionManager.getStartExhibition()); assertEquals(spaceForm.getDescriptions().size(), 1); assertEquals(spaceForm.getNames().size(), 1); diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java index 8c2611134..7d8c8ded1 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SpaceManagerTest.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import static org.junit.Assert.assertEquals; + import static org.mockito.Mockito.when; import java.util.ArrayList; @@ -27,18 +28,16 @@ import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; +import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.factory.ISpaceLinkDisplayFactory; import edu.asu.diging.vspace.core.factory.ISpaceLinkFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.IExhibition; -import edu.asu.diging.vspace.core.model.IExhibitionLanguage; -import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; import edu.asu.diging.vspace.core.model.display.impl.SpaceDisplay; import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Space; import edu.asu.diging.vspace.core.model.impl.SpaceLink; @@ -83,6 +82,9 @@ public class SpaceManagerTest { @Mock private ISpaceDisplayFactory spaceDisplayFactory; + + @Mock + private ISpaceFactory spaceFactory; @Mock private ExhibitionManager exhibitionManager; @@ -323,71 +325,4 @@ public void test_getSpacesWithImageId_ImageIdIsNull(){ Assert.assertNull(managerToTest.getSpacesWithImageId(null)); } - @Test - public void test_createSpace_success() { - List spacePageList = new ArrayList(); - - spacePageList.add(new Space()); - - SpaceForm spaceForm = new SpaceForm(); - List titleList = new ArrayList(); - titleList.add(new LocalizedTextForm("title", "ID1", "langId", "English")); - List spaceTextList = new ArrayList(); - - spaceTextList.add(new LocalizedTextForm( "space text","ID2", "langId", "English")); - - - spaceForm.setNames(titleList); - spaceForm.setDescriptions(spaceTextList); - when(spaceRepo.findAll()).thenReturn(spacePageList); - - LocalizedText locText1 = new LocalizedText(); - locText1.setId( "ID1"); - - LocalizedText locText2 = new LocalizedText(); - locText1.setId( "ID2"); - when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); - when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); - - - Space space = new Space(); - Exhibition exhibition = new Exhibition(); - when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); - when(spaceRepo.save(space)).thenReturn(space); - ISpace savedspace = managerToTest.createSpace(spaceForm); - assertEquals(locText1.getText(), "title"); - assertEquals(locText2.getText(), "space text"); - - } - - @Test - public void test_createSpace_failure() { - List spacePageList = new ArrayList(); - - spacePageList.add(new Space()); - - SpaceForm spaceForm = new SpaceForm(); - List titleList = new ArrayList(); - titleList.add(new LocalizedTextForm("title", "ID1", "langId", "English")); - List spaceTextList = new ArrayList(); - - spaceTextList.add(new LocalizedTextForm( "space text","ID2", "langId", "English")); - - spaceForm.setNames(titleList); - spaceForm.setDescriptions(spaceTextList); - when(spaceRepo.findAll()).thenReturn(spacePageList); - - - LocalizedText locText1 = new LocalizedText(); - locText1.setId( "ID1"); - Exhibition exhibition = new Exhibition(); - when(exhibitionManager.getStartExhibition()).thenReturn((IExhibition)exhibition); - - - when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.empty()); - when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.empty()); - when(exhibitionLanguageRepository.findById("langId")).thenReturn(Optional.empty()); - managerToTest.createSpace(spaceForm); - assertEquals(locText1.getText(), null); - } } From 0f660264793c2413081ad4db7fd590afa280e55d Mon Sep 17 00:00:00 2001 From: pooja-thalur Date: Fri, 26 Jul 2024 16:21:25 -0700 Subject: [PATCH 177/191] [VSPC-215] addressed pr comments --- .../vspace/core/factory/impl/LocalizedTextFormFactory.java | 2 +- .../vspace/core/services/impl/ExhibitionAboutPageManager.java | 2 +- .../core/services/impl/LocalizedTextFormDataManager.java | 2 +- .../asu/diging/vspace/web/staff/forms/LocalizedTextForm.java | 4 ++-- .../main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html | 1 - vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html | 2 -- 6 files changed, 5 insertions(+), 8 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java index 432ea5591..564f1d90f 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java @@ -29,7 +29,7 @@ public LocalizedTextForm createLocalizedTextForm( IExhibitionLanguage language, if(localizedText != null) { localizedAboutTextForm.setText(localizedText.getText()); - localizedAboutTextForm.setLocalisedTextId( localizedText.getId()); + localizedAboutTextForm.setLocalizedTextId( localizedText.getId()); } localizedAboutTextForm.setIsDefaultExhibitionLanguage(language.isDefault()); return localizedAboutTextForm; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 0a938f93c..9494b2218 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -94,7 +94,7 @@ public ExhibitionAboutPage getExhibitionAboutPage() { private void setLocalizedText(LocalizedTextForm textForm, List localizedTextList) { if (!StringUtils.isEmpty(textForm.getText())) { - LocalizedText localizedText = localizedTextRepo.findById(textForm.getLocalisedTextId()).orElse(null); + LocalizedText localizedText = localizedTextRepo.findById(textForm.getLocalizedTextId()).orElse(null); if (localizedText != null) { localizedText.setText(textForm.getText()); } else { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java index 40afb9cf5..40c205829 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java @@ -36,7 +36,7 @@ public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFo return; } - LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalisedTextId()).orElse(null); + LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalizedTextId()).orElse(null); if (localizedText != null) { localizedText.setText(localizedTextFormData.getText()); } else { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index a4c242661..7754473a7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -34,11 +34,11 @@ public void setText(String text) { this.text = text; } - public String getLocalisedTextId() { + public String getLocalizedTextId() { return localizedTextId; } - public void setLocalisedTextId(String localisedTextId) { + public void setLocalizedTextId(String localisedTextId) { this.localizedTextId = localisedTextId; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 0dba351be..57ea4518a 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -58,7 +58,6 @@ }); function openForm(evt, label) { - console.log(label); var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index 27b0e39e0..5e7a8fb7f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -56,12 +56,10 @@ ajax: { url: function (params) { var imageURL = [[@{|/staff/images/search|}]]; - console.log(imageURL); return imageURL; }, dataType: 'json', processResults: function (data) { - console.log(data); return { results: data, }; From c963e2d903ba20d80c967f6d0ace5dad4b579f83 Mon Sep 17 00:00:00 2001 From: pooja-thalur Date: Mon, 29 Jul 2024 16:33:45 -0700 Subject: [PATCH 178/191] [VSPC-215]fixed errors --- .../vspace/core/factory/impl/SpaceFormFactory.java | 13 ++++++------- .../vspace/core/services/IExhibitionManager.java | 2 -- .../diging/vspace/web/staff/AddSlideController.java | 8 +++++--- .../webapp/WEB-INF/views/staff/spaces/edit.html | 9 ++++----- .../vspace/core/services/impl/SlideManagerTest.java | 6 ++++-- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java index 870b7933c..cf0e2ada1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java @@ -28,12 +28,13 @@ public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { spaceForm.setDescription(space.getDescription()); startExhibition.getLanguages().forEach(language -> { - if(!language.isDefault()) { + if(language.isDefault()) { + spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceNames())); + spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceDescriptions())); + } + else { spaceForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); spaceForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceDescriptions())); - } else { - spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceNames())); - spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceDescriptions())); } }); @@ -42,9 +43,7 @@ public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { @Override public SpaceForm getSpaceForm(ISpace space, IExhibition startExhibition) { - SpaceForm slideForm = createNewSpaceForm(space, startExhibition); - slideForm.setName(space.getName()); - slideForm.setDescription(space.getDescription()); + SpaceForm slideForm = createNewSpaceForm(space, startExhibition); return slideForm; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index 5ca51a5f7..cab8a9cf1 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -8,8 +8,6 @@ import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.LocalizedText; - /* * (non-Javadoc) * diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java index d4b378c87..efa764afb 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddSlideController.java @@ -19,6 +19,7 @@ import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IModuleManager; import edu.asu.diging.vspace.core.services.ISlideManager; import edu.asu.diging.vspace.core.services.impl.ExhibitionManager; @@ -26,6 +27,9 @@ @Controller public class AddSlideController { + + @Autowired + private IExhibitionManager exhibitionManager; @Autowired private ISlideManager slideManager; @@ -35,9 +39,7 @@ public class AddSlideController { @Autowired private ISlideFormFactory slideFormFactory; - - @Autowired - private ExhibitionManager exhibitionManager; + @RequestMapping(value = "/staff/module/{id}/slide/add", method = RequestMethod.GET) public String showAddSlide(@PathVariable("id") String moduleId, Model model) { diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html index 512160c81..6d9e16e1e 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html @@ -75,18 +75,17 @@

Edit Space: [(${spaceForm.name})]

-
-
-

[[${spaceForm.defaultName.exhibitionLanguageLabel}]]

+
+

[[${spaceForm.defaultName.exhibitionLanguageLabel}]]

- + - + diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java index 7a9b8b041..1d6506556 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/SlideManagerTest.java @@ -205,9 +205,11 @@ public void test_createSlide_success() { LocalizedText locText1 = new LocalizedText(); locText1.setId( "ID1"); + locText1.setText("title"); LocalizedText locText2 = new LocalizedText(); - locText1.setId( "ID2"); + locText2.setId( "ID2"); + locText2.setText("title"); when(localizedRextRepo.findById("ID1") ).thenReturn(Optional.of(locText1)); when(localizedRextRepo.findById("ID2") ).thenReturn(Optional.of(locText2)); @@ -234,7 +236,7 @@ public void test_createSlide_failure() { slideForm.setNames(titleList); slideForm.setDescriptions(slideTextList); - slideForm.setType("Slide"); + slideForm.setType("SLIDE"); when(slideRepo.findAll()).thenReturn(slidePageList); LocalizedText locText1 = new LocalizedText(); From ef448b57bdec01a7d14deb3f1426d0feb5944258 Mon Sep 17 00:00:00 2001 From: pooja-thalur Date: Tue, 30 Jul 2024 16:26:40 -0700 Subject: [PATCH 179/191] [VSPC-215] fixed issue with displaying space title and description --- .../vspace/core/services/ISpaceManager.java | 3 ++- .../services/impl/ExhibitionAboutPageManager.java | 1 - .../impl/LocalizedTextFormDataManager.java | 3 ++- .../vspace/core/services/impl/SpaceManager.java | 15 +++++++++------ .../vspace/web/staff/EditSpaceController.java | 3 --- .../webapp/WEB-INF/views/staff/spaces/edit.html | 13 ++++++------- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java index 9dd058390..f32c53064 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISpaceManager.java @@ -7,6 +7,7 @@ import org.springframework.data.domain.Pageable; import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.impl.Space; @@ -44,6 +45,6 @@ public interface ISpaceManager { void updateNameAndDescription(ISpace space, SpaceForm spaceForm); - void addSpaceDetails(ISpace space, LocalizedTextForm names); + void addSpaceDetails(ISpace space, LocalizedTextForm names, List localizedTextList); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java index 9494b2218..c85f2a509 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionAboutPageManager.java @@ -104,5 +104,4 @@ private void setLocalizedText(LocalizedTextForm textForm, List l } } } - } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java index 40c205829..acd073a76 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/LocalizedTextFormDataManager.java @@ -32,7 +32,7 @@ public class LocalizedTextFormDataManager implements ILocalizedTextFormDataManag */ @Override public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFormData, List detailList) { - if (entity == null || StringUtils.isEmpty(localizedTextFormData.getText())) { + if (StringUtils.isEmpty(localizedTextFormData.getText())) { return; } @@ -46,6 +46,7 @@ public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFo detailList.add(localizedText); } } + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 2d2909fa3..43213bbf7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -22,6 +22,7 @@ import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.IVSImage; import edu.asu.diging.vspace.core.model.display.ISpaceDisplay; @@ -304,22 +305,24 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc * @param name The localized text form containing the name to be added. */ @Override - public void addSpaceDetails(ISpace space, LocalizedTextForm name) { - localizedTextFormDataManager.addLocalizedDetails(space, name, space.getSpaceNames()); + public void addSpaceDetails(ISpace space, LocalizedTextForm name, List localizedTextList) { + localizedTextFormDataManager.addLocalizedDetails(space, name, localizedTextList); } @Override public void updateNameAndDescription(ISpace space, SpaceForm spaceForm) { space.setName(spaceForm.getDefaultName().getText()); space.setDescription(spaceForm.getDefaultDescription().getText()); - addSpaceDetails(space,spaceForm.getDefaultName()); - addSpaceDetails(space,spaceForm.getDefaultDescription()); + List names = space.getSpaceNames(); + List descriptions = space.getSpaceDescriptions(); + addSpaceDetails(space,spaceForm.getDefaultName(), names); + addSpaceDetails(space,spaceForm.getDefaultDescription(), descriptions); for(LocalizedTextForm title:spaceForm.getNames()) { - addSpaceDetails(space,title); + addSpaceDetails(space,title, names); } for(LocalizedTextForm text:spaceForm.getDescriptions()) { - addSpaceDetails(space,text); + addSpaceDetails(space,text, descriptions); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java index 5b99f15a0..77d0c529b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java @@ -28,7 +28,6 @@ public class EditSpaceController { @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("spaceId") String spaceId) { - model.addAttribute("spaceForm", spaceFormFactory.getSpaceForm(spaceManager.getSpace(spaceId), exhibitionManager.getStartExhibition())); model.addAttribute("spaceId", spaceId); return "staff/spaces/edit"; @@ -37,8 +36,6 @@ public String show(Model model, @PathVariable("spaceId") String spaceId) { @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.POST) public String save(@ModelAttribute SpaceForm spaceForm, @PathVariable("spaceId") String spaceId) { ISpace space = spaceManager.getSpace(spaceId); - space.setName(spaceForm.getName()); - space.setDescription(spaceForm.getDescription()); spaceManager.updateNameAndDescription(space, spaceForm); spaceManager.storeSpace(space, null, null); return "redirect:/staff/space/{spaceId}"; diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html index 6d9e16e1e..8485ab112 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html @@ -80,15 +80,14 @@

Edit Space: [(${spaceForm.name})]

-
-

[[${spaceForm.defaultName.exhibitionLanguageLabel}]]

+
- + - + - +
@@ -97,13 +96,13 @@

Edit Space: [(${spaceForm.name})]

[[${title.exhibitionLanguageLabel}]]

- +
- +
From 5635b312877a4ba87325750a7862ca28c54facc9 Mon Sep 17 00:00:00 2001 From: pooja-thalur Date: Wed, 31 Jul 2024 16:39:19 -0700 Subject: [PATCH 180/191] [VSPC-215] addressed pr comments --- .../vspace/core/factory/ISpaceFactory.java | 2 +- .../core/factory/ISpaceFormFactory.java | 2 - .../core/factory/impl/SpaceFactory.java | 10 +--- .../diging/vspace/core/model/IExhibition.java | 2 + .../vspace/core/model/impl/Exhibition.java | 1 + .../vspace/core/services/ISlideManager.java | 4 +- .../core/services/impl/SlideManager.java | 49 ++++++++++--------- .../vspace/web/staff/EditSlideController.java | 2 - .../vspace/web/staff/EditSpaceController.java | 2 +- .../web/staff/forms/LocalizedTextForm.java | 3 -- .../forms/factory}/AboutPageFormFactory.java | 2 +- .../factory}/LocalizedTextFormFactory.java | 2 +- .../forms/factory}/SlideFormFactory.java | 4 +- .../forms/factory}/SpaceFormFactory.java | 8 +-- .../views/staff/modules/slides/edit.html | 8 +-- 15 files changed, 45 insertions(+), 56 deletions(-) rename vspace/src/main/java/edu/asu/diging/vspace/{core/factory/impl => web/staff/forms/factory}/AboutPageFormFactory.java (97%) rename vspace/src/main/java/edu/asu/diging/vspace/{core/factory/impl => web/staff/forms/factory}/LocalizedTextFormFactory.java (96%) rename vspace/src/main/java/edu/asu/diging/vspace/{core/factory/impl => web/staff/forms/factory}/SlideFormFactory.java (95%) rename vspace/src/main/java/edu/asu/diging/vspace/{core/factory/impl => web/staff/forms/factory}/SpaceFormFactory.java (86%) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java index a8d1f4428..e038a2533 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFactory.java @@ -7,5 +7,5 @@ public interface ISpaceFactory { ISpace createSpace(SpaceForm form); - + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java index 3dc8f196d..daac8b772 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ISpaceFormFactory.java @@ -7,7 +7,5 @@ public interface ISpaceFormFactory { SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibtion); - - SpaceForm getSpaceForm(ISpace space, IExhibition startExhibtion); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java index 776692cf2..2914ebca0 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFactory.java @@ -1,9 +1,6 @@ package edu.asu.diging.vspace.core.factory.impl; -import org.springframework.beans.factory.annotation.Autowired; - import org.springframework.stereotype.Service; -import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.ISpaceFactory; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.Space; @@ -11,10 +8,7 @@ @Service public class SpaceFactory implements ISpaceFactory { - - @Autowired - private SpaceRepository spaceRepo; - + /** * Creates a new space based on the provided form. * @param form The form containing details for creating the space. @@ -25,6 +19,6 @@ public ISpace createSpace(SpaceForm form) { ISpace space = new Space(); space.setName(form.getName()); space.setDescription(form.getDescription()); - return spaceRepo.save((Space) space); + return space; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index fa2dfba61..3472f59f9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -38,4 +38,6 @@ public interface IExhibition extends IVSpaceElement { String getPreviewId(); + void setPreviewId(String previewId); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 606037df8..51559858b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -16,6 +16,7 @@ import javax.persistence.OneToOne; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import org.springframework.data.jpa.repository.Query; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index f7d1a7839..29a02bf33 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -8,9 +8,11 @@ import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; @@ -38,7 +40,7 @@ public interface ISlideManager { void updateNameAndDescription(ISlide slide, SlideForm slideForm); - void addSlideDetails(ISlide slide, LocalizedTextForm name); + void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList); SlideForm getSlideForm(String slideId); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index a2b6a466a..936433889 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; + import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,35 +13,36 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; + import edu.asu.diging.vspace.core.data.BranchingPointRepository; import edu.asu.diging.vspace.core.data.ChoiceRepository; import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; import edu.asu.diging.vspace.core.factory.impl.ChoiceFactory; import edu.asu.diging.vspace.core.factory.impl.SlideFactory; -import edu.asu.diging.vspace.core.factory.impl.SlideFormFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; import edu.asu.diging.vspace.core.model.IChoice; +import edu.asu.diging.vspace.core.model.ILocalizedText; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.display.SlideType; import edu.asu.diging.vspace.core.model.impl.BranchingPoint; import edu.asu.diging.vspace.core.model.impl.Choice; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; import edu.asu.diging.vspace.core.model.impl.Sequence; import edu.asu.diging.vspace.core.model.impl.Slide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ILocalizedTextFormDataManager; import edu.asu.diging.vspace.core.services.ISlideManager; import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; import edu.asu.diging.vspace.web.staff.forms.SlideForm; +import edu.asu.diging.vspace.web.staff.forms.factory.SlideFormFactory; @Service public class SlideManager implements ISlideManager { @Autowired private SlideFactory slideFactory; - - @Autowired - private SlideFormFactory slideFormFactory; @Autowired private SlideRepository slideRepo; @@ -58,7 +60,10 @@ public class SlideManager implements ISlideManager { private ChoiceFactory choiceFactory; @Autowired - private ExhibitionManager exhibitionManager; + private SlideFormFactory slideFormFactory; + + @Autowired + private IExhibitionManager exhibitionManager; @Autowired private ILocalizedTextFormDataManager localizedTextFormDataManager; @@ -66,7 +71,7 @@ public class SlideManager implements ISlideManager { private final Logger logger = LoggerFactory.getLogger(getClass()); @Override - public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type){ + public ISlide createSlide(IModule module, SlideForm slideForm, SlideType type) { ISlide slide = slideFactory.createSlide(module, slideForm, type); return slideRepo.save((Slide) slide); } @@ -182,33 +187,31 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { slide.setName(slideForm.getDefaultName().getText()); slide.setDescription(slideForm.getDefaultDescription().getText()); - addSlideDetails(slide,slideForm.getDefaultName()); - addSlideDetails(slide,slideForm.getDefaultDescription()); + List localizedTextNames = slide.getSlideNames(); + List localizedTextDescriptions = slide.getSlideDescriptions(); + addSlideDetails(slide,slideForm.getDefaultName(), localizedTextNames); + addSlideDetails(slide,slideForm.getDefaultDescription(), localizedTextDescriptions); + for(LocalizedTextForm title:slideForm.getNames()) { - addSlideDetails(slide,title); - } - for(LocalizedTextForm text:slideForm.getDescriptions()) { - addSlideDetails(slide,text); + addSlideDetails(slide, title, localizedTextNames); } + for(LocalizedTextForm text: slideForm.getDescriptions()) { + addSlideDetails(slide, text, localizedTextDescriptions); + } } - - /** - * Adds name or descriptions to slideNames List - * @param slide - * @param names - */ + @Override - public void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData) { - localizedTextFormDataManager.addLocalizedDetails(slide, localizedTextFormData, slide.getSlideNames()); + public void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList) { + localizedTextFormDataManager.addLocalizedDetails(slide, localizedTextFormData, localizedTextList); } - + @Override public SlideForm getSlideForm(String slideId) { ISlide slide = getSlide(slideId); SlideForm slideForm = slideFormFactory.createNewSlideForm(slide, exhibitionManager.getStartExhibition()); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - return slideForm; + return slideForm; } -} \ No newline at end of file +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java index 3073a2d82..2e650b641 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSlideController.java @@ -79,8 +79,6 @@ public String show(Model model, @PathVariable("moduleId") String moduleId, @Path @RequestMapping(value="/staff/module/{moduleId}/slide/{slideId}/edit", method=RequestMethod.POST) public String save(@ModelAttribute SlideForm slideForm, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); - slide.setName(slideForm.getDefaultName().getText()); - slide.setDescription(slideForm.getDefaultName().getText()); SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); slideManager.updateNameAndDescription(slide, slideForm); if(type.equals(SlideType.BRANCHING_POINT)) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java index 77d0c529b..750167499 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditSpaceController.java @@ -28,7 +28,7 @@ public class EditSpaceController { @RequestMapping(value="/staff/space/{spaceId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("spaceId") String spaceId) { - model.addAttribute("spaceForm", spaceFormFactory.getSpaceForm(spaceManager.getSpace(spaceId), exhibitionManager.getStartExhibition())); + model.addAttribute("spaceForm", spaceFormFactory.createNewSpaceForm(spaceManager.getSpace(spaceId), exhibitionManager.getStartExhibition())); model.addAttribute("spaceId", spaceId); return "staff/spaces/edit"; } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java index 7754473a7..d487be37e 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/LocalizedTextForm.java @@ -65,8 +65,5 @@ public Boolean getIsDefaultExhibitionLanguage() { public void setIsDefaultExhibitionLanguage(Boolean isDefaultExhibitionLanguage) { this.isDefaultExhibitionLanguage = isDefaultExhibitionLanguage; } - - - } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java similarity index 97% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java rename to vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java index f57116f34..57bd45699 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/AboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java @@ -1,4 +1,4 @@ -package edu.asu.diging.vspace.core.factory.impl; +package edu.asu.diging.vspace.web.staff.forms.factory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/LocalizedTextFormFactory.java similarity index 96% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java rename to vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/LocalizedTextFormFactory.java index 564f1d90f..8014e0dd3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/LocalizedTextFormFactory.java @@ -1,4 +1,4 @@ -package edu.asu.diging.vspace.core.factory.impl; +package edu.asu.diging.vspace.web.staff.forms.factory; import java.util.List; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java similarity index 95% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java rename to vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java index 0995ebdfe..ad1b9ee66 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java @@ -1,4 +1,4 @@ -package edu.asu.diging.vspace.core.factory.impl; +package edu.asu.diging.vspace.web.staff.forms.factory; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +36,6 @@ public SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition) { slideForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); } }); - return slideForm; + return slideForm; } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java similarity index 86% rename from vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java rename to vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java index cf0e2ada1..df1b22c64 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java @@ -1,4 +1,4 @@ -package edu.asu.diging.vspace.core.factory.impl; +package edu.asu.diging.vspace.web.staff.forms.factory; import org.springframework.beans.factory.annotation.Autowired; @@ -40,10 +40,4 @@ public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { return spaceForm; } - - @Override - public SpaceForm getSpaceForm(ISpace space, IExhibition startExhibition) { - SpaceForm slideForm = createNewSpaceForm(space, startExhibition); - return slideForm; - } } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index 1bd752a29..c8a6b00f3 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -129,12 +129,12 @@

Edit Slide: [[${slideForm.name}]]

[[${slideForm.defaultName.exhibitionLanguageLabel}]]

- + - +
@@ -143,13 +143,13 @@

Edit Slide: [[${slideForm.name}]]

[[${title.exhibitionLanguageLabel}]]

- +
- +
From 1844a0ca12b470e23f7e62bffc155c0e6e12c9ea Mon Sep 17 00:00:00 2001 From: pooja-thalur Date: Thu, 1 Aug 2024 16:39:47 -0700 Subject: [PATCH 181/191] [VSPC-215-214-232] addressed pr comments --- .../data/ExhibitionLanguageRepository.java | 7 ++- .../core/factory/ILocalizedTextFactory.java | 14 +++++ .../factory/impl/LocalizedTextFactory.java | 53 +++++++++++++++++++ .../diging/vspace/core/model/IExhibition.java | 2 - .../vspace/core/model/impl/Exhibition.java | 9 ---- .../core/model/impl/ExhibitionLanguage.java | 4 +- .../vspace/core/model/impl/LocalizedText.java | 4 +- .../core/services/IExhibitionManager.java | 2 + .../ILocalizedTextFormDataManager.java | 2 +- .../vspace/core/services/ISlideManager.java | 2 +- .../core/services/impl/ExhibitionManager.java | 16 +++--- .../core/services/impl/SlideManager.java | 15 +++--- .../core/services/impl/SpaceManager.java | 7 ++- .../forms/factory/AboutPageFormFactory.java | 8 +-- .../staff/forms/factory/SlideFormFactory.java | 6 ++- .../staff/forms/factory/SpaceFormFactory.java | 8 ++- .../views/staff/exhibit/aboutPage.html | 40 +++++++------- .../WEB-INF/views/staff/spaces/add.html | 1 - 18 files changed, 141 insertions(+), 59 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/ILocalizedTextFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFactory.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java index f3dd4b26a..da6d4d916 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/ExhibitionLanguageRepository.java @@ -1,10 +1,12 @@ package edu.asu.diging.vspace.core.data; import org.javers.spring.annotation.JaversSpringDataAuditable; - +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @Repository @@ -13,5 +15,8 @@ public interface ExhibitionLanguageRepository extends PagingAndSortingRepository ExhibitionLanguage findByLabel(String label); + @Query("SELECT l FROM ExhibitionLanguage l WHERE l.exhibition = ?1 AND l.isDefault = true") + IExhibitionLanguage findByExhibitionAndIsDefault(IExhibition exhibition); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ILocalizedTextFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ILocalizedTextFactory.java new file mode 100644 index 000000000..056b2cc84 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/ILocalizedTextFactory.java @@ -0,0 +1,14 @@ +package edu.asu.diging.vspace.core.factory; + +import java.util.List; + +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.core.services.ILocalizedTextFormDataManager; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +public interface ILocalizedTextFactory { + + ILocalizedText createLocalizedText(Object entity, LocalizedTextForm localizedTextFormData, List detailList); + +} \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFactory.java new file mode 100644 index 000000000..fd9c898b1 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/LocalizedTextFactory.java @@ -0,0 +1,53 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.thymeleaf.util.StringUtils; + +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; +import edu.asu.diging.vspace.core.data.LocalizedTextRepository; +import edu.asu.diging.vspace.core.factory.ILocalizedTextFactory; +import edu.asu.diging.vspace.core.model.ILocalizedText; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import edu.asu.diging.vspace.core.model.impl.LocalizedText; +import edu.asu.diging.vspace.web.staff.forms.LocalizedTextForm; + +@Service +@Transactional +public class LocalizedTextFactory implements ILocalizedTextFactory { + + @Autowired + private LocalizedTextRepository localizedTextRepo; + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepository; + + /** + * Adds localized text (names or descriptions) to the specified list. + * + * @param entity The entity (slide or space) to which the details will be added. + * @param localizedTextFormData The localized text form containing the details to be added. + * @param detailList The list in the entity where the details will be added (e.g., slideNames, spaceNames). + */ + @Override + public LocalizedText createLocalizedText(Object entity, LocalizedTextForm localizedTextFormData, List detailList) { + if (StringUtils.isEmpty(localizedTextFormData.getText())) { + return null; + } + + LocalizedText localizedText = localizedTextRepo.findById(localizedTextFormData.getLocalizedTextId()).orElse(null); + if (localizedText != null) { + localizedText.setText(localizedTextFormData.getText()); + } else { + ExhibitionLanguage exhibitionLanguage = exhibitionLanguageRepository.findById(localizedTextFormData.getExhibitionLanguageId()).orElse(null); + if (exhibitionLanguage != null) { + localizedText = new LocalizedText(exhibitionLanguage, localizedTextFormData.getText()); + } + } + return localizedText; + } +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java index 3472f59f9..f0e5f9652 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibition.java @@ -30,8 +30,6 @@ public interface IExhibition extends IVSpaceElement { List getLanguages(); - IExhibitionLanguage getDefaultLanguage(); - ExhibitionModes getMode(); void setMode(ExhibitionModes mode); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java index 51559858b..4923e4d32 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Exhibition.java @@ -151,15 +151,6 @@ public void setPreviewId(String previewId) { this.previewId = previewId; } - /** - * - * Returns the default language of the given exhibition - */ - @Override - public IExhibitionLanguage getDefaultLanguage() { - return this.getLanguages().stream().filter(language -> language.isDefault()).findFirst().orElse(null); - } - @Override public int hashCode() { return Objects.hash(id); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java index 940d8d451..7d40fd298 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -10,7 +10,7 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.fasterxml.jackson.annotation.JsonBackReference; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -25,7 +25,7 @@ public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLang private String label; @ManyToOne(targetEntity = Exhibition.class) - @JsonManagedReference() + @JsonBackReference() private Exhibition exhibition; private String code; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java index 6d7012ec6..c2fb72cdf 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/LocalizedText.java @@ -7,6 +7,8 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; + import edu.asu.diging.vspace.core.model.ILocalizedText; @Entity @@ -19,7 +21,7 @@ public class LocalizedText implements ILocalizedText { @ManyToOne @JoinColumn(name = "LOC_EXH_LANG") - @JsonBackReference() + @JsonManagedReference() private ExhibitionLanguage exhibitionLanguage; private String text; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java index cab8a9cf1..3ac1fe956 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IExhibitionManager.java @@ -43,4 +43,6 @@ public interface IExhibitionManager { void deleteLocalizedTexts(List emptyLocalizedTexts); + IExhibitionLanguage getDefaultLanguage(IExhibition exhibition); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java index eca50f679..b33943cc3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ILocalizedTextFormDataManager.java @@ -8,6 +8,6 @@ public interface ILocalizedTextFormDataManager { - public void addLocalizedDetails(Object entity, LocalizedTextForm localizedTextFormData, List detailList); + public void addLocalizedText(Object entity, LocalizedTextForm localizedTextFormData, List detailList); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java index 29a02bf33..71c565b21 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/ISlideManager.java @@ -40,7 +40,7 @@ public interface ISlideManager { void updateNameAndDescription(ISlide slide, SlideForm slideForm); - void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList); + void addSlideLocalizedText(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList); SlideForm getSlideForm(String slideId); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java index 6b154329d..19b3c40a7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ExhibitionManager.java @@ -16,6 +16,7 @@ import edu.asu.diging.vspace.config.ConfigConstants; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.data.LocalizedTextRepository; import edu.asu.diging.vspace.core.exception.ExhibitionLanguageDeletionException; @@ -44,6 +45,9 @@ public class ExhibitionManager implements IExhibitionManager { @Autowired private LocalizedTextRepository localizedTextRepo; + + @Autowired + private ExhibitionLanguageRepository exhibitionLanguageRepository; /* * (non-Javadoc) @@ -102,7 +106,7 @@ public IExhibition getStartExhibition() { * @param exhibition * @param defaultLanguage * @param languages - * @throws LanguageListConfigurationNotFoundException + * @throws ExhibitionLanguageDeletionException */ @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws ExhibitionLanguageDeletionException{ @@ -132,11 +136,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, for (IExhibitionLanguage language : exhibitionLanguageToBeRemoved ) { if(checkIfLocalizedTextsExists(language)) { - /** - * ExhibitionLanguageDeletionException is thrown to let the user know that the - * particular language has some information associated with it and that it cannot be deleted. - */ - throw new ExhibitionLanguageDeletionException() ; + throw new ExhibitionLanguageDeletionException("Exhibition cannot be deleted as it is not empty") ; } } @@ -187,5 +187,9 @@ private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map lan return exhibitionLanguage; } + + public IExhibitionLanguage getDefaultLanguage(IExhibition exhibition){ + return exhibitionLanguageRepository.findByExhibitionAndIsDefault(exhibition); + } } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java index 936433889..4289a1c2d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SlideManager.java @@ -18,6 +18,7 @@ import edu.asu.diging.vspace.core.data.ChoiceRepository; import edu.asu.diging.vspace.core.data.SequenceRepository; import edu.asu.diging.vspace.core.data.SlideRepository; +import edu.asu.diging.vspace.core.factory.ILocalizedTextFactory; import edu.asu.diging.vspace.core.factory.impl.ChoiceFactory; import edu.asu.diging.vspace.core.factory.impl.SlideFactory; import edu.asu.diging.vspace.core.model.IBranchingPoint; @@ -66,7 +67,7 @@ public class SlideManager implements ISlideManager { private IExhibitionManager exhibitionManager; @Autowired - private ILocalizedTextFormDataManager localizedTextFormDataManager; + private ILocalizedTextFactory localizedTextFactory; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -190,20 +191,20 @@ public void updateNameAndDescription(ISlide slide, SlideForm slideForm) { List localizedTextNames = slide.getSlideNames(); List localizedTextDescriptions = slide.getSlideDescriptions(); - addSlideDetails(slide,slideForm.getDefaultName(), localizedTextNames); - addSlideDetails(slide,slideForm.getDefaultDescription(), localizedTextDescriptions); + addSlideLocalizedText(slide,slideForm.getDefaultName(), localizedTextNames); + addSlideLocalizedText(slide,slideForm.getDefaultDescription(), localizedTextDescriptions); for(LocalizedTextForm title:slideForm.getNames()) { - addSlideDetails(slide, title, localizedTextNames); + addSlideLocalizedText(slide, title, localizedTextNames); } for(LocalizedTextForm text: slideForm.getDescriptions()) { - addSlideDetails(slide, text, localizedTextDescriptions); + addSlideLocalizedText(slide, text, localizedTextDescriptions); } } @Override - public void addSlideDetails(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList) { - localizedTextFormDataManager.addLocalizedDetails(slide, localizedTextFormData, localizedTextList); + public void addSlideLocalizedText(ISlide slide, LocalizedTextForm localizedTextFormData, List localizedTextList) { + localizedTextFactory.createLocalizedText(slide, localizedTextFormData, localizedTextList); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java index 43213bbf7..71a7b8bb2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/SpaceManager.java @@ -20,6 +20,7 @@ import edu.asu.diging.vspace.core.exception.FileStorageException; import edu.asu.diging.vspace.core.exception.SpaceDoesNotExistException; import edu.asu.diging.vspace.core.factory.IImageFactory; +import edu.asu.diging.vspace.core.factory.ILocalizedTextFactory; import edu.asu.diging.vspace.core.factory.ISpaceDisplayFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; import edu.asu.diging.vspace.core.model.ILocalizedText; @@ -80,6 +81,9 @@ public class SpaceManager implements ISpaceManager { @Autowired private ILocalizedTextFormDataManager localizedTextFormDataManager; + + @Autowired + private ILocalizedTextFactory localizedTextFactory; /* * (non-Javadoc) @@ -148,7 +152,6 @@ public CreationReturnValue storeSpace(ISpace space, byte[] image, String filenam * VSImage) */ @Override - @Transactional public CreationReturnValue storeSpace(ISpace space, IVSImage image) { List displays = null; if (space.getId() != null) { @@ -306,7 +309,7 @@ public Page findByNameOrDescription(Pageable requestedPage, String searc */ @Override public void addSpaceDetails(ISpace space, LocalizedTextForm name, List localizedTextList) { - localizedTextFormDataManager.addLocalizedDetails(space, name, localizedTextList); + localizedTextFactory.createLocalizedText(space, name, localizedTextList); } @Override diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java index 57bd45699..c601afdb9 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/AboutPageFormFactory.java @@ -2,6 +2,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; + +import edu.asu.diging.vspace.core.data.ExhibitionLanguageRepository; import edu.asu.diging.vspace.core.factory.IAboutPageFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @@ -27,14 +29,14 @@ public AboutPageForm createAboutPageForm(ExhibitionAboutPage exhibitionAboutPage aboutPageForm.setAboutPageText(exhibitionAboutPage.getAboutPageText()); aboutPageForm.setTitle(exhibitionAboutPage.getTitle()); - IExhibition startExhibtion = exhibitionManager.getStartExhibition(); - IExhibitionLanguage defaultLanguage = startExhibtion.getDefaultLanguage(); + IExhibition startExhibition = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibition); aboutPageForm.setDefaultTitle(localizedTextFormCreation.createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTitles())); aboutPageForm.setDefaultAboutPageText(localizedTextFormCreation.createLocalizedTextForm( defaultLanguage, exhibitionAboutPage.getExhibitionTextDescriptions())); - startExhibtion.getLanguages().forEach(language -> { + startExhibition.getLanguages().forEach(language -> { if(!language.isDefault()) { aboutPageForm.getTitles().add(localizedTextFormCreation.createLocalizedTextForm( language, exhibitionAboutPage.getExhibitionTitles())); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java index ad1b9ee66..fb7ad1f8d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java @@ -8,6 +8,7 @@ import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.ISlide; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SlideForm; @Service @@ -16,6 +17,9 @@ public class SlideFormFactory implements ISlideFormFactory{ @Autowired private LocalizedTextFormFactory localizedTextFormCreation; + @Autowired + private IExhibitionManager exhibitionManager; + /** * * Creates new slide form object @@ -27,7 +31,7 @@ public SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition) { SlideForm slideForm = new SlideForm(); slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); - IExhibitionLanguage defaultLanguage = startExhibition.getDefaultLanguage(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibition); slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideNames())); slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideDescriptions())); startExhibition.getLanguages().forEach(language -> { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java index df1b22c64..5d370aa23 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java @@ -7,6 +7,7 @@ import edu.asu.diging.vspace.core.factory.ISpaceFormFactory; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.web.staff.forms.SpaceForm; @Service @@ -14,6 +15,9 @@ public class SpaceFormFactory implements ISpaceFormFactory { @Autowired private LocalizedTextFormFactory localizedTextFormCreation; + + @Autowired + private IExhibitionManager exhibitionManager; /** * @@ -29,8 +33,8 @@ public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { startExhibition.getLanguages().forEach(language -> { if(language.isDefault()) { - spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceNames())); - spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(startExhibition.getDefaultLanguage(), space.getSpaceDescriptions())); + spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(exhibitionManager.getDefaultLanguage(startExhibition), space.getSpaceNames())); + spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(exhibitionManager.getDefaultLanguage(startExhibition), space.getSpaceDescriptions())); } else { spaceForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html index 57ea4518a..a16448781 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/aboutPage.html @@ -54,7 +54,9 @@ @@ -224,7 +223,12 @@
- - - + saveDescription(@RequestParam("description") String description, @@ -58,7 +62,7 @@ public ResponseEntity saveTitle(@RequestParam("title") String title, @RequestMapping(value="/staff/module/{moduleId}/slide/{slideId}/edit", method=RequestMethod.GET) public String show(Model model, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); - SlideForm slideForm = slideManager.getSlideForm(slideId); + SlideForm slideForm = slideFormFactory.createNewSlideForm(slide, exhibitionManager.getStartExhibition()); if(slide instanceof BranchingPoint) { slideForm.setType(SlideType.BRANCHING_POINT.toString()); IBranchingPoint branchingPoint = (IBranchingPoint) slide; @@ -80,13 +84,13 @@ public String show(Model model, @PathVariable("moduleId") String moduleId, @Path public String save(@ModelAttribute SlideForm slideForm, @PathVariable("moduleId") String moduleId, @PathVariable("slideId") String slideId) { ISlide slide = slideManager.getSlide(slideId); SlideType type = slideForm.getType().isEmpty() ? null : SlideType.valueOf(slideForm.getType()); - slideManager.updateNameAndDescription(slide, slideForm); + if(type.equals(SlideType.BRANCHING_POINT)) { List editedChoices = slideForm.getChoices(); slideManager.updateBranchingPoint((IBranchingPoint)slide, editedChoices); - } else { - slideManager.updateSlide((Slide)slide); } + slideManager.updateNameAndDescription(slide, slideForm); + slideManager.updateSlide((Slide)slide); return "redirect:/staff/module/{moduleId}/slide/{slideId}"; } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java index fb7ad1f8d..6c9685df6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SlideFormFactory.java @@ -32,10 +32,13 @@ public SlideForm createNewSlideForm(ISlide slide, IExhibition startExhibition) { slideForm.setName(slide.getName()); slideForm.setDescription(slide.getDescription()); IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(startExhibition); - slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideNames())); - slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(defaultLanguage, slide.getSlideDescriptions())); + startExhibition.getLanguages().forEach(language -> { - if(!language.isDefault()) { + if(language.isDefault()) { + slideForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideNames())); + slideForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); + } + else { slideForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideNames())); slideForm.getDescriptions().add(localizedTextFormCreation.createLocalizedTextForm(language, slide.getSlideDescriptions())); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java index 5d370aa23..719310253 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/forms/factory/SpaceFormFactory.java @@ -33,8 +33,8 @@ public SpaceForm createNewSpaceForm(ISpace space, IExhibition startExhibition) { startExhibition.getLanguages().forEach(language -> { if(language.isDefault()) { - spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(exhibitionManager.getDefaultLanguage(startExhibition), space.getSpaceNames())); - spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(exhibitionManager.getDefaultLanguage(startExhibition), space.getSpaceDescriptions())); + spaceForm.setDefaultName(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); + spaceForm.setDefaultDescription(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceDescriptions())); } else { spaceForm.getNames().add(localizedTextFormCreation.createLocalizedTextForm(language, space.getSpaceNames())); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index c8a6b00f3..33d9164e5 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -92,7 +92,6 @@ + - + diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html index 33d9164e5..64ddd4e10 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/edit.html @@ -44,12 +44,13 @@ } + - diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html index dcdaeb22c..430d73600 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/add.html @@ -48,7 +48,7 @@ border-top: none; } - + - - -
diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html index 75544c942..115153f72 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/spaces/edit.html @@ -42,23 +42,7 @@ - + diff --git a/vspace/src/main/webapp/resources/extra/editElement.js b/vspace/src/main/webapp/resources/extra/editElement.js new file mode 100644 index 000000000..29d0ea925 --- /dev/null +++ b/vspace/src/main/webapp/resources/extra/editElement.js @@ -0,0 +1,15 @@ +function openForm(evt, label) { + console.log("shdgvbfv "); + var i, tabcontent, tablinks; + tabcontent = document.getElementsByClassName("tabcontent"); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].style.display = "none"; + } + tablinks = document.getElementsByClassName("tablinks"); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].className = tablinks[i].className.replace(" active", ""); + } + document.getElementById(label).style.display = "block"; + evt.currentTarget.className += " active"; + evt.preventDefault(); +} \ No newline at end of file From f3b8ec2278229d8ccb5266c986c7e87393768b6d Mon Sep 17 00:00:00 2001 From: Girik1105 Date: Wed, 8 Oct 2025 12:08:46 -0700 Subject: [PATCH 191/191] [VSPC-216] Added language navigation in about and slides --- .../asu/diging/vspace/web/HomeController.java | 9 ++++-- .../view/ExhibitionSequencesController.java | 19 +++++++++--- .../ExhibitionPublicAboutPageController.java | 31 +++++++++++++++++-- .../views/exhibition/aboutPagePublic.html | 12 +++++++ .../WEB-INF/views/exhibition/module.html | 15 +++++++-- .../WEB-INF/views/exhibition/space.html | 26 +++++++++++----- .../webapp/WEB-INF/views/layouts/navbar.html | 18 +++++++++-- 7 files changed, 109 insertions(+), 21 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/HomeController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/HomeController.java index 4133a169d..3d3fb0642 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/HomeController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/HomeController.java @@ -11,6 +11,7 @@ import edu.asu.diging.simpleusers.core.model.Role; import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISetupManager; import edu.asu.diging.vspace.web.exhibit.view.ExhibitionConstants; @@ -36,13 +37,17 @@ public String home(Model model, IExhibition exhibition = exhibitionManager.getStartExhibition(); if (exhibition != null && exhibition.getStartSpace() != null) { if (previewId != null) { - return "redirect:/preview/{previewId}/space/" + exhibition.getStartSpace().getId(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(exhibition); + String languageCode = defaultLanguage != null ? defaultLanguage.getCode() : "en"; + return "redirect:/preview/{previewId}/space/" + exhibition.getStartSpace().getId() + "/" + languageCode; } else { if (!(authentication instanceof AnonymousAuthenticationToken) && (authentication.getAuthorities().stream().anyMatch(r -> r.getAuthority().equals(Role.ADMIN) || r.getAuthority().equals("ROLE_STAFF")))) { return "redirect:/staff/dashboard/"; } else { - return "redirect:/exhibit/space/" + exhibition.getStartSpace().getId(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(exhibition); + String languageCode = defaultLanguage != null ? defaultLanguage.getCode() : "en"; + return "redirect:/exhibit/space/" + exhibition.getStartSpace().getId() + "/" + languageCode; } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/exhibit/view/ExhibitionSequencesController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/exhibit/view/ExhibitionSequencesController.java index 9aaa2ab63..2d8cc06ba 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/exhibit/view/ExhibitionSequencesController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/exhibit/view/ExhibitionSequencesController.java @@ -13,11 +13,14 @@ import edu.asu.diging.vspace.core.exception.SequenceNotFoundException; import edu.asu.diging.vspace.core.exception.SlidesInSequenceNotFoundException; import edu.asu.diging.vspace.core.exception.SpaceNotFoundException; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.model.IModule; import edu.asu.diging.vspace.core.model.ISequence; import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.ISpace; import edu.asu.diging.vspace.core.model.impl.SequenceHistory; +import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IModuleManager; import edu.asu.diging.vspace.core.services.ISequenceManager; import edu.asu.diging.vspace.core.services.ISpaceManager; @@ -36,6 +39,9 @@ public class ExhibitionSequencesController { @Autowired private SequenceHistory sequenceHistory; + + @Autowired + private IExhibitionManager exhibitionManager; @RequestMapping(value = { "/exhibit/{spaceId}/module/{moduleId}/sequence/{sequenceId}", @@ -73,15 +79,20 @@ public String sequence(Model model, @PathVariable("sequenceId") String sequenceI if (sequenceHistory.hasHistory() && (clearHistory != null && clearHistory == true)) { sequenceHistory.flushFromHistory(); } + + IExhibition exhibition = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(exhibition); + String languageCode = defaultLanguage != null ? defaultLanguage.getCode() : "en"; + if (previewId != null) { return String.format( - "redirect:/preview/{previewId}/{spaceId}/module/{moduleId}/sequence/{sequenceId}/slide/%s?branchingPoint=%s&previousSequenceId=%s", - firstSlideId,(branchingPointId != null ? branchingPointId : ""), + "redirect:/preview/{previewId}/{spaceId}/module/{moduleId}/sequence/{sequenceId}/slide/%s/%s?branchingPoint=%s&previousSequenceId=%s", + firstSlideId, languageCode, (branchingPointId != null ? branchingPointId : ""), (previousSequenceId != null ? previousSequenceId : "")); } return String.format( - "redirect:/exhibit/{spaceId}/module/{moduleId}/sequence/{sequenceId}/slide/%s?branchingPoint=%s&previousSequenceId=%s", - firstSlideId, (branchingPointId != null ? branchingPointId : ""), + "redirect:/exhibit/{spaceId}/module/{moduleId}/sequence/{sequenceId}/slide/%s/%s?branchingPoint=%s&previousSequenceId=%s", + firstSlideId, languageCode, (branchingPointId != null ? branchingPointId : ""), (previousSequenceId != null ? previousSequenceId : "")); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/publicpages/ExhibitionPublicAboutPageController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/publicpages/ExhibitionPublicAboutPageController.java index f8dfec4d6..70e1cca7c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/publicpages/ExhibitionPublicAboutPageController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/publicpages/ExhibitionPublicAboutPageController.java @@ -5,9 +5,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import edu.asu.diging.vspace.core.model.IExhibition; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; import edu.asu.diging.vspace.core.services.IExhibitionAboutPageManager; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.web.exhibit.view.ExhibitionConstants; @Controller public class ExhibitionPublicAboutPageController { @@ -17,10 +22,32 @@ public class ExhibitionPublicAboutPageController { @Autowired private IExhibitionAboutPageManager aboutPageManager; - @RequestMapping(value = "/exhibit/about") - public String showPublicAboutPage(Model model) { + @Autowired + private IExhibitionManager exhibitionManager; + + @RequestMapping(value = { "/exhibit/about", "/preview/{"+ExhibitionConstants.PREVIEW_ID+"}/about" }) + public String showPublicAboutPage(Model model, + @PathVariable(name = ExhibitionConstants.PREVIEW_ID, required = false) String previewId) { + IExhibition exhibition = exhibitionManager.getStartExhibition(); + IExhibitionLanguage defaultLanguage = exhibitionManager.getDefaultLanguage(exhibition); + String languageCode = defaultLanguage != null ? defaultLanguage.getCode() : "en"; + + if (previewId != null) { + return "redirect:/preview/{previewId}/about/" + languageCode; + } + return "redirect:/exhibit/about/" + languageCode; + } + + @RequestMapping(value = { "/exhibit/about/{languageCode}", "/preview/{"+ExhibitionConstants.PREVIEW_ID+"}/about/{languageCode}" }) + public String showPublicAboutPageWithLanguage(Model model, @PathVariable("languageCode") String languageCode, + @PathVariable(name = ExhibitionConstants.PREVIEW_ID, required = false) String previewId) { model.addAttribute("exhibitionAboutPage", aboutPageManager.getExhibitionAboutPage()); model.addAttribute("aboutPageConfigured", true); + model.addAttribute("languageCode", languageCode); + + IExhibition exhibition = exhibitionManager.getStartExhibition(); + model.addAttribute("languages", exhibition.getLanguages()); + return "exhibition/aboutPagePublic"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/exhibition/aboutPagePublic.html b/vspace/src/main/webapp/WEB-INF/views/exhibition/aboutPagePublic.html index be1c2cb4c..39209835d 100644 --- a/vspace/src/main/webapp/WEB-INF/views/exhibition/aboutPagePublic.html +++ b/vspace/src/main/webapp/WEB-INF/views/exhibition/aboutPagePublic.html @@ -15,6 +15,18 @@ + diff --git a/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html b/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html index cc708a3d0..fd03e82d8 100644 --- a/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html +++ b/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html @@ -33,8 +33,19 @@ }); function changeLanguage(language){ - var url = "[(@{'/exhibit/'+${spaceId}+'/module/'+${module.id}+'/sequence/'+${currentSequenceId}+'/slide/'+${currentSlideId}})]"; - window.location.href = url+"/"+language.value; + var isPreview = [[${isExhPreview}]]; + var previewId = [[${previewId}]]; + var spaceId = [[${spaceId}]]; + var moduleId = [[${module.id}]]; + var sequenceId = [[${currentSequenceId}]]; + var slideId = [[${currentSlideId}]]; + + if(isPreview && previewId) { + window.location.href = "/preview/" + previewId + "/" + spaceId + "/module/" + moduleId + "/sequence/" + sequenceId + "/slide/" + slideId + "/" + language.value; + } else { + var url = "[(@{'/exhibit/'+${spaceId}+'/module/'+${module.id}+'/sequence/'+${currentSequenceId}+'/slide/'+${currentSlideId}})]"; + window.location.href = url+"/"+language.value; + } } function imageFullScreen(){ diff --git a/vspace/src/main/webapp/WEB-INF/views/exhibition/space.html b/vspace/src/main/webapp/WEB-INF/views/exhibition/space.html index be5ff530b..8e99bc11f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/exhibition/space.html +++ b/vspace/src/main/webapp/WEB-INF/views/exhibition/space.html @@ -225,8 +225,16 @@ //# sourceURL=click.js function changeLanguage(language){ - var url = "[(@{'/exhibit/space/'+${space.id}+'/'})]"; - window.location.href = url+language.value; + var isPreview = [[${isExhPreview}]]; + var previewId = [[${previewId}]]; + var spaceId = [[${space.id}]]; + + if(isPreview && previewId) { + window.location.href = "/preview/" + previewId + "/space/" + spaceId + "/" + language.value; + } else { + var url = "[(@{'/exhibit/space/'+${space.id}+'/'})]"; + window.location.href = url+language.value; + } } function toggleImgSize(isClicked){ @@ -386,6 +394,8 @@ var isExhPreview =[[${isExhPreview}]]; var externalLinks = [[${externalLinkList}]]; var spaceTextBlocks = [[${spaceTextBlocks}]]; + var currentLanguage = [[${languageCode}]]; + var previewId = [[${previewId}]]; var height = parseInt($("#bgImage").css("height")); var width = parseInt($("#bgImage").css("width")); let relativeHeight = ([(${display?.width})]/width)*height; @@ -395,10 +405,10 @@ var posY = $("#space").position().top; var spaceLink = $(''); if(isExhPreview=== true){ - spaceLink.attr("href",[[@{|/preview/${previewId}/space/|}]]+link.link.targetSpace.id); + spaceLink.attr("href", "/preview/" + previewId + "/space/" + link.link.targetSpace.id + "/" + currentLanguage); } else{ - spaceLink.attr("href", link.link.targetSpace.id); + spaceLink.attr("href", "/exhibit/space/" + link.link.targetSpace.id + "/" + currentLanguage); } var linkDisplay; @@ -439,9 +449,9 @@ var moduleLink = $(''); var moduleLinkURL = null; if(isExhPreview=== true){ - moduleLinkURL = [[@{|/preview/${previewId}/${space?.id}/module/|}]]+link.link.module.id; + moduleLinkURL = "/preview/" + previewId + "/" + [[${space?.id}]] + "/module/" + link.link.module.id; } else{ - moduleLinkURL = [[@{|/exhibit/${space?.id}/module/|}]]+link.link.module.id; + moduleLinkURL = "/exhibit/" + [[${space?.id}]] + "/module/" + link.link.module.id; } moduleLink.attr("href", moduleLinkURL); var linkDisplay; @@ -608,7 +618,7 @@ onclick="closeNav()">×