From df573df67bd96b8a870cf9b4c8092a46071e53e9 Mon Sep 17 00:00:00 2001 From: glend17 Date: Thu, 30 Sep 2021 16:30:29 -0700 Subject: [PATCH 01/60] [VSPC-190] Added sorting functionality for space --- .../core/aspects/ExhibitionDataAspect.java | 7 ++++ .../vspace/core/model/impl/Exhibition.java | 4 ++ .../web/staff/ExhibitionSpaceOrderMode.java | 7 ++++ .../staff/ExhibitionSpaceOrderUtility.java | 37 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderMode.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java b/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java index a369a242a..4db5af66b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java @@ -1,5 +1,7 @@ package edu.asu.diging.vspace.core.aspects; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,6 +27,7 @@ import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.IModuleManager; import edu.asu.diging.vspace.core.services.ISpaceManager; +import edu.asu.diging.vspace.web.staff.ExhibitionSpaceOrderUtility; @Component @Aspect @@ -41,6 +44,9 @@ public class ExhibitionDataAspect { @Autowired private AuthenticationFacade authFacade; + + @Autowired + ExhibitionSpaceOrderUtility exhibitionSpaceOrderUtility; @After("execution(public * edu.asu.diging.vspace.web..*Controller.*(..))") public void setExhibition(JoinPoint jp) { @@ -61,6 +67,7 @@ public void setExhibition(JoinPoint jp) { * Added to show spaces with null status and accommodate existing spaces with null space status */ publishedSpaces.addAll(spaceManager.getSpacesWithStatus(null)); + publishedSpaces = exhibitionSpaceOrderUtility.sortSpacesAlphabetically(publishedSpaces); ((Model) obj).addAttribute("publishedSpaces", publishedSpaces); } } 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 93e548703..de5df8211 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 @@ -11,6 +11,7 @@ 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.web.staff.ExhibitionSpaceOrderMode; /** * Represents an exhibition that can have a default start space. @@ -33,6 +34,9 @@ public class Exhibition extends VSpaceElement implements IExhibition { @Enumerated(EnumType.STRING) private ExhibitionModes mode; + + @Enumerated(EnumType.STRING) + private ExhibitionSpaceOrderMode spaceOrderMode; private String customMessage; diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderMode.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderMode.java new file mode 100644 index 000000000..3f337a5d8 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderMode.java @@ -0,0 +1,7 @@ +package edu.asu.diging.vspace.web.staff; + +public enum ExhibitionSpaceOrderMode { + ALPHABETICAL, + CREATION_DATE, + CUSTOM +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java new file mode 100644 index 000000000..3ab6bef25 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java @@ -0,0 +1,37 @@ +package edu.asu.diging.vspace.web.staff; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.springframework.stereotype.Component; + +import edu.asu.diging.vspace.core.model.ISpace; + +@Component +public class ExhibitionSpaceOrderUtility { + + public List sortSpacesAlphabetically(List publishedSpaces){ + //TO Do sort alphabetically + /* (non-Javadoc) + * Published spaces to be shown alphabetically by default + */ + Collections.sort(publishedSpaces, new Comparator() { + @Override + public int compare(ISpace space1, ISpace space2) { + return (space1.getName().toLowerCase()).compareTo(space2.getName().toLowerCase()); + } + }); + return publishedSpaces; + } + + public List sortSpacesOnCreationDate(List publishedSpaces){ + Collections.sort(publishedSpaces, new Comparator() { + @Override + public int compare(ISpace space1, ISpace space2) { + return (space1.getCreationDate()).compareTo(space2.getCreationDate()); + } + }); + return publishedSpaces; + } +} From 89b4f236c2251cb3503cc4905c2c94ef9e11d022 Mon Sep 17 00:00:00 2001 From: glend17 Date: Fri, 1 Oct 2021 16:30:45 -0700 Subject: [PATCH 02/60] [VSPC-190] added custom ordering layout page --- .../core/aspects/ExhibitionDataAspect.java | 2 +- .../diging/vspace/core/model/IExhibition.java | 6 + .../vspace/core/model/impl/Exhibition.java | 14 +- .../vspace/core/services/ISpaceManager.java | 2 + .../core/services/impl/SpaceManager.java | 13 + .../web/staff/CustomOrderingController.java | 14 + .../staff/ExhibitionSpaceOrderUtility.java | 25 +- .../WEB-INF/views/layouts/navbar_staff.html | 7 + .../views/staff/spaces/customordering.html | 1966 +++++++++++++++++ 9 files changed, 2043 insertions(+), 6 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/CustomOrderingController.java create mode 100644 vspace/src/main/webapp/WEB-INF/views/staff/spaces/customordering.html diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java b/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java index 4db5af66b..181c6cbd3 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/aspects/ExhibitionDataAspect.java @@ -67,7 +67,7 @@ public void setExhibition(JoinPoint jp) { * Added to show spaces with null status and accommodate existing spaces with null space status */ publishedSpaces.addAll(spaceManager.getSpacesWithStatus(null)); - publishedSpaces = exhibitionSpaceOrderUtility.sortSpacesAlphabetically(publishedSpaces); + publishedSpaces = spaceManager.sortPublishedSpacesByGivenOrder(publishedSpaces); ((Model) obj).addAttribute("publishedSpaces", publishedSpaces); } } 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 8c080242c..7f1d4b154 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 @@ -1,5 +1,7 @@ package edu.asu.diging.vspace.core.model; +import edu.asu.diging.vspace.web.staff.ExhibitionSpaceOrderMode; + public interface IExhibition extends IVSpaceElement { /* @@ -21,5 +23,9 @@ public interface IExhibition extends IVSpaceElement { void setTitle(String title); String getTitle(); + + ExhibitionSpaceOrderMode getSpaceOrderMode(); + + void setSpaceOrderMode(ExhibitionSpaceOrderMode exhibitionSpaceOrderMode); } 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 de5df8211..76cd87acb 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 @@ -34,12 +34,12 @@ public class Exhibition extends VSpaceElement implements IExhibition { @Enumerated(EnumType.STRING) private ExhibitionModes mode; + + private String customMessage; @Enumerated(EnumType.STRING) private ExhibitionSpaceOrderMode spaceOrderMode; - private String customMessage; - /* * (non-Javadoc) * @@ -107,5 +107,15 @@ public String getCustomMessage() { public void setCustomMessage(String customMessage) { this.customMessage = customMessage; } + + @Override + public ExhibitionSpaceOrderMode getSpaceOrderMode() { + return spaceOrderMode; + } + + @Override + public void setSpaceOrderMode(ExhibitionSpaceOrderMode spaceOrderMode) { + this.spaceOrderMode = spaceOrderMode; + } } 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 ec812cdfd..79279faa6 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 @@ -38,4 +38,6 @@ public interface ISpaceManager { Iterable addIncomingLinkInfoToSpaces(Iterable spaces); Page findByNameOrDescription(Pageable requestedPage,String searchText); + + List sortPublishedSpacesByGivenOrder(List publishedSpaces); } 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 63884749c..099a4590a 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 @@ -27,6 +27,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.IExhibition; 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; @@ -40,6 +41,8 @@ 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.ExhibitionSpaceOrderMode; +import edu.asu.diging.vspace.web.staff.ExhibitionSpaceOrderUtility; @Transactional @Service @@ -78,6 +81,9 @@ public class SpaceManager implements ISpaceManager { @Autowired private SpaceLinkDisplayRepository spaceLinkDisplayRepo; + + @Autowired + private ExhibitionSpaceOrderUtility exhibitionSpaceOrderUtility; private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -297,4 +303,11 @@ public Iterable addIncomingLinkInfoToSpaces(Iterable spaces) { public Page findByNameOrDescription(Pageable requestedPage, String searchText) { return spaceRepo.findDistinctByNameContainingOrDescriptionContaining(requestedPage, searchText,searchText); } + + @Override + public List sortPublishedSpacesByGivenOrder(List publishedSpaces) { + IExhibition exhibitition = exhibitionManager.findAll().get(0); + return exhibitionSpaceOrderUtility.retrieveSpacesListInGivenOrder(publishedSpaces, exhibitition.getSpaceOrderMode()); + } + } \ No newline at end of file diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/CustomOrderingController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/CustomOrderingController.java new file mode 100644 index 000000000..3850057e1 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/CustomOrderingController.java @@ -0,0 +1,14 @@ +package edu.asu.diging.vspace.web.staff; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class CustomOrderingController { + + @RequestMapping("/staff/spaceordering") + public String displayCurrentOrder() { + return "/staff/spaces/customordering"; + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java index 3ab6bef25..be1b15172 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/ExhibitionSpaceOrderUtility.java @@ -4,14 +4,18 @@ import java.util.Comparator; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.model.ISpace; +import edu.asu.diging.vspace.core.services.IExhibitionManager; +import edu.asu.diging.vspace.core.services.impl.SpaceManager; @Component public class ExhibitionSpaceOrderUtility { - - public List sortSpacesAlphabetically(List publishedSpaces){ + + private List sortSpacesAlphabetically(List publishedSpaces){ //TO Do sort alphabetically /* (non-Javadoc) * Published spaces to be shown alphabetically by default @@ -25,7 +29,7 @@ public int compare(ISpace space1, ISpace space2) { return publishedSpaces; } - public List sortSpacesOnCreationDate(List publishedSpaces){ + private List sortSpacesOnCreationDate(List publishedSpaces){ Collections.sort(publishedSpaces, new Comparator() { @Override public int compare(ISpace space1, ISpace space2) { @@ -34,4 +38,19 @@ public int compare(ISpace space1, ISpace space2) { }); return publishedSpaces; } + + public List customSpaceOrder(List publishedSpaces){ + return publishedSpaces; + } + + public List retrieveSpacesListInGivenOrder(List publishedSpaces, ExhibitionSpaceOrderMode mode){ + if(mode == ExhibitionSpaceOrderMode.ALPHABETICAL) { + return sortSpacesAlphabetically(publishedSpaces); + } + else if(mode == ExhibitionSpaceOrderMode.CREATION_DATE) { + return sortSpacesOnCreationDate(publishedSpaces); + }else { + return customSpaceOrder(publishedSpaces); + } + } } diff --git a/vspace/src/main/webapp/WEB-INF/views/layouts/navbar_staff.html b/vspace/src/main/webapp/WEB-INF/views/layouts/navbar_staff.html index 978e3ef7a..66d1d2cde 100644 --- a/vspace/src/main/webapp/WEB-INF/views/layouts/navbar_staff.html +++ b/vspace/src/main/webapp/WEB-INF/views/layouts/navbar_staff.html @@ -48,6 +48,13 @@ th:href="@{/staff/user/list}">  Users + + -