From 5e89e6f4ff0a5df087e40ed76b450f7daf7fb826 Mon Sep 17 00:00:00 2001 From: hjkhjk54 Date: Thu, 1 Dec 2011 19:44:45 +0000 Subject: [PATCH] updates for switching to menu edit mode and sorting options list --- .../VTwo/SelectListGeneratorVTwo.java | 46 +++++++++++++++++++ ...aultAddMissingIndividualFormGenerator.java | 2 +- .../EditRequestDispatchController.java | 20 +++++++- .../edit/EditConfigurationTemplateModel.java | 5 ++ 4 files changed, 71 insertions(+), 2 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/SelectListGeneratorVTwo.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/SelectListGeneratorVTwo.java index 8ac0385ee..dd4a321ef 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/SelectListGeneratorVTwo.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/SelectListGeneratorVTwo.java @@ -2,8 +2,10 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo; +import java.text.Collator; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -453,6 +455,50 @@ public class SelectListGeneratorVTwo { log.debug("removed "+removeCount+" duplicate range individuals"); return individuals; } + + //Methods to sort the options map + // from http://forum.java.sun.com/thread.jspa?threadID=639077&messageID=4250708 + public static Map getSortedMap(Map hmap){ + // first make temporary list of String arrays holding both the key and its corresponding value, so that the list can be sorted with a decent comparator + List objectsToSort = new ArrayList(hmap.size()); + for (String key:hmap.keySet()) { + String[] x = new String[2]; + x[0] = key; + x[1] = hmap.get(key); + objectsToSort.add(x); + } + Collections.sort(objectsToSort, new MapPairsComparator()); + + HashMap map = new LinkedHashMap(objectsToSort.size()); + for (String[] pair:objectsToSort) { + map.put(pair[0],pair[1]); + } + return map; + } + + private static class MapPairsComparator implements Comparator { + public int compare (String[] s1, String[] s2) { + Collator collator = Collator.getInstance(); + if (s2 == null) { + return 1; + } else if (s1 == null) { + return -1; + } else { + if ("".equals(s1[0])) { + return -1; + } else if ("".equals(s2[0])) { + return 1; + } + if (s2[1]==null) { + return 1; + } else if (s1[1] == null){ + return -1; + } else { + return collator.compare(s1[1],s2[1]); + } + } + } + } private static final String LEFT_BLANK = ""; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java index f113c1782..2e3409cbe 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java @@ -306,7 +306,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati private HashMap generateSparqlForExistingLiterals() { HashMap map = new HashMap(); - String query = StringUtils.join(getN3Prefixes(), ""); + String query = "PREFIX rdfs: "; query += "SELECT ?existingName WHERE { ?" + objectVarName + " rdfs:label ?existingName }"; map.put("name", query); return map; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java index 98a44efe9..d47ea41f0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java @@ -58,7 +58,12 @@ public class EditRequestDispatchController extends FreemarkerHttpServlet { try{ WebappDaoFactory wdf = vreq.getWebappDaoFactory(); - //check some error conditions and if they exist return response values + + if(isMenuMode(vreq)) { + return redirectToMenuEdit(vreq); + } + + //check some error conditions and if they exist return response values //with error message if(isErrorCondition(vreq)){ return doHelp(vreq, getErrorMessage(vreq)); @@ -114,6 +119,19 @@ public class EditRequestDispatchController extends FreemarkerHttpServlet { } } + + + private boolean isMenuMode(VitroRequest vreq) { + //Check if special model, in which case forward + return(vreq.getParameter("switchToDisplayModel") != null); + } + + private ResponseValues redirectToMenuEdit(VitroRequest vreq) { + String queryString = vreq.getQueryString(); + String redirectPage = vreq.getContextPath() + "/editDisplayModel?" + queryString; + return new RedirectResponseValues(redirectPage, HttpServletResponse.SC_SEE_OTHER); + + } private MultiValueEditSubmission getMultiValueSubmission(VitroRequest vreq, EditConfigurationVTwo editConfig) { return EditSubmissionUtils.getEditSubmissionFromSession(vreq.getSession(), editConfig); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java index 3fba72035..687ae9315 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java @@ -109,6 +109,11 @@ public class EditConfigurationTemplateModel extends BaseTemplateModel { || field.getOptionsType() == null ){ continue; } + Map optionsMap = SelectListGeneratorVTwo.getOptions(editConfig, fieldName, wdf); + //Sort options map if not hardcoded literals + if(field.getOptionsType()!=FieldVTwo.OptionsType.HARDCODED_LITERALS) { + optionsMap = SelectListGeneratorVTwo.getSortedMap(optionsMap); + } pageData.put(fieldName, SelectListGeneratorVTwo.getOptions(editConfig, fieldName, wdf)); }