From 5b25410ab6c7cdc30969d5e1d9dda44dd777a7e4 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 12 May 2022 16:25:00 -0700 Subject: [PATCH 01/28] [story/VSPC-213]added exhibitionlanguage codes --- .../core/model/ExhibitionLanguageCodes.java | 21 +++++++ .../diging/vspace/core/model/IExhibition.java | 2 + .../vspace/core/model/impl/Exhibition.java | 18 ++++++ .../core/model/impl/ExhibitionLanguage.java | 55 +++++++++++++++++++ .../ExhibitionConfigurationController.java | 2 + .../WEB-INF/views/staff/exhibit/config.html | 11 +++- 6 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java new file mode 100644 index 000000000..ddae00b3c --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java @@ -0,0 +1,21 @@ +package edu.asu.diging.vspace.core.model; + +public enum ExhibitionLanguageCodes { + + EN("en"), + DE("de"), + IT("it"); + + private ExhibitionLanguageCodes(String value) { + this.value = value; + } + + + private final String value; + + + public String getValue() { + return value; + } + +} 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 d1ad447da..9f40d690e 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 @@ -26,4 +26,6 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); + Object getLanguages(); + } 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 4937ecbb4..7a887c23f 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,14 +1,19 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.List; + +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.OneToMany; import javax.persistence.OneToOne; 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.ISpace; @@ -37,6 +42,9 @@ public class Exhibition extends VSpaceElement implements IExhibition { private String customMessage; private boolean aboutPageConfigured; + + @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) + private List languages; /* * (non-Javadoc) @@ -116,4 +124,14 @@ public void setAboutPageConfigured(boolean aboutPageConfigured) { this.aboutPageConfigured = aboutPageConfigured; } + public List getLanguages() { + return languages; + } + + public void setLanguages(List languages) { + this.languages = languages; + } + + + } 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 new file mode 100644 index 000000000..5ed8bf46b --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ExhibitionLanguage.java @@ -0,0 +1,55 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; + +@Entity +public class ExhibitionLanguage { + + @Id + @GeneratedValue(generator = "exhibit_language_id_generator") + @GenericGenerator(name = "exhibit_language_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + private String id; + + private String label; + + @ManyToOne(targetEntity = Exhibition.class) + private Exhibition exhibition; + + @Enumerated(EnumType.STRING) + private ExhibitionLanguageCodes code; + + public ExhibitionLanguageCodes getCode() { + return code; + } + + public void setCode(ExhibitionLanguageCodes code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Exhibition getExhibition() { + return exhibition; + } + + public void setExhibition(Exhibition exhibition) { + this.exhibition = exhibition; + } + +} 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 a90c8f544..73945c7be 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 @@ -16,6 +16,7 @@ import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; +import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; import edu.asu.diging.vspace.core.model.ExhibitionModes; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.ISpace; @@ -49,6 +50,7 @@ public String showExhibitions(Model model) { } model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); model.addAttribute("spacesList", spaceRepo.findAll()); + model.addAttribute("exhibitionLanguages", Arrays.asList(ExhibitionLanguageCodes.values())); return "staff/exhibit/config"; } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 8041016a7..4c10b44d5 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -21,7 +21,10 @@ offlineMessage.hide(); } } - + function languageChange(languageChosen) { + + } + @@ -48,6 +51,12 @@

Exhibition Configuration

+ +
+ +
From c3f1f8bcc1b9a1b12f0675215d0ced8fb9e24a19 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Wed, 18 May 2022 16:37:40 -0700 Subject: [PATCH 02/28] [story/VSPC-213] added configuration for language codes and labels --- .../config/ExhibitionLanguageConfigList.java | 51 +++++++++++++++++++ .../config/JsonPropertySourceFactory.java | 25 +++++++++ .../ExhibitionConfigurationController.java | 8 ++- .../main/resources/exhibitionLanguages.json | 16 ++++++ .../WEB-INF/views/staff/exhibit/config.html | 2 +- 5 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java create mode 100644 vspace/src/main/resources/exhibitionLanguages.json diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java new file mode 100644 index 000000000..b165ae534 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java @@ -0,0 +1,51 @@ +package edu.asu.diging.vspace.config; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +@Component +@PropertySource(value= "classpath:exhibitionLanguages.json" , factory=JsonPropertySourceFactory.class) +@Configuration +public class ExhibitionLanguageConfigList { + + @Value("${languages}") + private List languages; + + + public List getLanguages() { + return languages; + } + + + public void setLanguages(List languages) { + this.languages = languages; + } + + + private class Language { + + @Value("${code}") + private String code; + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + + @Value("${label}") + private String label; + + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java new file mode 100644 index 000000000..c910ea50f --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java @@ -0,0 +1,25 @@ +package edu.asu.diging.vspace.config; + +import java.io.IOException; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.MapPropertySource; +import org.springframework.core.io.support.EncodedResource; +import org.springframework.core.io.support.PropertySourceFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JsonPropertySourceFactory implements PropertySourceFactory { + + + + @Override + public org.springframework.core.env.PropertySource createPropertySource(String name, EncodedResource resource) + throws IOException { + Map readValue = new ObjectMapper() + .readValue(resource.getInputStream(), Map.class); + return new MapPropertySource("json-property", readValue); + } + } + 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 73945c7be..965682879 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 @@ -14,6 +14,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; +import edu.asu.diging.vspace.config.ExhibitionLanguageConfigList; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; @@ -21,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.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISpaceManager; @@ -38,6 +40,9 @@ public class ExhibitionConfigurationController { @Autowired private ExhibitionFactory exhibitFactory; + + @Autowired + private ExhibitionLanguageConfigList exhibitionLanguageConfigList; @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { @@ -50,7 +55,7 @@ public String showExhibitions(Model model) { } model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); model.addAttribute("spacesList", spaceRepo.findAll()); - model.addAttribute("exhibitionLanguages", Arrays.asList(ExhibitionLanguageCodes.values())); + model.addAttribute("exhibitionLanguages", exhibitionLanguageConfigList.getLanguages()); return "staff/exhibit/config"; } @@ -68,6 +73,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam("spaceParam") String spaceID, @RequestParam("title") String title, @RequestParam("exhibitMode") ExhibitionModes exhibitMode, @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, + @RequestParam("exhibitLanguage") ExhibitionLanguage languages, RedirectAttributes attributes) throws IOException { ISpace startSpace = spaceManager.getSpace(spaceID); diff --git a/vspace/src/main/resources/exhibitionLanguages.json b/vspace/src/main/resources/exhibitionLanguages.json new file mode 100644 index 000000000..e00e86bd5 --- /dev/null +++ b/vspace/src/main/resources/exhibitionLanguages.json @@ -0,0 +1,16 @@ +{ +"languages" : [ +{ +"code" : "EN", +"label" : "English" +}, +{ +"code" : "AA", +"label" : "Afar" +}, +{ +"code" : "AB", +"label" : "Abkhazian" +} +] +} \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 4c10b44d5..8414a029b 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -55,7 +55,7 @@

Exhibition Configuration

From c770d63c4daa9d03d032d99a6aa66520b357beca Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 09:01:00 -0700 Subject: [PATCH 03/28] [story/VSPC-213] added support for multiple exhibition languages --- .../config/ExhibitionLanguageConfig.java | 58 +++++++++++++++++++ .../config/ExhibitionLanguageConfigList.java | 51 ---------------- .../config/JsonPropertySourceFactory.java | 5 +- .../core/factory/impl/ExhibitionFactory.java | 22 +++++++ .../vspace/core/model/impl/Exhibition.java | 26 ++++++++- .../core/model/impl/ExhibitionLanguage.java | 38 ++++++++++-- .../ExhibitionConfigurationController.java | 26 +++++++-- .../main/resources/exhibitionLanguages.json | 16 ----- .../resources/exhibitionLanguages.properties | 28 +++++++++ .../WEB-INF/views/staff/exhibit/config.html | 4 +- 10 files changed, 193 insertions(+), 81 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java delete mode 100644 vspace/src/main/resources/exhibitionLanguages.json create mode 100644 vspace/src/main/resources/exhibitionLanguages.properties diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java new file mode 100644 index 000000000..988062308 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -0,0 +1,58 @@ +package edu.asu.diging.vspace.config; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.AbstractEnvironment; +import org.springframework.core.env.Environment; +import org.springframework.core.env.MapPropertySource; +import org.springframework.stereotype.Component; + +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; + +@Component +@PropertySource(value= "classpath:exhibitionLanguages.properties" , factory=JsonPropertySourceFactory.class) +@Configuration +public class ExhibitionLanguageConfig { + + @Autowired + private Environment environment; + + List exhibitionLanguageList = new ArrayList(); + + + @PostConstruct + public void init() { + for(Iterator it = ((AbstractEnvironment) environment).getPropertySources().iterator(); it.hasNext(); ) { + org.springframework.core.env.PropertySource propertySource = (org.springframework.core.env.PropertySource) it.next(); + if (propertySource instanceof MapPropertySource) { + MapPropertySource mapSource = ((MapPropertySource) propertySource); + if("json-property".equals(mapSource.getName())) { + Map languageMap = mapSource.getSource(); + + exhibitionLanguageList = (List) languageMap.get("languages"); + + } + + } + } + } + + public List getExhibitionLanguageList() { + return exhibitionLanguageList; + } + public void setExhibitionLanguageList(List exhibitionLanguageList) { + this.exhibitionLanguageList = exhibitionLanguageList; + } +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java deleted file mode 100644 index b165ae534..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfigList.java +++ /dev/null @@ -1,51 +0,0 @@ -package edu.asu.diging.vspace.config; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.stereotype.Component; - -@Component -@PropertySource(value= "classpath:exhibitionLanguages.json" , factory=JsonPropertySourceFactory.class) -@Configuration -public class ExhibitionLanguageConfigList { - - @Value("${languages}") - private List languages; - - - public List getLanguages() { - return languages; - } - - - public void setLanguages(List languages) { - this.languages = languages; - } - - - private class Language { - - @Value("${code}") - private String code; - public String getCode() { - return code; - } - public void setCode(String code) { - this.code = code; - } - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } - - @Value("${label}") - private String label; - - } - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java index c910ea50f..94a1aa76a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.config; import java.io.IOException; +import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Value; @@ -19,7 +20,9 @@ public org.springframework.core.env.PropertySource createPropertySource(Strin throws IOException { Map readValue = new ObjectMapper() .readValue(resource.getInputStream(), Map.class); - return new MapPropertySource("json-property", readValue); + MapPropertySource source= new MapPropertySource("json-property", readValue); + + return source; } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java index 7b982ba2d..119cff6f8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java @@ -1,13 +1,23 @@ package edu.asu.diging.vspace.core.factory.impl; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.factory.IExhibitionFactory; 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.ExhibitionLanguage; @Service public class ExhibitionFactory implements IExhibitionFactory { + + @Autowired + private ExhibitionLanguageConfig exhibitionLanguageConfig; /* * (non-Javadoc) @@ -19,4 +29,16 @@ public IExhibition createExhibition() { return new Exhibition(); } + public void updateExhibitionLanguages(Exhibition exhibition, List languages) { + languages.forEach(language -> { + + List languageMapList = exhibitionLanguageConfig.getExhibitionLanguageList().stream().filter(languageMap -> + languages.contains((String)languageMap.get("label")) + ).map(map -> new ExhibitionLanguage((String) map.get("label"), (String) map.get("code"), exhibition)).collect(Collectors.toList()); + + exhibition.getLanguages().addAll(languageMapList); + }); + + } + } 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 7a887c23f..cd3ba80a1 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,6 +1,8 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.List; +import java.util.Objects; +import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; @@ -26,6 +28,23 @@ @Entity public class Exhibition extends VSpaceElement implements IExhibition { + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Exhibition other = (Exhibition) obj; + return Objects.equals(id, other.id); + } + @Id @GeneratedValue(generator = "exhibit_id_generator") @GenericGenerator(name = "exhibit_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -44,7 +63,7 @@ public class Exhibition extends VSpaceElement implements IExhibition { private boolean aboutPageConfigured; @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) - private List languages; + private Set languages; /* * (non-Javadoc) @@ -124,14 +143,15 @@ public void setAboutPageConfigured(boolean aboutPageConfigured) { this.aboutPageConfigured = aboutPageConfigured; } - public List getLanguages() { + public Set getLanguages() { return languages; } - public void setLanguages(List languages) { + public void setLanguages(Set languages) { this.languages = languages; } + } 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 5ed8bf46b..88661b849 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,5 +1,7 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.Objects; + import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; @@ -15,6 +17,10 @@ @Entity public class ExhibitionLanguage { + public ExhibitionLanguage() { + super(); + } + @Id @GeneratedValue(generator = "exhibit_language_id_generator") @GenericGenerator(name = "exhibit_language_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -25,14 +31,19 @@ public class ExhibitionLanguage { @ManyToOne(targetEntity = Exhibition.class) private Exhibition exhibition; - @Enumerated(EnumType.STRING) - private ExhibitionLanguageCodes code; + private String code; + + public ExhibitionLanguage(String label, String code, Exhibition exhibition) { + this.label=label; + this.code=code; + this.exhibition=exhibition; + } - public ExhibitionLanguageCodes getCode() { + public String getCode() { return code; } - public void setCode(ExhibitionLanguageCodes code) { + public void setCode(String code) { this.code = code; } @@ -52,4 +63,23 @@ public void setExhibition(Exhibition exhibition) { this.exhibition = exhibition; } + + @Override + public int hashCode() { + return Objects.hash(code, exhibition, label); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ExhibitionLanguage other = (ExhibitionLanguage) obj; + return Objects.equals(code, other.code) && Objects.equals(exhibition, other.exhibition) + && Objects.equals(label, other.label); + } + } 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 965682879..e377c1437 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,22 @@ package edu.asu.diging.vspace.web.staff; import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; +import org.springframework.core.env.AbstractEnvironment; + import org.javers.common.collections.Arrays; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.core.env.MapPropertySource; +import org.springframework.core.env.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,7 +25,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; -import edu.asu.diging.vspace.config.ExhibitionLanguageConfigList; +import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; @@ -42,7 +53,9 @@ public class ExhibitionConfigurationController { private ExhibitionFactory exhibitFactory; @Autowired - private ExhibitionLanguageConfigList exhibitionLanguageConfigList; + private ExhibitionLanguageConfig exhibitionLanguageConfig; + + @RequestMapping("/staff/exhibit/config") public String showExhibitions(Model model) { @@ -55,7 +68,9 @@ public String showExhibitions(Model model) { } model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); model.addAttribute("spacesList", spaceRepo.findAll()); - model.addAttribute("exhibitionLanguages", exhibitionLanguageConfigList.getLanguages()); + model.addAttribute("exhibitionLanguages", exhibitionLanguageConfig.getExhibitionLanguageList()); + model.addAttribute("existingLanguages", exhibition.getLanguages()); + return "staff/exhibit/config"; } @@ -73,7 +88,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @RequestParam("spaceParam") String spaceID, @RequestParam("title") String title, @RequestParam("exhibitMode") ExhibitionModes exhibitMode, @RequestParam(value = "customMessage", required = false, defaultValue = "") String customMessage, - @RequestParam("exhibitLanguage") ExhibitionLanguage languages, + @RequestParam("exhibitLanguage") List languages, RedirectAttributes attributes) throws IOException { ISpace startSpace = spaceManager.getSpace(spaceID); @@ -87,6 +102,9 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, exhibition.setStartSpace(startSpace); exhibition.setTitle(title); exhibition.setMode(exhibitMode); + + exhibitFactory.updateExhibitionLanguages(exhibition,languages); + if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { exhibition.setCustomMessage(customMessage); } diff --git a/vspace/src/main/resources/exhibitionLanguages.json b/vspace/src/main/resources/exhibitionLanguages.json deleted file mode 100644 index e00e86bd5..000000000 --- a/vspace/src/main/resources/exhibitionLanguages.json +++ /dev/null @@ -1,16 +0,0 @@ -{ -"languages" : [ -{ -"code" : "EN", -"label" : "English" -}, -{ -"code" : "AA", -"label" : "Afar" -}, -{ -"code" : "AB", -"label" : "Abkhazian" -} -] -} \ No newline at end of file diff --git a/vspace/src/main/resources/exhibitionLanguages.properties b/vspace/src/main/resources/exhibitionLanguages.properties new file mode 100644 index 000000000..b23824923 --- /dev/null +++ b/vspace/src/main/resources/exhibitionLanguages.properties @@ -0,0 +1,28 @@ +{ +"languages": [ +{ +"code" : "EN", +"label" : "English" +}, +{ +"code" : "AA", +"label" : "Afar" +}, +{ +"code" : "AB", +"label" : "Abkhazian" +}, +{ +"code" : "AF", +"label" : "Afrikaans" +}, +{ +"code" : "AK", +"label" : "Akan" +}, +{ +"code" : "SQ", +"label" : "Albanian" +} +] +} \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 8414a029b..6e95a4d05 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -54,8 +54,8 @@

Exhibition Configuration

- +
From 959b957a0c55ee57df0dd0da14155c43a5cbb798 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 15:05:04 -0700 Subject: [PATCH 04/28] [story/VSPC-213] added test cases --- .../core/factory/impl/ExhibitionFactory.java | 34 ++- .../core/model/ExhibitionLanguageCodes.java | 21 -- .../diging/vspace/core/model/IExhibition.java | 6 +- .../vspace/core/model/impl/Exhibition.java | 38 +-- .../ExhibitionConfigurationController.java | 14 +- .../resources/exhibitionLanguages.properties | 217 ++++++++++++++++-- .../WEB-INF/views/staff/exhibit/config.html | 2 +- .../services/impl/ExhibitionLanguageTest.java | 128 +++++++++++ 8 files changed, 377 insertions(+), 83 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java create mode 100644 vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java index 119cff6f8..9d0c7c779 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java @@ -1,9 +1,12 @@ package edu.asu.diging.vspace.core.factory.impl; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,16 +32,29 @@ public IExhibition createExhibition() { return new Exhibition(); } - public void updateExhibitionLanguages(Exhibition exhibition, List languages) { - languages.forEach(language -> { - - List languageMapList = exhibitionLanguageConfig.getExhibitionLanguageList().stream().filter(languageMap -> - languages.contains((String)languageMap.get("label")) - ).map(map -> new ExhibitionLanguage((String) map.get("label"), (String) map.get("code"), exhibition)).collect(Collectors.toList()); - - exhibition.getLanguages().addAll(languageMapList); + /** + * Updates the Exhibition with given list of languages. It fetches the language from exhibitionLanguageConfig using code. + * + * @param exhibition + * @param languages + */ + public void updateExhibitionLanguages(Exhibition exhibition, List codes) { + List languageMapList = new ArrayList(); + codes.forEach(code -> { + Optional languageMap = exhibitionLanguageConfig.getExhibitionLanguageList() + .stream().filter(map-> code.equalsIgnoreCase((String) map.get("code"))) + .map(exhibitLanguage -> new ExhibitionLanguage((String) exhibitLanguage.get("label"), + (String) exhibitLanguage.get("code"), exhibition)).findFirst(); + + if(languageMap.isPresent()) { + languageMapList.add(languageMap.get()); + } }); - + if(CollectionUtils.isNotEmpty(languageMapList)) { + exhibition.getLanguages().addAll(languageMapList); + } + + } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java deleted file mode 100644 index ddae00b3c..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/ExhibitionLanguageCodes.java +++ /dev/null @@ -1,21 +0,0 @@ -package edu.asu.diging.vspace.core.model; - -public enum ExhibitionLanguageCodes { - - EN("en"), - DE("de"), - IT("it"); - - private ExhibitionLanguageCodes(String value) { - this.value = value; - } - - - private final String value; - - - public String getValue() { - return value; - } - -} 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 9f40d690e..c848a3874 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,9 @@ package edu.asu.diging.vspace.core.model; +import java.util.Set; + +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; + public interface IExhibition extends IVSpaceElement { /* @@ -26,6 +30,6 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); - Object getLanguages(); + Set getLanguages(); } 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 cd3ba80a1..b462a2e4c 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,5 +1,6 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -28,23 +29,6 @@ @Entity public class Exhibition extends VSpaceElement implements IExhibition { - @Override - public int hashCode() { - return Objects.hash(id); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Exhibition other = (Exhibition) obj; - return Objects.equals(id, other.id); - } - @Id @GeneratedValue(generator = "exhibit_id_generator") @GenericGenerator(name = "exhibit_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -63,7 +47,7 @@ public boolean equals(Object obj) { private boolean aboutPageConfigured; @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) - private Set languages; + private Set languages = new HashSet(); /* * (non-Javadoc) @@ -151,7 +135,23 @@ public void setLanguages(Set languages) { this.languages = languages; } - + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Exhibition other = (Exhibition) obj; + return Objects.equals(id, other.id); + } } 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 e377c1437..41b16a337 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 @@ -3,7 +3,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; -import java.util.LinkedHashMap; + import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -14,9 +14,6 @@ import org.javers.common.collections.Arrays; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @@ -28,12 +25,10 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; -import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; 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.model.impl.ExhibitionLanguage; import edu.asu.diging.vspace.core.services.IExhibitionManager; import edu.asu.diging.vspace.core.services.ISpaceManager; @@ -63,14 +58,17 @@ public String showExhibitions(Model model) { IExhibition exhibition = exhibitManager.getStartExhibition(); if(exhibition!=null) { model.addAttribute("exhibition", exhibition); + if(exhibition.getLanguages() != null ) { + model.addAttribute("existingLanguages", exhibition.getLanguages() + .stream().map(language -> language.getLabel()).collect(Collectors.toList())); + } } else { model.addAttribute("exhibition", new Exhibition()); } model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); model.addAttribute("spacesList", spaceRepo.findAll()); model.addAttribute("exhibitionLanguages", exhibitionLanguageConfig.getExhibitionLanguageList()); - model.addAttribute("existingLanguages", exhibition.getLanguages()); - + return "staff/exhibit/config"; } diff --git a/vspace/src/main/resources/exhibitionLanguages.properties b/vspace/src/main/resources/exhibitionLanguages.properties index b23824923..492b3ab2e 100644 --- a/vspace/src/main/resources/exhibitionLanguages.properties +++ b/vspace/src/main/resources/exhibitionLanguages.properties @@ -1,28 +1,197 @@ { "languages": [ -{ -"code" : "EN", -"label" : "English" -}, -{ -"code" : "AA", -"label" : "Afar" -}, -{ -"code" : "AB", -"label" : "Abkhazian" -}, -{ -"code" : "AF", -"label" : "Afrikaans" -}, -{ -"code" : "AK", -"label" : "Akan" -}, -{ -"code" : "SQ", -"label" : "Albanian" -} + { "code": "aa", "label": "Afar" }, + { "code": "ab", "label": "Abkhazian" }, + { "code": "ae", "label": "Avestan" }, + { "code": "af", "label": "Afrikaans" }, + { "code": "ak", "label": "Akan" }, + { "code": "am", "label": "Amharic" }, + { "code": "an", "label": "Aragonese" }, + { "code": "ar", "label": "Arabic" }, + { "code": "as", "label": "Assamese" }, + { "code": "av", "label": "Avaric" }, + { "code": "ay", "label": "Aymara" }, + { "code": "az", "label": "Azerbaijani" }, + { "code": "ba", "label": "Bashkir" }, + { "code": "be", "label": "Belarusian" }, + { "code": "bg", "label": "Bulgarian" }, + { "code": "bh", "label": "Bihari languages" }, + { "code": "bi", "label": "Bislama" }, + { "code": "bm", "label": "Bambara" }, + { "code": "bn", "label": "Bengali" }, + { "code": "bo", "label": "Tibetan" }, + { "code": "br", "label": "Breton" }, + { "code": "bs", "label": "Bosnian" }, + { "code": "ca", "label": "Catalan; Valencian" }, + { "code": "ce", "label": "Chechen" }, + { "code": "ch", "label": "Chamorro" }, + { "code": "co", "label": "Corsican" }, + { "code": "cr", "label": "Cree" }, + { "code": "cs", "label": "Czech" }, + { + "code": "cu", + "label": "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic" + }, + { "code": "cv", "label": "Chuvash" }, + { "code": "cy", "label": "Welsh" }, + { "code": "da", "label": "Danish" }, + { "code": "de", "label": "German" }, + { "code": "dv", "label": "Divehi; Dhivehi; Maldivian" }, + { "code": "dz", "label": "Dzongkha" }, + { "code": "ee", "label": "Ewe" }, + { "code": "el", "label": "Greek, Modern (1453-)" }, + { "code": "en", "label": "English" }, + { "code": "eo", "label": "Esperanto" }, + { "code": "es", "label": "Spanish; Castilian" }, + { "code": "et", "label": "Estonian" }, + { "code": "eu", "label": "Basque" }, + { "code": "fa", "label": "Persian" }, + { "code": "ff", "label": "Fulah" }, + { "code": "fi", "label": "Finnish" }, + { "code": "fj", "label": "Fijian" }, + { "code": "fo", "label": "Faroese" }, + { "code": "fr", "label": "French" }, + { "code": "fy", "label": "Western Frisian" }, + { "code": "ga", "label": "Irish" }, + { "code": "gd", "label": "Gaelic; Scomttish Gaelic" }, + { "code": "gl", "label": "Galician" }, + { "code": "gn", "label": "Guarani" }, + { "code": "gu", "label": "Gujarati" }, + { "code": "gv", "label": "Manx" }, + { "code": "ha", "label": "Hausa" }, + { "code": "he", "label": "Hebrew" }, + { "code": "hi", "label": "Hindi" }, + { "code": "ho", "label": "Hiri Motu" }, + { "code": "hr", "label": "Croatian" }, + { "code": "ht", "label": "Haitian; Haitian Creole" }, + { "code": "hu", "label": "Hungarian" }, + { "code": "hy", "label": "Armenian" }, + { "code": "hz", "label": "Herero" }, + { + "code": "ia", + "label": "Interlingua (International Auxiliary Language Association)" + }, + { "code": "id", "label": "Indonesian" }, + { "code": "ie", "label": "Interlingue; Occidental" }, + { "code": "ig", "label": "Igbo" }, + { "code": "ii", "label": "Sichuan Yi; Nuosu" }, + { "code": "ik", "label": "Inupiaq" }, + { "code": "io", "label": "Ido" }, + { "code": "is", "label": "Icelandic" }, + { "code": "it", "label": "Italian" }, + { "code": "iu", "label": "Inuktitut" }, + { "code": "ja", "label": "Japanese" }, + { "code": "jv", "label": "Javanese" }, + { "code": "ka", "label": "Georgian" }, + { "code": "kg", "label": "Kongo" }, + { "code": "ki", "label": "Kikuyu; Gikuyu" }, + { "code": "kj", "label": "Kuanyama; Kwanyama" }, + { "code": "kk", "label": "Kazakh" }, + { "code": "kl", "label": "Kalaallisut; Greenlandic" }, + { "code": "km", "label": "Central Khmer" }, + { "code": "kn", "label": "Kannada" }, + { "code": "ko", "label": "Korean" }, + { "code": "kr", "label": "Kanuri" }, + { "code": "ks", "label": "Kashmiri" }, + { "code": "ku", "label": "Kurdish" }, + { "code": "kv", "label": "Komi" }, + { "code": "kw", "label": "Cornish" }, + { "code": "ky", "label": "Kirghiz; Kyrgyz" }, + { "code": "la", "label": "Latin" }, + { "code": "lb", "label": "Luxembourgish; Letzeburgesch" }, + { "code": "lg", "label": "Ganda" }, + { "code": "li", "label": "Limburgan; Limburger; Limburgish" }, + { "code": "ln", "label": "Lingala" }, + { "code": "lo", "label": "Lao" }, + { "code": "lt", "label": "Lithuanian" }, + { "code": "lu", "label": "Luba-Katanga" }, + { "code": "lv", "label": "Latvian" }, + { "code": "mg", "label": "Malagasy" }, + { "code": "mh", "label": "Marshallese" }, + { "code": "mi", "label": "Maori" }, + { "code": "mk", "label": "Macedonian" }, + { "code": "ml", "label": "Malayalam" }, + { "code": "mn", "label": "Mongolian" }, + { "code": "mr", "label": "Marathi" }, + { "code": "ms", "label": "Malay" }, + { "code": "mt", "label": "Maltese" }, + { "code": "my", "label": "Burmese" }, + { "code": "na", "label": "Nauru" }, + { + "code": "nb", + "label": "Bokm�l, Norwegian; Norwegian Bokm�l" + }, + { "code": "nd", "label": "Ndebele, North; North Ndebele" }, + { "code": "ne", "label": "Nepali" }, + { "code": "ng", "label": "Ndonga" }, + { "code": "nl", "label": "Dutch; Flemish" }, + { "code": "nn", "label": "Norwegian Nynorsk; Nynorsk, Norwegian" }, + { "code": "no", "label": "Norwegian" }, + { "code": "nr", "label": "Ndebele, South; South Ndebele" }, + { "code": "nv", "label": "Navajo; Navaho" }, + { "code": "ny", "label": "Chichewa; Chewa; Nyanja" }, + { "code": "oc", "label": "Occitan (post 1500)" }, + { "code": "oj", "label": "Ojibwa" }, + { "code": "om", "label": "Oromo" }, + { "code": "or", "label": "Oriya" }, + { "code": "os", "label": "Ossetian; Ossetic" }, + { "code": "pa", "label": "Panjabi; Punjabi" }, + { "code": "pi", "label": "Pali" }, + { "code": "pl", "label": "Polish" }, + { "code": "ps", "label": "Pushto; Pashto" }, + { "code": "pt", "label": "Portuguese" }, + { "code": "qu", "label": "Quechua" }, + { "code": "rm", "label": "Romansh" }, + { "code": "rn", "label": "Rundi" }, + { "code": "ro", "label": "Romanian; Moldavian; Moldovan" }, + { "code": "ru", "label": "Russian" }, + { "code": "rw", "label": "Kinyarwanda" }, + { "code": "sa", "label": "Sanskrit" }, + { "code": "sc", "label": "Sardinian" }, + { "code": "sd", "label": "Sindhi" }, + { "code": "se", "label": "Northern Sami" }, + { "code": "sg", "label": "Sango" }, + { "code": "si", "label": "Sinhala; Sinhalese" }, + { "code": "sk", "label": "Slovak" }, + { "code": "sl", "label": "Slovenian" }, + { "code": "sm", "label": "Samoan" }, + { "code": "sn", "label": "Shona" }, + { "code": "so", "label": "Somali" }, + { "code": "sq", "label": "Albanian" }, + { "code": "sr", "label": "Serbian" }, + { "code": "ss", "label": "Swati" }, + { "code": "st", "label": "Sotho, Southern" }, + { "code": "su", "label": "Sundanese" }, + { "code": "sv", "label": "Swedish" }, + { "code": "sw", "label": "Swahili" }, + { "code": "ta", "label": "Tamil" }, + { "code": "te", "label": "Telugu" }, + { "code": "tg", "label": "Tajik" }, + { "code": "th", "label": "Thai" }, + { "code": "ti", "label": "Tigrinya" }, + { "code": "tk", "label": "Turkmen" }, + { "code": "tl", "label": "Tagalog" }, + { "code": "tn", "label": "Tswana" }, + { "code": "to", "label": "Tonga (Tonga Islands)" }, + { "code": "tr", "label": "Turkish" }, + { "code": "ts", "label": "Tsonga" }, + { "code": "tt", "label": "Tatar" }, + { "code": "tw", "label": "Twi" }, + { "code": "ty", "label": "Tahitian" }, + { "code": "ug", "label": "Uighur; Uyghur" }, + { "code": "uk", "label": "Ukrainian" }, + { "code": "ur", "label": "Urdu" }, + { "code": "uz", "label": "Uzbek" }, + { "code": "ve", "label": "Venda" }, + { "code": "vi", "label": "Vietlabelse" }, + { "code": "vo", "label": "Volap�k" }, + { "code": "wa", "label": "Walloon" }, + { "code": "wo", "label": "Wolof" }, + { "code": "xh", "label": "Xhosa" }, + { "code": "yi", "label": "Yiddish" }, + { "code": "yo", "label": "Yoruba" }, + { "code": "za", "label": "Zhuang; Chuang" }, + { "code": "zh", "label": "Chinese" }, + { "code": "zu", "label": "Zulu" } ] } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 6e95a4d05..12eb95de9 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -55,7 +55,7 @@

Exhibition Configuration

diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java new file mode 100644 index 000000000..3efd1fca0 --- /dev/null +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java @@ -0,0 +1,128 @@ +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.LinkedHashMap; +import java.util.List; +import java.util.Map; + +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.config.ExhibitionLanguageConfig; +import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; +import edu.asu.diging.vspace.core.model.impl.Exhibition; +import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; + +public class ExhibitionLanguageTest { + + + @InjectMocks + ExhibitionFactory exhibitionFactory; + + @Mock + private ExhibitionRepository exhibitRepo; + + @Mock + private ExhibitionLanguageConfig exhibitionLanguageConfig; + + @Before + public void init() { + MockitoAnnotations.initMocks(this); + } + + + @Test + public void test_updateExhibitionLanguages_success(){ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + + languages.add("en"); + languages.add("aa"); + + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + exhibitionFactory.updateExhibitionLanguages(exhibition, languages); + assertEquals(exhibition.getLanguages().size(),2); + + } + + @Test + public void test_updateExhibitionLanguages_duplicates(){ + Exhibition exhibition = new Exhibition(); + + //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() ; + + languages.add("en"); + languages.add("aa"); + languages.add("sq"); // new language added + + 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"); + Map language3 = new LinkedHashMap(); + language3.put("code", "sq"); + language3.put("label", "Albanian"); + mappedLanguages.add(language1); + mappedLanguages.add(language2); + mappedLanguages.add(language3); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + exhibitionFactory.updateExhibitionLanguages(exhibition, languages); + + //no duplicate entries should be added + assertEquals(exhibition.getLanguages().size(),3); + } + + @Test + public void test_updateExhibitionLanguages_whenLabelIsNotPresentInConfig(){ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + + languages.add("en"); + languages.add("Invalid"); + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + exhibitionFactory.updateExhibitionLanguages(exhibition, languages); + assertEquals(exhibition.getLanguages().size(),1); + + + } + + +} From bf91424e5f4755136e02f2946111643a32b27926 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 15:52:21 -0700 Subject: [PATCH 05/28] [story/VSPC-213] added code for default language --- .../core/factory/impl/ExhibitionFactory.java | 24 ++++++++++--- .../core/model/impl/ExhibitionLanguage.java | 12 +++++-- .../ExhibitionConfigurationController.java | 6 ++-- .../WEB-INF/views/staff/exhibit/config.html | 9 ++++- .../services/impl/ExhibitionLanguageTest.java | 35 ++++++++++++++++--- 5 files changed, 71 insertions(+), 15 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java index 9d0c7c779..351174ac7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java @@ -36,24 +36,40 @@ public IExhibition createExhibition() { * Updates the Exhibition with given list of languages. It fetches the language from exhibitionLanguageConfig using code. * * @param exhibition + * @param defaultLanguage * @param languages */ - public void updateExhibitionLanguages(Exhibition exhibition, List codes) { + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { List languageMapList = new ArrayList(); + + if(defaultLanguage!=null) { + codes.add(defaultLanguage); + } codes.forEach(code -> { Optional languageMap = exhibitionLanguageConfig.getExhibitionLanguageList() .stream().filter(map-> code.equalsIgnoreCase((String) map.get("code"))) - .map(exhibitLanguage -> new ExhibitionLanguage((String) exhibitLanguage.get("label"), - (String) exhibitLanguage.get("code"), exhibition)).findFirst(); + .map(language ->{ + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) language.get("label"), + (String) language.get("code"), exhibition); + + if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { + exhibitionLanguage.setDefault(true); + } + return exhibitionLanguage; + + }).findFirst(); if(languageMap.isPresent()) { + languageMapList.add(languageMap.get()); } }); + + if(CollectionUtils.isNotEmpty(languageMapList)) { exhibition.getLanguages().addAll(languageMapList); } - + } 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 88661b849..75cc8cacf 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 @@ -12,8 +12,6 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; -import edu.asu.diging.vspace.core.model.ExhibitionLanguageCodes; - @Entity public class ExhibitionLanguage { @@ -32,6 +30,8 @@ public ExhibitionLanguage() { private Exhibition exhibition; private String code; + + private boolean isDefault; public ExhibitionLanguage(String label, String code, Exhibition exhibition) { this.label=label; @@ -82,4 +82,12 @@ public boolean equals(Object obj) { && Objects.equals(label, other.label); } + public boolean isDefault() { + return isDefault; + } + + public void setDefault(boolean isDefault) { + this.isDefault = isDefault; + } + } 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 41b16a337..4c9721dfa 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 @@ -9,8 +9,6 @@ import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; -import org.springframework.core.env.AbstractEnvironment; - import org.javers.common.collections.Arrays; import org.springframework.beans.factory.annotation.Autowired; @@ -87,6 +85,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, @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); @@ -100,8 +99,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, exhibition.setStartSpace(startSpace); exhibition.setTitle(title); exhibition.setMode(exhibitMode); - - exhibitFactory.updateExhibitionLanguages(exhibition,languages); + exhibitFactory.updateExhibitionLanguages(exhibition,languages,defaultLanguage); if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { exhibition.setCustomMessage(customMessage); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 12eb95de9..7fd47e6f0 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -53,11 +53,18 @@

Exhibition Configuration

- +
+ +
+ + +
languages= new ArrayList() ; @@ -118,11 +119,37 @@ public void test_updateExhibitionLanguages_whenLabelIsNotPresentInConfig(){ mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionFactory.updateExhibitionLanguages(exhibition, languages); + exhibitionFactory.updateExhibitionLanguages(exhibition, languages,null); assertEquals(exhibition.getLanguages().size(),1); } + @Test + public void test_updateExhibitionLanguages_defaultLanguage(){ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + languages.add("en"); + languages.add("aa"); + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + exhibitionFactory.updateExhibitionLanguages(exhibition, languages,"en"); + assertEquals(exhibition.getLanguages().size(),2); + exhibition.getLanguages().forEach(language -> { + if(language.getCode().equals("en")) { + assertTrue(language.isDefault()); + + } }); + } } From cbf951943cf598244fa3fecf0a25c382949cf84a Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 16:17:15 -0700 Subject: [PATCH 06/28] [VSPC-213] refactor --- .../vspace/config/ExhibitionLanguageConfig.java | 7 +++++-- .../vspace/config/JsonPropertySourceFactory.java | 11 ++++++----- .../webapp/WEB-INF/views/staff/exhibit/config.html | 3 --- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java index 988062308..61d09935b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -29,9 +29,12 @@ public class ExhibitionLanguageConfig { @Autowired private Environment environment; - List exhibitionLanguageList = new ArrayList(); - + List exhibitionLanguageList = new ArrayList(); + /** + * Fetches the exhibition language list from property source and stores in exhibitionLanguageList + * + */ @PostConstruct public void init() { for(Iterator it = ((AbstractEnvironment) environment).getPropertySources().iterator(); it.hasNext(); ) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java index 94a1aa76a..bc9c024c8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java @@ -14,15 +14,16 @@ public class JsonPropertySourceFactory implements PropertySourceFactory { - + /** + * Converts language json read from properties file to a map and stores in property source. + * + */ @Override public org.springframework.core.env.PropertySource createPropertySource(String name, EncodedResource resource) throws IOException { Map readValue = new ObjectMapper() .readValue(resource.getInputStream(), Map.class); - MapPropertySource source= new MapPropertySource("json-property", readValue); - - return source; + return new MapPropertySource("json-property", readValue); } - } +} diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index 7fd47e6f0..e5df65615 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -20,9 +20,6 @@ else { offlineMessage.hide(); } - } - function languageChange(languageChosen) { - } From f3285d443ed8ab0005a5d3f0c2fcfd48822acf9c Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 16:20:19 -0700 Subject: [PATCH 07/28] [story/VSPC-213] codefactor --- .../diging/vspace/core/model/impl/ExhibitionLanguage.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 75cc8cacf..5bd6dd028 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 @@ -34,9 +34,9 @@ public ExhibitionLanguage() { private boolean isDefault; public ExhibitionLanguage(String label, String code, Exhibition exhibition) { - this.label=label; - this.code=code; - this.exhibition=exhibition; + this.label=label; + this.code=code; + this.exhibition=exhibition; } public String getCode() { From 7ac5aed970789b0f7f4cc91b3007b05e1588e0a1 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 16:48:04 -0700 Subject: [PATCH 08/28] [story/VSPC-213] refactor --- .../config/ExhibitionLanguageConfig.java | 5 +- .../core/factory/impl/ExhibitionFactory.java | 44 -------------- .../core/services/IExhibitionManager.java | 2 + .../core/services/impl/ExhibitionManager.java | 57 +++++++++++++++++++ .../ExhibitionConfigurationController.java | 6 +- .../WEB-INF/views/staff/exhibit/config.html | 4 +- .../services/impl/ExhibitionLanguageTest.java | 11 ++-- 7 files changed, 70 insertions(+), 59 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java index 61d09935b..79eeb37d6 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -32,7 +32,7 @@ public class ExhibitionLanguageConfig { List exhibitionLanguageList = new ArrayList(); /** - * Fetches the exhibition language list from property source and stores in exhibitionLanguageList + * Fetches the configured language list from environment property source and stores in exhibitionLanguageList * */ @PostConstruct @@ -43,11 +43,8 @@ public void init() { MapPropertySource mapSource = ((MapPropertySource) propertySource); if("json-property".equals(mapSource.getName())) { Map languageMap = mapSource.getSource(); - exhibitionLanguageList = (List) languageMap.get("languages"); - } - } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java index 351174ac7..be6de723a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java @@ -18,9 +18,6 @@ @Service public class ExhibitionFactory implements IExhibitionFactory { - - @Autowired - private ExhibitionLanguageConfig exhibitionLanguageConfig; /* * (non-Javadoc) @@ -32,45 +29,4 @@ public IExhibition createExhibition() { return new Exhibition(); } - /** - * Updates the Exhibition with given list of languages. It fetches the language from exhibitionLanguageConfig using code. - * - * @param exhibition - * @param defaultLanguage - * @param languages - */ - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { - List languageMapList = new ArrayList(); - - if(defaultLanguage!=null) { - codes.add(defaultLanguage); - } - codes.forEach(code -> { - Optional languageMap = exhibitionLanguageConfig.getExhibitionLanguageList() - .stream().filter(map-> code.equalsIgnoreCase((String) map.get("code"))) - .map(language ->{ - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) language.get("label"), - (String) language.get("code"), exhibition); - - if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { - exhibitionLanguage.setDefault(true); - } - return exhibitionLanguage; - - }).findFirst(); - - if(languageMap.isPresent()) { - - languageMapList.add(languageMap.get()); - } - }); - - - if(CollectionUtils.isNotEmpty(languageMapList)) { - exhibition.getLanguages().addAll(languageMapList); - } - - - } - } 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 afd44964b..e1df7f7c9 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 @@ -34,4 +34,6 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); + } 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 12902ed23..c4556844a 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 @@ -6,12 +6,17 @@ 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 edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; 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.ExhibitionLanguage; import edu.asu.diging.vspace.core.services.IExhibitionManager; @Transactional @@ -20,6 +25,12 @@ public class ExhibitionManager implements IExhibitionManager { @Autowired private ExhibitionRepository exhibitRepo; + + @Autowired + private ExhibitionLanguageConfig exhibitionLanguageConfig; + + private final Logger logger = LoggerFactory.getLogger(getClass()); + /* * (non-Javadoc) @@ -66,4 +77,50 @@ public IExhibition getStartExhibition() { } return null; } + + /** + * Updates the Exhibition with given list of languages. It fetches the language from exhibitionLanguageConfig using code. + * + * @param exhibition + * @param defaultLanguage + * @param languages + */ + @Override + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { + List languageMapList = new ArrayList(); + if(CollectionUtils.isNotEmpty(codes)) { + if(defaultLanguage!=null) { + codes.add(defaultLanguage); + } + codes.forEach(code -> { + Optional languageMap = exhibitionLanguageConfig.getExhibitionLanguageList() + .stream().filter(map-> code.equalsIgnoreCase((String) map.get("code"))) + .map(language -> { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) language.get("label"), + (String) language.get("code"), exhibition); + + if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { + exhibitionLanguage.setDefault(true); + } + return exhibitionLanguage; + + }).findFirst(); + + if(languageMap.isPresent()) { + + languageMapList.add(languageMap.get()); + } + }); + + + if(CollectionUtils.isNotEmpty(languageMapList)) { + logger.info("Updating Exhibition with Languages" + codes); + exhibition.getLanguages().addAll(languageMapList); + } + } + + } + + + } 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 4c9721dfa..29df001bd 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 @@ -57,7 +57,7 @@ public String showExhibitions(Model model) { if(exhibition!=null) { model.addAttribute("exhibition", exhibition); if(exhibition.getLanguages() != null ) { - model.addAttribute("existingLanguages", exhibition.getLanguages() + model.addAttribute("mappedLanguages", exhibition.getLanguages() .stream().map(language -> language.getLabel()).collect(Collectors.toList())); } } else { @@ -65,7 +65,7 @@ public String showExhibitions(Model model) { } model.addAttribute("exhibitionModes", Arrays.asList(ExhibitionModes.values())); model.addAttribute("spacesList", spaceRepo.findAll()); - model.addAttribute("exhibitionLanguages", exhibitionLanguageConfig.getExhibitionLanguageList()); + model.addAttribute("languageList", exhibitionLanguageConfig.getExhibitionLanguageList()); return "staff/exhibit/config"; } @@ -99,7 +99,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, exhibition.setStartSpace(startSpace); exhibition.setTitle(title); exhibition.setMode(exhibitMode); - exhibitFactory.updateExhibitionLanguages(exhibition,languages,defaultLanguage); + exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { exhibition.setCustomMessage(customMessage); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index e5df65615..e2bc97364 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -52,14 +52,14 @@

Exhibition Configuration

diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java index b1541c1bc..023816990 100644 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java +++ b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java @@ -17,7 +17,6 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; -import edu.asu.diging.vspace.core.factory.impl.ExhibitionFactory; import edu.asu.diging.vspace.core.model.impl.Exhibition; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @@ -25,7 +24,7 @@ public class ExhibitionLanguageTest { @InjectMocks - ExhibitionFactory exhibitionFactory; + ExhibitionManager exhibitionManager; @Mock private ExhibitionRepository exhibitRepo; @@ -59,7 +58,7 @@ public void test_updateExhibitionLanguages_success(){ mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionFactory.updateExhibitionLanguages(exhibition, languages,null); + exhibitionManager.updateExhibitionLanguages(exhibition, languages,null); assertEquals(exhibition.getLanguages().size(),2); } @@ -94,7 +93,7 @@ public void test_updateExhibitionLanguages_duplicates(){ mappedLanguages.add(language2); mappedLanguages.add(language3); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionFactory.updateExhibitionLanguages(exhibition, languages, null); + exhibitionManager.updateExhibitionLanguages(exhibition, languages, null); //no duplicate entries should be added assertEquals(exhibition.getLanguages().size(),3); @@ -119,7 +118,7 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig(){ mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionFactory.updateExhibitionLanguages(exhibition, languages,null); + exhibitionManager.updateExhibitionLanguages(exhibition, languages,null); assertEquals(exhibition.getLanguages().size(),1); @@ -143,7 +142,7 @@ public void test_updateExhibitionLanguages_defaultLanguage(){ mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionFactory.updateExhibitionLanguages(exhibition, languages,"en"); + exhibitionManager.updateExhibitionLanguages(exhibition, languages,"en"); assertEquals(exhibition.getLanguages().size(),2); exhibition.getLanguages().forEach(language -> { if(language.getCode().equals("en")) { From ff7a491887eb1a4288ecf938a1c341fd3c73af88 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 23 May 2022 16:49:59 -0700 Subject: [PATCH 09/28] [story/VSPC-213] revert unwanted file changes --- .../vspace/core/factory/impl/ExhibitionFactory.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java index be6de723a..7b982ba2d 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/ExhibitionFactory.java @@ -1,20 +1,10 @@ package edu.asu.diging.vspace.core.factory.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.factory.IExhibitionFactory; 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.ExhibitionLanguage; @Service public class ExhibitionFactory implements IExhibitionFactory { From 1e883bd37389794a731e2c5373040f68bb1e4e2f Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 26 May 2022 12:11:08 -0700 Subject: [PATCH 10/28] [story/VSPC-213] review comments --- .../diging/vspace/config/ConfigConstants.java | 12 ++++++ .../config/ExhibitionLanguageConfig.java | 6 +-- .../config/JsonPropertySourceFactory.java | 2 +- .../core/model/impl/ExhibitionLanguage.java | 10 ++--- .../core/services/impl/ExhibitionManager.java | 40 ++++++++----------- 5 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/config/ConfigConstants.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ConfigConstants.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ConfigConstants.java new file mode 100644 index 000000000..a351f298a --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ConfigConstants.java @@ -0,0 +1,12 @@ +package edu.asu.diging.vspace.config; + +public interface ConfigConstants { + public final static String EXHIBITION_LANGUAGE_LIST_PROPERTY= "exhibition-language-list"; + + public final static String LABEL= "label"; + + public final static String CODE= "code"; + + public final static String LANGUAGES= "languages"; + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java index 79eeb37d6..f1da78f9b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -29,7 +29,7 @@ public class ExhibitionLanguageConfig { @Autowired private Environment environment; - List exhibitionLanguageList = new ArrayList(); + private List exhibitionLanguageList = new ArrayList(); /** * Fetches the configured language list from environment property source and stores in exhibitionLanguageList @@ -41,9 +41,9 @@ public void init() { org.springframework.core.env.PropertySource propertySource = (org.springframework.core.env.PropertySource) it.next(); if (propertySource instanceof MapPropertySource) { MapPropertySource mapSource = ((MapPropertySource) propertySource); - if("json-property".equals(mapSource.getName())) { + if(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY.equals(mapSource.getName())) { Map languageMap = mapSource.getSource(); - exhibitionLanguageList = (List) languageMap.get("languages"); + exhibitionLanguageList = (List) languageMap.get(ConfigConstants.LANGUAGES); } } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java index bc9c024c8..de43ee62c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/JsonPropertySourceFactory.java @@ -23,7 +23,7 @@ public org.springframework.core.env.PropertySource createPropertySource(Strin throws IOException { Map readValue = new ObjectMapper() .readValue(resource.getInputStream(), Map.class); - return new MapPropertySource("json-property", readValue); + return new MapPropertySource(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY, readValue); } } 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 5bd6dd028..c6be3ba9c 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 @@ -15,10 +15,6 @@ @Entity public class ExhibitionLanguage { - public ExhibitionLanguage() { - super(); - } - @Id @GeneratedValue(generator = "exhibit_language_id_generator") @GenericGenerator(name = "exhibit_language_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") @@ -32,7 +28,11 @@ public ExhibitionLanguage() { private String code; private boolean isDefault; - + + public ExhibitionLanguage() { + super(); + } + public ExhibitionLanguage(String label, String code, Exhibition exhibition) { this.label=label; this.code=code; 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 c4556844a..a636614c1 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 @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import javax.transaction.Transactional; @@ -12,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +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.model.IExhibition; @@ -23,14 +25,14 @@ @Service public class ExhibitionManager implements IExhibitionManager { + private final Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired private ExhibitionRepository exhibitRepo; @Autowired private ExhibitionLanguageConfig exhibitionLanguageConfig; - private final Logger logger = LoggerFactory.getLogger(getClass()); - /* * (non-Javadoc) @@ -87,40 +89,32 @@ public IExhibition getStartExhibition() { */ @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { - List languageMapList = new ArrayList(); if(CollectionUtils.isNotEmpty(codes)) { if(defaultLanguage!=null) { codes.add(defaultLanguage); } - codes.forEach(code -> { - Optional languageMap = exhibitionLanguageConfig.getExhibitionLanguageList() - .stream().filter(map-> code.equalsIgnoreCase((String) map.get("code"))) - .map(language -> { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) language.get("label"), - (String) language.get("code"), exhibition); + if(CollectionUtils.isNotEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { + List exhibitionLanguages = exhibitionLanguageConfig.getExhibitionLanguageList() + .stream().filter(languageMap -> codes.contains(languageMap.get(ConfigConstants.CODE))) + .map(map -> { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) map.get(ConfigConstants.LABEL), + (String) map.get(ConfigConstants.CODE), exhibition); if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { exhibitionLanguage.setDefault(true); } return exhibitionLanguage; + }).collect(Collectors.toList()); - }).findFirst(); - - if(languageMap.isPresent()) { - - languageMapList.add(languageMap.get()); + if(CollectionUtils.isNotEmpty(exhibitionLanguages)) { + logger.info("Updating Exhibition with Languages" + codes); + exhibition.getLanguages().addAll(exhibitionLanguages); } - }); - - - if(CollectionUtils.isNotEmpty(languageMapList)) { - logger.info("Updating Exhibition with Languages" + codes); - exhibition.getLanguages().addAll(languageMapList); + } else { + logger.error("Language list configuration not available"); } - } + } } - - } From e31392198bf2c5b114ddead4484da4a5bc5985f0 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 26 May 2022 12:13:14 -0700 Subject: [PATCH 11/28] [story/VSPC-213] modified prefix of exhibition language --- .../asu/diging/vspace/core/model/impl/ExhibitionLanguage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c6be3ba9c..b18a85b11 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 @@ -17,7 +17,7 @@ public class ExhibitionLanguage { @Id @GeneratedValue(generator = "exhibit_language_id_generator") - @GenericGenerator(name = "exhibit_language_id_generator", parameters = @Parameter(name = "prefix", value = "EXH"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") + @GenericGenerator(name = "exhibit_language_id_generator", parameters = @Parameter(name = "prefix", value = "LANG"), strategy = "edu.asu.diging.vspace.core.data.IdGenerator") private String id; private String label; From 52e2fd54e3e6b188b3cc9483ba78d375bf1ab923 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 6 Jun 2022 16:25:34 -0700 Subject: [PATCH 12/28] [story/VSPC-213] added exceptions. modified exhibition language config --- .../config/ExhibitionLanguageConfig.java | 17 +- .../LanguageListConfigurationNotFound.java | 36 ++++ .../core/model/impl/ExhibitionLanguage.java | 35 ++-- .../core/services/IExhibitionManager.java | 3 +- .../core/services/impl/ExhibitionManager.java | 34 +++- .../ExhibitionConfigurationController.java | 9 +- .../WEB-INF/views/staff/exhibit/config.html | 2 +- .../services/impl/ExhibitionLanguageTest.java | 154 ------------------ .../services/impl/ExhibitionManagerTest.java | 126 ++++++++++++++ 9 files changed, 222 insertions(+), 194 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java delete mode 100644 vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java index f1da78f9b..dffa0304a 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -20,6 +20,8 @@ import org.springframework.stereotype.Component; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; +import org.springframework.core.env.MutablePropertySources; + @Component @PropertySource(value= "classpath:exhibitionLanguages.properties" , factory=JsonPropertySourceFactory.class) @@ -37,16 +39,13 @@ public class ExhibitionLanguageConfig { */ @PostConstruct public void init() { - for(Iterator it = ((AbstractEnvironment) environment).getPropertySources().iterator(); it.hasNext(); ) { - org.springframework.core.env.PropertySource propertySource = (org.springframework.core.env.PropertySource) it.next(); - if (propertySource instanceof MapPropertySource) { - MapPropertySource mapSource = ((MapPropertySource) propertySource); - if(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY.equals(mapSource.getName())) { - Map languageMap = mapSource.getSource(); - exhibitionLanguageList = (List) languageMap.get(ConfigConstants.LANGUAGES); - } - } + + org.springframework.core.env.PropertySource source = ((AbstractEnvironment) environment).getPropertySources().get(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY); + if(source !=null ) { + Map languageMap = (Map) source.getSource(); + exhibitionLanguageList = (List) languageMap.get(ConfigConstants.LANGUAGES); } + } public List getExhibitionLanguageList() { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java new file mode 100644 index 000000000..a8c8511dc --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java @@ -0,0 +1,36 @@ +package edu.asu.diging.vspace.core.exception; + +public class LanguageListConfigurationNotFound extends Exception { + + + /** + * + */ + private static final long serialVersionUID = 1L; + + public LanguageListConfigurationNotFound() { + super(); + // TODO Auto-generated constructor stub + } + + public LanguageListConfigurationNotFound(String arg0, Throwable arg1, boolean arg2, boolean arg3) { + super(arg0, arg1, arg2, arg3); + // TODO Auto-generated constructor stub + } + + public LanguageListConfigurationNotFound(String arg0, Throwable arg1) { + super(arg0, arg1); + // TODO Auto-generated constructor stub + } + + public LanguageListConfigurationNotFound(String arg0) { + super(arg0); + // TODO Auto-generated constructor stub + } + + public LanguageListConfigurationNotFound(Throwable arg0) { + super(arg0); + // TODO Auto-generated constructor stub + } + +} 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 b18a85b11..b3f238432 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 @@ -38,15 +38,7 @@ public ExhibitionLanguage(String label, String code, Exhibition exhibition) { this.code=code; this.exhibition=exhibition; } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - + public String getLabel() { return label; } @@ -54,7 +46,7 @@ public String getLabel() { public void setLabel(String label) { this.label = label; } - + public Exhibition getExhibition() { return exhibition; } @@ -63,7 +55,22 @@ public void setExhibition(Exhibition exhibition) { this.exhibition = exhibition; } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + + public boolean isDefault() { + return isDefault; + } + + public void setDefault(boolean isDefault) { + this.isDefault = isDefault; + } + @Override public int hashCode() { return Objects.hash(code, exhibition, label); @@ -82,12 +89,4 @@ public boolean equals(Object obj) { && Objects.equals(label, other.label); } - public boolean isDefault() { - return isDefault; - } - - public void setDefault(boolean isDefault) { - this.isDefault = isDefault; - } - } 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..ff8ce5c7a 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,6 +2,7 @@ import java.util.List; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -34,6 +35,6 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws LanguageListConfigurationNotFound; } 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 a636614c1..cebf70884 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.ExhibitionRepository; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; 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.ExhibitionLanguage; @@ -86,32 +87,47 @@ public IExhibition getStartExhibition() { * @param exhibition * @param defaultLanguage * @param languages + * @throws LanguageListConfigurationNotFound */ @Override - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { if(CollectionUtils.isNotEmpty(codes)) { - if(defaultLanguage!=null) { + if(defaultLanguage!=null && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } if(CollectionUtils.isNotEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { List exhibitionLanguages = exhibitionLanguageConfig.getExhibitionLanguageList() - .stream().filter(languageMap -> codes.contains(languageMap.get(ConfigConstants.CODE))) - .map(map -> { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) map.get(ConfigConstants.LABEL), - (String) map.get(ConfigConstants.CODE), exhibition); + .stream().filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) + .map(languageMap -> { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), + (String) languageMap.get(ConfigConstants.CODE), exhibition); if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { exhibitionLanguage.setDefault(true); + } else { + exhibitionLanguage.setDefault(false); } return exhibitionLanguage; }).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(exhibitionLanguages)) { - logger.info("Updating Exhibition with Languages" + codes); + logger.trace("Updating Exhibition with Languages" + codes); exhibition.getLanguages().addAll(exhibitionLanguages); - } + +// List defaultLanguages= exhibition.getLanguages().stream() +// .filter(language -> language.isDefault() && !language.getCode().equals(defaultLanguage) ) +// .map(languageMap -> {languageMap.setDefault(false); return languageMap ; }) +// +// .collect(Collectors.toList()); +// +// exhibition.getLanguages().removeAll(defaultLanguages); +// exhibition.getLanguages().addAll(defaultLanguages); + + + } + } else { - logger.error("Language list configuration not available"); + throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); } } 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 29df001bd..f2ce53f4c 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,6 +22,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; 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; @@ -59,6 +60,9 @@ public String showExhibitions(Model model) { if(exhibition.getLanguages() != null ) { model.addAttribute("mappedLanguages", exhibition.getLanguages() .stream().map(language -> language.getLabel()).collect(Collectors.toList())); + model.addAttribute("defaultLanguage",exhibition.getLanguages().stream() + .filter(language -> language.isDefault()).findFirst().orElse(null) ); + } } else { model.addAttribute("exhibition", new Exhibition()); @@ -77,6 +81,7 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return + * @throws LanguageListConfigurationNotFound */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, @@ -86,7 +91,7 @@ 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, LanguageListConfigurationNotFound { ISpace startSpace = spaceManager.getSpace(spaceID); @@ -100,7 +105,7 @@ public RedirectView createOrUpdateExhibition(HttpServletRequest request, exhibition.setTitle(title); exhibition.setMode(exhibitMode); exhibitManager.updateExhibitionLanguages(exhibition,languages,defaultLanguage); - + if(exhibitMode.equals(ExhibitionModes.OFFLINE) && !customMessage.equals(ExhibitionModes.OFFLINE.getValue())) { exhibition.setCustomMessage(customMessage); } diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index e2bc97364..c3ca6244f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -59,7 +59,7 @@

Exhibition Configuration

diff --git a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java b/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java deleted file mode 100644 index 023816990..000000000 --- a/vspace/src/test/java/edu/asu/diging/vspace/core/services/impl/ExhibitionLanguageTest.java +++ /dev/null @@ -1,154 +0,0 @@ -package edu.asu.diging.vspace.core.services.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -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.config.ExhibitionLanguageConfig; -import edu.asu.diging.vspace.core.data.ExhibitionRepository; -import edu.asu.diging.vspace.core.model.impl.Exhibition; -import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; - -public class ExhibitionLanguageTest { - - - @InjectMocks - ExhibitionManager exhibitionManager; - - @Mock - private ExhibitionRepository exhibitRepo; - - @Mock - private ExhibitionLanguageConfig exhibitionLanguageConfig; - - @Before - public void init() { - MockitoAnnotations.initMocks(this); - } - - - @Test - public void test_updateExhibitionLanguages_success(){ - Exhibition exhibition = new Exhibition(); - - List languages= new ArrayList() ; - - languages.add("en"); - languages.add("aa"); - - 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); - when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionManager.updateExhibitionLanguages(exhibition, languages,null); - assertEquals(exhibition.getLanguages().size(),2); - - } - - @Test - public void test_updateExhibitionLanguages_duplicates(){ - Exhibition exhibition = new Exhibition(); - - //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() ; - - languages.add("en"); - languages.add("aa"); - languages.add("sq"); // new language added - - 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"); - Map language3 = new LinkedHashMap(); - language3.put("code", "sq"); - language3.put("label", "Albanian"); - mappedLanguages.add(language1); - mappedLanguages.add(language2); - mappedLanguages.add(language3); - when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionManager.updateExhibitionLanguages(exhibition, languages, null); - - //no duplicate entries should be added - assertEquals(exhibition.getLanguages().size(),3); - } - - @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig(){ - Exhibition exhibition = new Exhibition(); - - List languages= new ArrayList() ; - - languages.add("en"); - languages.add("Invalid"); - 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); - when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionManager.updateExhibitionLanguages(exhibition, languages,null); - assertEquals(exhibition.getLanguages().size(),1); - - - } - - @Test - public void test_updateExhibitionLanguages_defaultLanguage(){ - Exhibition exhibition = new Exhibition(); - - List languages= new ArrayList() ; - languages.add("en"); - languages.add("aa"); - 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); - when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - exhibitionManager.updateExhibitionLanguages(exhibition, languages,"en"); - assertEquals(exhibition.getLanguages().size(),2); - exhibition.getLanguages().forEach(language -> { - if(language.getCode().equals("en")) { - assertTrue(language.isDefault()); - - } }); - - } -} 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 5df1c35f2..612b7b60a 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 @@ -2,9 +2,14 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import java.util.Optional; import org.junit.Before; @@ -13,15 +18,21 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; 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.ExhibitionLanguage; public class ExhibitionManagerTest { @Mock private ExhibitionRepository exhibitRepo; + @Mock + private ExhibitionLanguageConfig exhibitionLanguageConfig; + @InjectMocks private ExhibitionManager serviceToTest; @@ -51,5 +62,120 @@ public void test_getExhibitionById_success() { assertEquals(exhibitionTest, exhibition); verify(exhibitRepo).findById(id); } + + + @Test + public void test_updateExhibitionLanguages_success() throws LanguageListConfigurationNotFound{ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + + languages.add("en"); + languages.add("aa"); + + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + serviceToTest.updateExhibitionLanguages(exhibition, languages,null); + assertEquals(exhibition.getLanguages().size(),2); + + } + + @Test + public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfigurationNotFound{ + Exhibition exhibition = new Exhibition(); + + //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() ; + + languages.add("en"); + languages.add("aa"); + languages.add("sq"); // new language added + + 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"); + Map language3 = new LinkedHashMap(); + language3.put("code", "sq"); + language3.put("label", "Albanian"); + mappedLanguages.add(language1); + mappedLanguages.add(language2); + mappedLanguages.add(language3); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + serviceToTest.updateExhibitionLanguages(exhibition, languages, null); + + //no duplicate entries should be added + assertEquals(exhibition.getLanguages().size(),3); + } + + @Test + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws LanguageListConfigurationNotFound{ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + + languages.add("en"); + languages.add("Invalid"); + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + serviceToTest.updateExhibitionLanguages(exhibition, languages,null); + assertEquals(exhibition.getLanguages().size(),1); + + + } + + @Test + public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageListConfigurationNotFound{ + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + languages.add("en"); + languages.add("aa"); + 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); + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); + serviceToTest.updateExhibitionLanguages(exhibition, languages,"en"); + assertEquals(exhibition.getLanguages().size(),2); + exhibition.getLanguages().forEach(language -> { + if(language.getCode().equals("en")) { + assertTrue(language.isDefault()); + + } }); + + } } From 4575ca4a41faf96a5e98adcbe5902032af995d61 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 7 Jun 2022 13:44:43 -0700 Subject: [PATCH 13/28] [story/VSPC-213] added check for only one default language per exhibition --- .../diging/vspace/core/model/IExhibition.java | 3 +- .../vspace/core/model/impl/Exhibition.java | 7 +- .../core/services/impl/ExhibitionManager.java | 68 +++++++++++-------- .../services/impl/ExhibitionManagerTest.java | 16 ++++- 4 files changed, 59 insertions(+), 35 deletions(-) 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 c848a3874..005e12152 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,6 @@ package edu.asu.diging.vspace.core.model; +import java.util.List; import java.util.Set; import edu.asu.diging.vspace.core.model.impl.ExhibitionLanguage; @@ -30,6 +31,6 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); - Set getLanguages(); + List getLanguages(); } 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 b462a2e4c..554b5a113 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,5 +1,6 @@ package edu.asu.diging.vspace.core.model.impl; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -47,7 +48,7 @@ public class Exhibition extends VSpaceElement implements IExhibition { private boolean aboutPageConfigured; @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) - private Set languages = new HashSet(); + private List languages = new ArrayList(); /* * (non-Javadoc) @@ -127,11 +128,11 @@ public void setAboutPageConfigured(boolean aboutPageConfigured) { this.aboutPageConfigured = aboutPageConfigured; } - public Set getLanguages() { + public List getLanguages() { return languages; } - public void setLanguages(Set languages) { + public void setLanguages(List languages) { this.languages = languages; } 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 cebf70884..c9bd5cf93 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 @@ -92,40 +92,32 @@ public IExhibition getStartExhibition() { @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { if(CollectionUtils.isNotEmpty(codes)) { + + // Adds defaultLanguage to codes list if not already exists. if(defaultLanguage!=null && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } + + if(CollectionUtils.isNotEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { - List exhibitionLanguages = exhibitionLanguageConfig.getExhibitionLanguageList() - .stream().filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) - .map(languageMap -> { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), - (String) languageMap.get(ConfigConstants.CODE), exhibition); - - if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { - exhibitionLanguage.setDefault(true); - } else { - exhibitionLanguage.setDefault(false); - } - return exhibitionLanguage; - }).collect(Collectors.toList()); - - if(CollectionUtils.isNotEmpty(exhibitionLanguages)) { - logger.trace("Updating Exhibition with Languages" + codes); - exhibition.getLanguages().addAll(exhibitionLanguages); - -// List defaultLanguages= exhibition.getLanguages().stream() -// .filter(language -> language.isDefault() && !language.getCode().equals(defaultLanguage) ) -// .map(languageMap -> {languageMap.setDefault(false); return languageMap ; }) -// -// .collect(Collectors.toList()); -// -// exhibition.getLanguages().removeAll(defaultLanguages); -// exhibition.getLanguages().addAll(defaultLanguages); - - - } - + exhibitionLanguageConfig.getExhibitionLanguageList().stream() + .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) + .forEach(languageMap -> { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), + (String) languageMap.get(ConfigConstants.CODE), exhibition); + + int index = exhibition.getLanguages().indexOf(exhibitionLanguage); + if( index < 0 ) { + exhibition.getLanguages().add(exhibitionLanguage); + } + else { + exhibitionLanguage = exhibition.getLanguages().get(index); + + } + updateDefault(exhibitionLanguage, defaultLanguage); + + }); + } else { throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); } @@ -133,4 +125,20 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } + /** + * Updates isDefault to true if equal to defaultLanguage. Otherwise sets to false. + * + * @param exhibitionLanguage + * @param defaultLanguage + */ + private void updateDefault(ExhibitionLanguage exhibitionLanguage, String defaultLanguage) { + + if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { + exhibitionLanguage.setDefault(true); + } else { + exhibitionLanguage.setDefault(false); + } + + } + } 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 612b7b60a..ecc345003 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 @@ -1,6 +1,7 @@ package edu.asu.diging.vspace.core.services.impl; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; @@ -168,13 +169,26 @@ public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageList mappedLanguages.add(language1); mappedLanguages.add(language2); when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(mappedLanguages); - serviceToTest.updateExhibitionLanguages(exhibition, languages,"en"); + 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()); + + }}); + } From f57fa0a3e91a488283f522d8b9db17a6fac1136f Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 7 Jun 2022 13:51:05 -0700 Subject: [PATCH 14/28] [story/VSPC-213] code factor --- .../LanguageListConfigurationNotFound.java | 21 ++++++-------- .../core/services/impl/ExhibitionManager.java | 28 +++++++++---------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java index a8c8511dc..a87fc4956 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java @@ -10,27 +10,22 @@ public class LanguageListConfigurationNotFound extends Exception { public LanguageListConfigurationNotFound() { super(); - // TODO Auto-generated constructor stub } - public LanguageListConfigurationNotFound(String arg0, Throwable arg1, boolean arg2, boolean arg3) { - super(arg0, arg1, arg2, arg3); - // TODO Auto-generated constructor stub + public LanguageListConfigurationNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); } - public LanguageListConfigurationNotFound(String arg0, Throwable arg1) { - super(arg0, arg1); - // TODO Auto-generated constructor stub + public LanguageListConfigurationNotFound(String message, Throwable cause) { + super(message, cause); } - public LanguageListConfigurationNotFound(String arg0) { - super(arg0); - // TODO Auto-generated constructor stub + public LanguageListConfigurationNotFound(String message) { + super(message); } - public LanguageListConfigurationNotFound(Throwable arg0) { - super(arg0); - // TODO Auto-generated constructor stub + public LanguageListConfigurationNotFound(Throwable cause) { + super(cause); } } 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 c9bd5cf93..748dcbab4 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 @@ -101,20 +101,20 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, if(CollectionUtils.isNotEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { exhibitionLanguageConfig.getExhibitionLanguageList().stream() - .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) - .forEach(languageMap -> { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), - (String) languageMap.get(ConfigConstants.CODE), exhibition); - - int index = exhibition.getLanguages().indexOf(exhibitionLanguage); - if( index < 0 ) { - exhibition.getLanguages().add(exhibitionLanguage); - } - else { - exhibitionLanguage = exhibition.getLanguages().get(index); - - } - updateDefault(exhibitionLanguage, defaultLanguage); + .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) + .forEach(languageMap -> { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), + (String) languageMap.get(ConfigConstants.CODE), exhibition); + + int index = exhibition.getLanguages().indexOf(exhibitionLanguage); + if( index < 0 ) { + exhibition.getLanguages().add(exhibitionLanguage); + } + else { + exhibitionLanguage = exhibition.getLanguages().get(index); + + } + updateDefault(exhibitionLanguage, defaultLanguage); }); From 7a8e502108ca517bfb877ec0d3c730ffb72f73c7 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 7 Jun 2022 13:52:16 -0700 Subject: [PATCH 15/28] [story/VSPC-213] 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 748dcbab4..379dff8b0 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 @@ -116,7 +116,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } updateDefault(exhibitionLanguage, defaultLanguage); - }); + }); } else { throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); From 0784a7b5a54fcd4fc7c8c031c25964cb82f07ed1 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 7 Jun 2022 13:57:24 -0700 Subject: [PATCH 16/28] [story/VSPC-213] refactor --- .../asu/diging/vspace/config/ExhibitionLanguageConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java index dffa0304a..4b7353750 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/config/ExhibitionLanguageConfig.java @@ -40,9 +40,9 @@ public class ExhibitionLanguageConfig { @PostConstruct public void init() { - org.springframework.core.env.PropertySource source = ((AbstractEnvironment) environment).getPropertySources().get(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY); - if(source !=null ) { - Map languageMap = (Map) source.getSource(); + org.springframework.core.env.PropertySource propertySource = ((AbstractEnvironment) environment).getPropertySources().get(ConfigConstants.EXHIBITION_LANGUAGE_LIST_PROPERTY); + if( propertySource != null ) { + Map languageMap = (Map) propertySource.getSource(); exhibitionLanguageList = (List) languageMap.get(ConfigConstants.LANGUAGES); } From 5382226a94f39fd4963fdfb2633adc290cdb790e Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 7 Jun 2022 14:03:39 -0700 Subject: [PATCH 17/28] [story/VSPC-213] refactor --- .../core/services/impl/ExhibitionManager.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 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 379dff8b0..35e663b83 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 @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -103,17 +104,8 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, exhibitionLanguageConfig.getExhibitionLanguageList().stream() .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) .forEach(languageMap -> { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), - (String) languageMap.get(ConfigConstants.CODE), exhibition); - - int index = exhibition.getLanguages().indexOf(exhibitionLanguage); - if( index < 0 ) { - exhibition.getLanguages().add(exhibitionLanguage); - } - else { - exhibitionLanguage = exhibition.getLanguages().get(index); - - } + + ExhibitionLanguage exhibitionLanguage = addExhibitionLanguage(exhibition , languageMap); updateDefault(exhibitionLanguage, defaultLanguage); }); @@ -125,6 +117,29 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } + /** + * Adds exhibitionLanguage to exhibition if not already present. If already present, returns exhibitionLanguage from the exhibition. + * + * @param exhibition + * @param languageMap + * @return + */ + private ExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map languageMap) { + ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), + (String) languageMap.get(ConfigConstants.CODE), exhibition); + + int index = exhibition.getLanguages().indexOf(exhibitionLanguage); + if( index < 0 ) { + exhibition.getLanguages().add(exhibitionLanguage); + } + else { + exhibitionLanguage = exhibition.getLanguages().get(index); + + } + + return exhibitionLanguage; + } + /** * Updates isDefault to true if equal to defaultLanguage. Otherwise sets to false. * From 00cc39fd117399adab1932231e145af8c200d0c2 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Fri, 10 Jun 2022 15:29:51 -0700 Subject: [PATCH 18/28] [story/VSPC-213] added interface for Exhibition language --- .../LanguageListConfigurationNotFound.java | 4 -- .../diging/vspace/core/model/IExhibition.java | 2 +- .../core/model/IExhibitionLanguage.java | 13 ++++ .../vspace/core/model/impl/Exhibition.java | 7 +- .../core/model/impl/ExhibitionLanguage.java | 21 ++++-- .../core/services/impl/ExhibitionManager.java | 64 ++++++------------- .../ExhibitionConfigurationController.java | 2 +- .../WEB-INF/views/staff/exhibit/config.html | 2 +- 8 files changed, 57 insertions(+), 58 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java index a87fc4956..d7f256e0c 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java @@ -2,10 +2,6 @@ public class LanguageListConfigurationNotFound extends Exception { - - /** - * - */ private static final long serialVersionUID = 1L; public LanguageListConfigurationNotFound() { 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 005e12152..883cc6b4a 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 @@ -31,6 +31,6 @@ public interface IExhibition extends IVSpaceElement { void setAboutPageConfigured(boolean aboutPageConfigured); - List getLanguages(); + List getLanguages(); } 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 new file mode 100644 index 000000000..fd868906e --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IExhibitionLanguage.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.model; + +public interface IExhibitionLanguage extends IVSpaceElement { + + String getCode(); + + String getLabel(); + + boolean isDefault(); + + void setDefault(boolean isDefault); + +} 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 554b5a113..02618e320 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 @@ -19,6 +19,7 @@ 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.ISpace; /** @@ -48,7 +49,7 @@ public class Exhibition extends VSpaceElement implements IExhibition { private boolean aboutPageConfigured; @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) - private List languages = new ArrayList(); + private List languages = new ArrayList(); /* * (non-Javadoc) @@ -128,11 +129,11 @@ public void setAboutPageConfigured(boolean aboutPageConfigured) { this.aboutPageConfigured = aboutPageConfigured; } - public List getLanguages() { + public List getLanguages() { return languages; } - public void setLanguages(List languages) { + public void setLanguages(List languages) { this.languages = languages; } 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 b3f238432..0943c784f 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,19 +1,16 @@ package edu.asu.diging.vspace.core.model.impl; import java.util.Objects; - import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; - import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; +import edu.asu.diging.vspace.core.model.IExhibitionLanguage; @Entity -public class ExhibitionLanguage { +public class ExhibitionLanguage extends VSpaceElement implements IExhibitionLanguage { @Id @GeneratedValue(generator = "exhibit_language_id_generator") @@ -39,6 +36,16 @@ public ExhibitionLanguage(String label, String code, Exhibition exhibition) { this.exhibition=exhibition; } + @Override + public String getId() { + return id; + } + + @Override + public void setId(String id) { + this.setId(id); + } + public String getLabel() { return label; } @@ -55,6 +62,7 @@ public void setExhibition(Exhibition exhibition) { this.exhibition = exhibition; } + @Override public String getCode() { return code; } @@ -63,10 +71,12 @@ public void setCode(String code) { this.code = code; } + @Override public boolean isDefault() { return isDefault; } + @Override public void setDefault(boolean isDefault) { this.isDefault = isDefault; } @@ -89,4 +99,5 @@ public boolean equals(Object obj) { && Objects.equals(label, other.label); } + } 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 35e663b83..c88066bb7 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,6 +19,7 @@ import edu.asu.diging.vspace.core.data.ExhibitionRepository; import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; 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; import edu.asu.diging.vspace.core.services.IExhibitionManager; @@ -27,8 +28,6 @@ @Service public class ExhibitionManager implements IExhibitionManager { - private final Logger logger = LoggerFactory.getLogger(getClass()); - @Autowired private ExhibitionRepository exhibitRepo; @@ -92,28 +91,25 @@ public IExhibition getStartExhibition() { */ @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { - if(CollectionUtils.isNotEmpty(codes)) { - - // Adds defaultLanguage to codes list if not already exists. - if(defaultLanguage!=null && !codes.contains(defaultLanguage)) { - codes.add(defaultLanguage); - } - + if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { + throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); + } - if(CollectionUtils.isNotEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { - exhibitionLanguageConfig.getExhibitionLanguageList().stream() - .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) - .forEach(languageMap -> { - - ExhibitionLanguage exhibitionLanguage = addExhibitionLanguage(exhibition , languageMap); - updateDefault(exhibitionLanguage, defaultLanguage); + if(CollectionUtils.isEmpty(codes) ) { + return; + } - }); + // Adds defaultLanguage to codes list if not already exists. + if(defaultLanguage!=null && !codes.contains(defaultLanguage)) { + codes.add(defaultLanguage); + } - } else { - throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); - } - } + exhibitionLanguageConfig.getExhibitionLanguageList().stream() + .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) + .forEach(languageMap -> { + IExhibitionLanguage exhibitionLanguage = addExhibitionLanguage(exhibition , languageMap); + exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); + }); } @@ -124,36 +120,18 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, * @param languageMap * @return */ - private ExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map languageMap) { - ExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), + private IExhibitionLanguage addExhibitionLanguage(Exhibition exhibition, Map languageMap) { + IExhibitionLanguage exhibitionLanguage = new ExhibitionLanguage((String) languageMap.get(ConfigConstants.LABEL), (String) languageMap.get(ConfigConstants.CODE), exhibition); int index = exhibition.getLanguages().indexOf(exhibitionLanguage); if( index < 0 ) { exhibition.getLanguages().add(exhibitionLanguage); - } - else { - exhibitionLanguage = exhibition.getLanguages().get(index); - - } - - return exhibitionLanguage; - } - - /** - * Updates isDefault to true if equal to defaultLanguage. Otherwise sets to false. - * - * @param exhibitionLanguage - * @param defaultLanguage - */ - private void updateDefault(ExhibitionLanguage exhibitionLanguage, String defaultLanguage) { - - if(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)) { - exhibitionLanguage.setDefault(true); } else { - exhibitionLanguage.setDefault(false); + exhibitionLanguage = exhibition.getLanguages().get(index); } + 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 f2ce53f4c..7364e4285 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 @@ -58,7 +58,7 @@ public String showExhibitions(Model model) { if(exhibition!=null) { model.addAttribute("exhibition", exhibition); if(exhibition.getLanguages() != null ) { - model.addAttribute("mappedLanguages", exhibition.getLanguages() + 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) ); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index c3ca6244f..a1331214a 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -52,7 +52,7 @@

Exhibition Configuration

From 98a3eb84ea52c2a676bbbcc23213ba7c42d94ba0 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Fri, 10 Jun 2022 15:33:30 -0700 Subject: [PATCH 19/28] [story/VSPC-213] code factor --- .../vspace/core/model/impl/ExhibitionLanguage.java | 2 +- .../vspace/core/services/impl/ExhibitionManager.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 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 0943c784f..2935fa06c 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 @@ -43,7 +43,7 @@ public String getId() { @Override public void setId(String id) { - this.setId(id); + this.setId(id); } public String getLabel() { 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 c88066bb7..213209049 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 @@ -105,11 +105,11 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } exhibitionLanguageConfig.getExhibitionLanguageList().stream() - .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) - .forEach(languageMap -> { - IExhibitionLanguage exhibitionLanguage = addExhibitionLanguage(exhibition , languageMap); - exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); - }); + .filter(languageConfig -> codes.contains(languageConfig.get(ConfigConstants.CODE))) + .forEach(languageMap -> { + IExhibitionLanguage exhibitionLanguage = addExhibitionLanguage(exhibition , languageMap); + exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); + }); } From 00d8754b44228626338c5fa8e7f22324645b3783 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 16 Jun 2022 16:23:53 -0700 Subject: [PATCH 20/28] [story/VSPC-213] langauge list config not found added to exception handler --- .../vspace/core/model/impl/Exhibition.java | 3 +-- .../core/services/impl/ExhibitionManager.java | 5 +++-- .../exception/ExhibitionExceptionHandler.java | 16 ++++++++++++++++ .../WEB-INF/views/staff/exhibit/config.html | 3 ++- 4 files changed, 22 insertions(+), 5 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 4b01ac50b..e34bb3973 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 @@ -154,8 +154,7 @@ public boolean equals(Object obj) { return false; if (getClass() != obj.getClass()) return false; - Exhibition other = (Exhibition) obj; - return Objects.equals(id, other.id); + return Objects.equals(id, ((Exhibition) obj).id); } public String getPreviewId() { 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 bcd322323..205681c33 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 @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import edu.asu.diging.vspace.config.ConfigConstants; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; @@ -99,7 +100,7 @@ public IExhibition getStartExhibition() { */ @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { - if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { + if(!CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); } @@ -108,7 +109,7 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, } // Adds defaultLanguage to codes list if not already exists. - if(defaultLanguage!=null && !codes.contains(defaultLanguage)) { + if(!StringUtils.isEmpty(defaultLanguage) && !codes.contains(defaultLanguage)) { codes.add(defaultLanguage); } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java index fa5b7d37e..5f728e569 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; import edu.asu.diging.vspace.core.exception.ModuleNotFoundException; import edu.asu.diging.vspace.core.exception.SequenceNotFoundException; import edu.asu.diging.vspace.core.exception.SlideNotFoundException; @@ -23,6 +24,7 @@ public class ExhibitionExceptionHandler { private static final String sequence_not_found="sequence_not_found"; private static final String slide_not_found="slide_not_found"; private static final String slide_not_found_in_sequence="slide_not_found_in_sequence"; + private static final String language_list_configuration_not_found="language_list_configuration_not_found"; @ExceptionHandler({ ModuleNotFoundException.class }) protected ModelAndView handleModuleNotFoundException(HttpServletRequest request, ModuleNotFoundException ex) { @@ -90,5 +92,19 @@ protected ModelAndView handleSpaceNotFoundException(HttpServletRequest request, modelAndView.setViewName("module"); return modelAndView; } + + @ExceptionHandler({ LanguageListConfigurationNotFound.class }) + protected ModelAndView handleLanguageListConfigurationNotFoundException(HttpServletRequest request, + LanguageListConfigurationNotFound ex) { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("error_code", language_list_configuration_not_found); + modelAndView.addObject("showAlert", true); + modelAndView.addObject("message", ex.getMessage()); + logger.info("LanguageListConfigurationNotFound Occured:: URL=" + request.getRequestURL()); + logger.info("Code:: "+language_list_configuration_not_found+" Message:: " + ex.getMessage()); + modelAndView.addObject("url", request.getRequestURL()); + modelAndView.setViewName("module"); + return modelAndView; + } } \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html index f2cdb38d2..9570eec5f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/exhibit/config.html @@ -85,7 +85,8 @@

Exhibition Configuration

From 1c566b739aa07066a18dd0264ca186e4fd6f1ed5 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Thu, 16 Jun 2022 16:25:16 -0700 Subject: [PATCH 21/28] [story/VSPC-213] refactor --- .../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 205681c33..fb53de196 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 @@ -100,7 +100,7 @@ public IExhibition getStartExhibition() { */ @Override public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { - if(!CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { + if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); } From 39b9f8b16c691b2af3a4d09531048e041b5582fd Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Fri, 17 Jun 2022 16:31:16 -0700 Subject: [PATCH 22/28] [story/VSPC-213] modified language list config not found exception --- .../LanguageListConfigurationNotFound.java | 27 ------------------- ...ageListConfigurationNotFoundException.java | 27 +++++++++++++++++++ .../core/services/IExhibitionManager.java | 4 +-- .../core/services/impl/ExhibitionManager.java | 8 +++--- .../exception/ExhibitionExceptionHandler.java | 8 +++--- .../ExhibitionConfigurationController.java | 6 ++--- .../services/impl/ExhibitionManagerTest.java | 10 +++---- 7 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFoundException.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java deleted file mode 100644 index d7f256e0c..000000000 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFound.java +++ /dev/null @@ -1,27 +0,0 @@ -package edu.asu.diging.vspace.core.exception; - -public class LanguageListConfigurationNotFound extends Exception { - - private static final long serialVersionUID = 1L; - - public LanguageListConfigurationNotFound() { - super(); - } - - public LanguageListConfigurationNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - public LanguageListConfigurationNotFound(String message, Throwable cause) { - super(message, cause); - } - - public LanguageListConfigurationNotFound(String message) { - super(message); - } - - public LanguageListConfigurationNotFound(Throwable cause) { - super(cause); - } - -} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFoundException.java b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFoundException.java new file mode 100644 index 000000000..f5ca44086 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/exception/LanguageListConfigurationNotFoundException.java @@ -0,0 +1,27 @@ +package edu.asu.diging.vspace.core.exception; + +public class LanguageListConfigurationNotFoundException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public LanguageListConfigurationNotFoundException() { + super(); + } + + public LanguageListConfigurationNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public LanguageListConfigurationNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public LanguageListConfigurationNotFoundException(String message) { + super(message); + } + + public LanguageListConfigurationNotFoundException(Throwable cause) { + super(cause); + } + +} 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 ff8ce5c7a..11f1035d7 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.LanguageListConfigurationNotFound; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.impl.Exhibition; @@ -35,6 +35,6 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws LanguageListConfigurationNotFound; + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws LanguageListConfigurationNotFoundException; } 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 fb53de196..03b043d67 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,7 +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.exception.LanguageListConfigurationNotFound; +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; @@ -96,12 +96,12 @@ public IExhibition getStartExhibition() { * @param exhibition * @param defaultLanguage * @param languages - * @throws LanguageListConfigurationNotFound + * @throws LanguageListConfigurationNotFoundException */ @Override - public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) throws LanguageListConfigurationNotFound { + public void updateExhibitionLanguages(Exhibition exhibition, List codes, String defaultLanguage) { if(CollectionUtils.isEmpty(exhibitionLanguageConfig.getExhibitionLanguageList())) { - throw new LanguageListConfigurationNotFound("Exhibition Language Configuration not found"); + throw new LanguageListConfigurationNotFoundException("Exhibition Language Configuration not found"); } if(CollectionUtils.isEmpty(codes) ) { diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java index 5f728e569..92cf624fb 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; -import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.exception.ModuleNotFoundException; import edu.asu.diging.vspace.core.exception.SequenceNotFoundException; import edu.asu.diging.vspace.core.exception.SlideNotFoundException; @@ -93,15 +93,15 @@ protected ModelAndView handleSpaceNotFoundException(HttpServletRequest request, return modelAndView; } - @ExceptionHandler({ LanguageListConfigurationNotFound.class }) + @ExceptionHandler({ LanguageListConfigurationNotFoundException.class }) protected ModelAndView handleLanguageListConfigurationNotFoundException(HttpServletRequest request, - LanguageListConfigurationNotFound ex) { + LanguageListConfigurationNotFoundException ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("error_code", language_list_configuration_not_found); modelAndView.addObject("showAlert", true); modelAndView.addObject("message", ex.getMessage()); logger.info("LanguageListConfigurationNotFound Occured:: URL=" + request.getRequestURL()); - logger.info("Code:: "+language_list_configuration_not_found+" Message:: " + ex.getMessage()); + logger.info("Code:: "+language_list_configuration_not_found+" Cause:: " + ex); modelAndView.addObject("url", request.getRequestURL()); modelAndView.setViewName("module"); return modelAndView; 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 f646efeb3..d153cfcf4 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.LanguageListConfigurationNotFound; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; 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; @@ -82,7 +82,7 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return - * @throws LanguageListConfigurationNotFound + * @throws LanguageListConfigurationNotFoundException */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, @@ -92,7 +92,7 @@ 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, LanguageListConfigurationNotFound { + RedirectAttributes attributes) throws IOException, LanguageListConfigurationNotFoundException { ISpace startSpace = spaceManager.getSpace(spaceID); 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 ecc345003..68e232b79 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 @@ -21,7 +21,7 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; -import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFound; +import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; 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.ExhibitionLanguage; @@ -66,7 +66,7 @@ public void test_getExhibitionById_success() { @Test - public void test_updateExhibitionLanguages_success() throws LanguageListConfigurationNotFound{ + public void test_updateExhibitionLanguages_success() throws LanguageListConfigurationNotFoundException{ Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -91,7 +91,7 @@ public void test_updateExhibitionLanguages_success() throws LanguageListConfigur } @Test - public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfigurationNotFound{ + public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfigurationNotFoundException{ Exhibition exhibition = new Exhibition(); //Exhibition already consists of 2 languages @@ -127,7 +127,7 @@ public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfi } @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws LanguageListConfigurationNotFound{ + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws LanguageListConfigurationNotFoundException{ Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -152,7 +152,7 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws } @Test - public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageListConfigurationNotFound{ + public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageListConfigurationNotFoundException{ Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; From bcd81b6d4631a9ef3a370d8b473bc7a5c93879e9 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Fri, 17 Jun 2022 16:34:16 -0700 Subject: [PATCH 23/28] [story/VSPC-213] refactor --- .../edu/asu/diging/vspace/core/services/IExhibitionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 11f1035d7..543531720 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 @@ -35,6 +35,6 @@ public interface IExhibitionManager { IExhibition getStartExhibition(); - void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage) throws LanguageListConfigurationNotFoundException; + void updateExhibitionLanguages(Exhibition exhibition, List languages, String defaultLanguage); } From 72f033b9afb875a5c4e59ba763a5cd55e55bf00a Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 20 Jun 2022 10:54:33 -0700 Subject: [PATCH 24/28] [story/VSPC-213] review comments --- .../vspace/core/model/impl/Exhibition.java | 17 ++++++++--------- .../exception/ExhibitionExceptionHandler.java | 4 ++-- .../ExhibitionConfigurationController.java | 2 +- 3 files changed, 11 insertions(+), 12 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 e34bb3973..292abd527 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 @@ -139,8 +139,15 @@ public List getLanguages() { public void setLanguages(List languages) { this.languages = languages; } + + public String getPreviewId() { + return previewId; + } - + public void setPreviewId(String previewId) { + this.previewId = previewId; + } + @Override public int hashCode() { return Objects.hash(id); @@ -156,12 +163,4 @@ public boolean equals(Object obj) { return false; return Objects.equals(id, ((Exhibition) obj).id); } - - public String getPreviewId() { - return previewId; - } - - public void setPreviewId(String previewId) { - this.previewId = previewId; - } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java index 92cf624fb..58ac0caeb 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/exception/ExhibitionExceptionHandler.java @@ -100,8 +100,8 @@ protected ModelAndView handleLanguageListConfigurationNotFoundException(HttpServ modelAndView.addObject("error_code", language_list_configuration_not_found); modelAndView.addObject("showAlert", true); modelAndView.addObject("message", ex.getMessage()); - logger.info("LanguageListConfigurationNotFound Occured:: URL=" + request.getRequestURL()); - logger.info("Code:: "+language_list_configuration_not_found+" Cause:: " + ex); + logger.error("LanguageListConfigurationNotFound Occured:: URL=" + request.getRequestURL()); + logger.error("Code:: "+language_list_configuration_not_found+" Cause:: " + ex); modelAndView.addObject("url", request.getRequestURL()); modelAndView.setViewName("module"); return modelAndView; 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 d153cfcf4..8b8bb6846 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 @@ -92,7 +92,7 @@ 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, LanguageListConfigurationNotFoundException { + RedirectAttributes attributes) throws IOException { ISpace startSpace = spaceManager.getSpace(spaceID); From dcac0abd7692678a2758171c9746589b88f17736 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 21 Jun 2022 10:11:33 -0700 Subject: [PATCH 25/28] [story/VSPC-213] removed LanguageListConfigException declaration --- .../core/services/IExhibitionManager.java | 1 - .../ExhibitionConfigurationController.java | 1 - .../services/impl/ExhibitionManagerTest.java | 23 +++++++++++++++---- 3 files changed, 19 insertions(+), 6 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 543531720..e1df7f7c9 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,6 @@ import java.util.List; -import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; import edu.asu.diging.vspace.core.model.IExhibition; import edu.asu.diging.vspace.core.model.impl.Exhibition; 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 8b8bb6846..eb91cece3 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 @@ -82,7 +82,6 @@ public String showExhibitions(Model model) { * @param spaceParam * @param attributes * @return - * @throws LanguageListConfigurationNotFoundException */ @RequestMapping(value = "/staff/exhibit/config", method = RequestMethod.POST) public RedirectView createOrUpdateExhibition(HttpServletRequest request, 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 68e232b79..8ccc7f230 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 @@ -13,11 +13,13 @@ import java.util.Map; import java.util.Optional; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.security.authentication.BadCredentialsException; import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.ExhibitionRepository; @@ -66,7 +68,7 @@ public void test_getExhibitionById_success() { @Test - public void test_updateExhibitionLanguages_success() throws LanguageListConfigurationNotFoundException{ + public void test_updateExhibitionLanguages_success() { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -91,7 +93,7 @@ public void test_updateExhibitionLanguages_success() throws LanguageListConfigur } @Test - public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfigurationNotFoundException{ + public void test_updateExhibitionLanguages_duplicates() { Exhibition exhibition = new Exhibition(); //Exhibition already consists of 2 languages @@ -127,7 +129,7 @@ public void test_updateExhibitionLanguages_duplicates() throws LanguageListConfi } @Test - public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws LanguageListConfigurationNotFoundException{ + public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -152,7 +154,7 @@ public void test_updateExhibitionLanguages_whenCodeIsNotPresentInConfig() throws } @Test - public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageListConfigurationNotFoundException{ + public void test_updateExhibitionLanguages_defaultLanguage() { Exhibition exhibition = new Exhibition(); List languages= new ArrayList() ; @@ -191,5 +193,18 @@ public void test_updateExhibitionLanguages_defaultLanguage() throws LanguageList } + + @Test + public void test_updateExhibitionLanguages_whenLanguageListConfigurationNotFound() { + Exhibition exhibition = new Exhibition(); + + List languages= new ArrayList() ; + languages.add("en"); + + when(exhibitionLanguageConfig.getExhibitionLanguageList()).thenReturn(new ArrayList()); + Assert.assertThrows(LanguageListConfigurationNotFoundException.class, + () -> serviceToTest.updateExhibitionLanguages(exhibition, languages,null)); + + } } From 33712c2fe6b6b031aeeb98e5d92c99baf2061823 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Tue, 21 Jun 2022 10:18:21 -0700 Subject: [PATCH 26/28] [story/VSPC-213] refactor --- .../vspace/web/staff/ExhibitionConfigurationController.java | 1 - 1 file changed, 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 eb91cece3..d63b98eb1 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,6 @@ import edu.asu.diging.vspace.config.ExhibitionLanguageConfig; import edu.asu.diging.vspace.core.data.SpaceRepository; -import edu.asu.diging.vspace.core.exception.LanguageListConfigurationNotFoundException; 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; From 550a4eea5ee4ac023443bc66e668919aed72c1c9 Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 27 Jun 2022 12:36:16 -0700 Subject: [PATCH 27/28] [story/VSPC-213] remove exhibitionlanguage if unselected --- .../edu/asu/diging/vspace/core/model/impl/Exhibition.java | 2 +- .../diging/vspace/core/services/impl/ExhibitionManager.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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 292abd527..9616e4e49 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 @@ -49,7 +49,7 @@ public class Exhibition extends VSpaceElement implements IExhibition { private boolean aboutPageConfigured; - @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL) + @OneToMany(targetEntity = ExhibitionLanguage.class, mappedBy = "exhibition", cascade = CascadeType.ALL, orphanRemoval=true) private List languages = new ArrayList(); private String previewId; 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 03b043d67..dea2f0f34 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 @@ -120,6 +120,10 @@ public void updateExhibitionLanguages(Exhibition exhibition, List codes, exhibitionLanguage.setDefault(exhibitionLanguage.getCode().equalsIgnoreCase(defaultLanguage)); }); + + exhibition.getLanguages().removeAll(exhibition.getLanguages().stream() + .filter(language -> !codes.contains(language.getCode())).collect(Collectors.toList())); + } /** From 4cea3c241e49226b75dbd0d1f4c385b8e126050a Mon Sep 17 00:00:00 2001 From: Prachi Kharge Date: Mon, 27 Jun 2022 12:46:01 -0700 Subject: [PATCH 28/28] [story/VSPC-213] added test case --- .../core/services/impl/ExhibitionManager.java | 2 +- .../services/impl/ExhibitionManagerTest.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 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 dea2f0f34..f4284c2b4 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 @@ -120,7 +120,7 @@ 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())); 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 8ccc7f230..92a97d444 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 @@ -207,4 +207,36 @@ public void test_updateExhibitionLanguages_whenLanguageListConfigurationNotFound () -> serviceToTest.updateExhibitionLanguages(exhibition, languages,null)); } + + @Test + public void test_updateExhibitionLanguages_whenLanguageIsUnselected() { + 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); + + + } }