Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r6a414b5f0f7756f0376670914c59c84b9ae916ef -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -264,8 +264,7 @@ msg.done =...done! msg.tool.management =Tool Management sysadmin.tool.management =Tool Management -msg.ldap.synchronise.wait =Please wait while synchronisation -Please wait while syncronisation completes... +msg.ldap.synchronise.wait =Please wait while synchronisation completes... msg.ldap.synchronise.errors =The following errors were encountered: msg.num.search.results.users =LDAP server returned {0} users. config.ldap.author.map =Author Role Map Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r6a414b5f0f7756f0376670914c59c84b9ae916ef -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -264,8 +264,7 @@ msg.done =...done! msg.tool.management =Tool Management sysadmin.tool.management =Tool Management -msg.ldap.synchronise.wait =Please wait while synchronisation -Please wait while syncronisation completes... +msg.ldap.synchronise.wait =Please wait while synchronisation completes... msg.ldap.synchronise.errors =The following errors were encountered: msg.num.search.results.users =LDAP server returned {0} users. config.ldap.author.map =Author Role Map Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java =================================================================== diff -u -r4abf8ee86bc60a0b94edfdc4c907c28c6c5df13e -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision 4abf8ee86bc60a0b94edfdc4c907c28c6c5df13e) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -30,6 +30,7 @@ import org.lamsfoundation.lams.themes.service.IThemeService; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.usermanagement.service.LdapService; +import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.audit.IAuditService; import org.springframework.web.context.WebApplicationContext; @@ -50,8 +51,8 @@ private static LdapService ldapService; private static IStatisticsService statisticsService; private static IThemeService themeService; + private static Configuration configurationService; - public static final IUserManagementService getService(ServletContext servletContext) { if (manageService == null) { manageService = (IUserManagementService)getDomainService(servletContext, "userManagementService"); @@ -109,6 +110,13 @@ return themeService; } + public static final Configuration getConfiguration(ServletContext servletContext) { + if (configurationService == null) { + configurationService = (Configuration)getDomainService(servletContext, "configurationService"); + } + return configurationService; + } + private static Object getDomainService(ServletContext servletContext,String serviceName) { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); return wac.getBean(serviceName); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ConfigAction.java =================================================================== diff -u -rad026ddd7fc5c6b95cc3ab9c248ccdff4a493c91 -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ConfigAction.java (.../ConfigAction.java) (revision ad026ddd7fc5c6b95cc3ab9c248ccdff4a493c91) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ConfigAction.java (.../ConfigAction.java) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -22,13 +22,10 @@ */ package org.lamsfoundation.lams.admin.web; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; @@ -38,8 +35,6 @@ import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.web.action.LamsDispatchAction; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; /** * ConfigAction @@ -49,8 +44,9 @@ /** * struts doclets * - * @struts.action path="/config" parameter="method" name="ConfigForm" input=".config" scope="request" validate="false" - * @struts.action-forward name="config" path=".config" + * @struts.action path="/config" parameter="method" name="ConfigForm" input=".editconfig" scope="request" validate="false" + * @struts.action-forward name="config" path=".editconfig" + * @struts.action-forward name="ldap" path=".ldap" * @struts.action-forward name="sysadmin" path="/sysadminstart.do" */ public class ConfigAction extends LamsDispatchAction { @@ -60,10 +56,7 @@ private Configuration getConfiguration() { if (configurationService == null) { - WebApplicationContext ctx = WebApplicationContextUtils - .getRequiredWebApplicationContext(getServlet().getServletContext()); - configurationService = (Configuration) ctx.getBean("configurationService"); - + configurationService = AdminServiceProxy.getConfiguration(getServlet().getServletContext()); } return configurationService; } @@ -80,7 +73,7 @@ HttpServletRequest request, HttpServletResponse response) throws Exception{ - request.setAttribute("config", arrangeItems()); + request.setAttribute("config", getConfiguration().arrangeItems(Configuration.ITEMS_NON_LDAP)); return mapping.findForward("config"); } @@ -98,14 +91,22 @@ String[] keys = (String[])configForm.get("key"); String[] values = (String[])configForm.get("value"); + String errorForward = "config"; + for(int i=0; i0)) { request.setAttribute("error", getRequiredError(item.getDescriptionKey())); - request.setAttribute("config", arrangeItems()); - return mapping.findForward("config"); + request.setAttribute("config", getConfiguration().arrangeItems(Configuration.ITEMS_NON_LDAP)); + return mapping.findForward(errorForward); } } String format = item.getFormat(); @@ -114,8 +115,8 @@ Long.parseLong(values[i]); } catch (NumberFormatException e) { request.setAttribute("error", getNumericError(item.getDescriptionKey())); - request.setAttribute("config", arrangeItems()); - return mapping.findForward("config"); + request.setAttribute("config", getConfiguration().arrangeItems(Configuration.ITEMS_NON_LDAP)); + return mapping.findForward(errorForward); } } Configuration.updateItem(keys[i], values[i]); @@ -138,21 +139,4 @@ return getMessageService().getMessage("error.numeric", args); } - // get contents of lams_configuration and group them using header names as key - private HashMap> arrangeItems() { - List originalList = getConfiguration().getAllItems(); - HashMap> groupedList = new HashMap>(); - - for (int i=0; i()); - } - ArrayList currentList = groupedList.get(header); - currentList.add(item); - groupedList.put(header, currentList); - } - return groupedList; - } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LdapConfigAction.java =================================================================== diff -u -r053b3694d8631a983eb8e95e3f0374a22540b43a -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LdapConfigAction.java (.../LdapConfigAction.java) (revision 053b3694d8631a983eb8e95e3f0374a22540b43a) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LdapConfigAction.java (.../LdapConfigAction.java) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -23,6 +23,8 @@ /* $Id$ */ package org.lamsfoundation.lams.admin.web.action; +import java.util.ArrayList; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -39,6 +41,7 @@ import org.lamsfoundation.lams.usermanagement.service.ILdapService; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.usermanagement.service.LdapService; +import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; @@ -59,6 +62,7 @@ private static IUserManagementService service; private static LdapService ldapService; private static MessageService messageService; + private static Configuration configurationService; private IUserManagementService getService() { if (service == null) { @@ -81,6 +85,13 @@ return messageService; } + private Configuration getConfiguration() { + if (configurationService == null) { + configurationService = AdminServiceProxy.getConfiguration(getServlet().getServletContext()); + } + return configurationService; + } + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -93,6 +104,8 @@ if (StringUtils.equals(action, "results")) return results(mapping, form, request, response); } + request.setAttribute("config", getConfiguration().arrangeItems(Configuration.ITEMS_ONLY_LDAP)); + int numLdapUsers = getNumLdapUsers(); request.setAttribute("numLdapUsersMsg", getNumLdapUsersMsg(numLdapUsers)); @@ -129,18 +142,26 @@ HttpServletResponse response) throws Exception { HttpSession ss = SessionManager.getSession(); - BulkUpdateResultDTO dto = (BulkUpdateResultDTO)ss.getAttribute(ILdapService.SYNC_RESULTS); + Object o = ss.getAttribute(ILdapService.SYNC_RESULTS); + if (o instanceof BulkUpdateResultDTO) { + BulkUpdateResultDTO dto = (BulkUpdateResultDTO)o; + + int numLdapUsers = getNumLdapUsers(); + request.setAttribute("numLdapUsersMsg", getNumLdapUsersMsg(numLdapUsers)); + + request.setAttribute("numSearchResults", getNumSearchResultsUsersMsg(dto.getNumSearchResults())); + request.setAttribute("numLdapUsersCreated", getNumCreatedUsersMsg(dto.getNumUsersCreated())); + request.setAttribute("numLdapUsersUpdated", getNumUpdatedUsersMsg(dto.getNumUsersUpdated())); + request.setAttribute("numLdapUsersDisabled", getNumDisabledUsersMsg(dto.getNumUsersDisabled())); + request.setAttribute("messages", dto.getMessages()); + request.setAttribute("done", getMessageService().getMessage("msg.done")); + } else { + ArrayList list = new ArrayList(); + list.add((String)o); + request.setAttribute("messages", list); + request.setAttribute("done", getMessageService().getMessage("msg.done")); + } - int numLdapUsers = getNumLdapUsers(); - request.setAttribute("numLdapUsersMsg", getNumLdapUsersMsg(numLdapUsers)); - - request.setAttribute("numSearchResults", getNumSearchResultsUsersMsg(dto.getNumSearchResults())); - request.setAttribute("numLdapUsersCreated", getNumCreatedUsersMsg(dto.getNumUsersCreated())); - request.setAttribute("numLdapUsersUpdated", getNumUpdatedUsersMsg(dto.getNumUsersUpdated())); - request.setAttribute("numLdapUsersDisabled", getNumDisabledUsersMsg(dto.getNumUsersDisabled())); - request.setAttribute("messages", dto.getMessages()); - request.setAttribute("done", getMessageService().getMessage("msg.done")); - // remove session variable that flags bulk update as done ss.removeAttribute(ILdapService.SYNC_RESULTS); @@ -185,18 +206,26 @@ private class LdapSyncThread implements Runnable { private String sessionId; + private Logger log = Logger.getLogger(LdapSyncThread.class); + public LdapSyncThread(String sessionId) { this.sessionId = sessionId; } public void run() { - log.info("=== Beginning LDAP user sync ==="); + this.log.info("=== Beginning LDAP user sync ==="); long start = System.currentTimeMillis(); - BulkUpdateResultDTO dto = getLdapService().bulkUpdate(); - long end = System.currentTimeMillis(); - log.info("=== Finished LDAP user sync ==="); - log.info("Bulk update took " + (end-start)/1000 + " seconds."); - SessionManager.getSession(sessionId).setAttribute(ILdapService.SYNC_RESULTS, dto); + try { + BulkUpdateResultDTO dto = getLdapService().bulkUpdate(); + long end = System.currentTimeMillis(); + this.log.info("=== Finished LDAP user sync ==="); + this.log.info("Bulk update took " + (end-start)/1000 + " seconds."); + SessionManager.getSession(sessionId).setAttribute(ILdapService.SYNC_RESULTS, dto); + } catch (Exception e) { + String message = e.getMessage() != null ? e.getMessage() : e.getClass().getName(); + SessionManager.getSession(sessionId).setAttribute(ILdapService.SYNC_RESULTS, message); + e.printStackTrace(); + } } } } Index: lams_admin/web/WEB-INF/tiles/tiles-defs.xml =================================================================== diff -u -r4abf8ee86bc60a0b94edfdc4c907c28c6c5df13e -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision 4abf8ee86bc60a0b94edfdc4c907c28c6c5df13e) +++ lams_admin/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -3,9 +3,13 @@ - + + + + + @@ -140,9 +144,9 @@ - + - + @@ -160,5 +164,8 @@ + + + \ No newline at end of file Index: lams_admin/web/config/editconfig.jsp =================================================================== diff -u -r7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/web/config/editconfig.jsp (.../editconfig.jsp) (revision 7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a) +++ lams_admin/web/config/editconfig.jsp (.../editconfig.jsp) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -15,34 +15,7 @@ - -

- - - - - - - -
- -   * - - - <%= ConfigurationItem.BOOLEAN_FORMAT %> - - - - true - false   - - - - - - -
-
+

Index: lams_admin/web/config/items.jsp =================================================================== diff -u --- lams_admin/web/config/items.jsp (revision 0) +++ lams_admin/web/config/items.jsp (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -0,0 +1,31 @@ +<%@ page import="org.lamsfoundation.lams.config.ConfigurationItem" %> +<%@ include file="/taglibs.jsp"%> + + +

+ + + + + + + +
+ +   * + + + <%= ConfigurationItem.BOOLEAN_FORMAT %> + + + + true + false   + + + + + + +
+ \ No newline at end of file Index: lams_admin/web/ldap.jsp =================================================================== diff -u -r7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_admin/web/ldap.jsp (.../ldap.jsp) (revision 7ab9e2377fd1ff4c3c5554bd1f6dffe3384f6f9a) +++ lams_admin/web/ldap.jsp (.../ldap.jsp) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -15,6 +15,18 @@

+ + + + +

+ + + +

+
+
+

@@ -61,10 +73,18 @@ +

  • + +
  • +
    +
  • +
    +
  • +
    Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java =================================================================== diff -u -re855c31deab8631c4e5ee268d3f4281ced439ad5 -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision e855c31deab8631c4e5ee268d3f4281ced439ad5) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -480,7 +480,7 @@ // if supported ctx.setRequestControls(new Control[] { new PagedResultsControl(pageSize, Control.NONCRITICAL) }); } catch (Exception e) { - messages.add("Error creating control."); + messages.add("Error creating control: " + e.getMessage()); log.error(e, e); } @@ -547,6 +547,9 @@ } catch (IOException e) { messages.add("Error setting response cookie to continue paged ldap search results: " + e.getMessage()); log.error(e, e); + } catch (Exception e) { + messages.add("Unknown error: " + e.getMessage()); + log.error(e, e); } totalResults += contextResults; Index: lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java =================================================================== diff -u -r9d84474e30e1301deb7d3f2e6fcf6bcad6aa1e8b -r7b9b1931a178ac9bac070531b53731383df0a187 --- lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java (.../Configuration.java) (revision 9d84474e30e1301deb7d3f2e6fcf6bcad6aa1e8b) +++ lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java (.../Configuration.java) (revision 7b9b1931a178ac9bac070531b53731383df0a187) @@ -23,7 +23,9 @@ /* $$Id$$ */ package org.lamsfoundation.lams.util; +import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -59,6 +61,12 @@ protected static RegistrationDAO registrationDAO; protected MessageService messageService; + + public static final int ITEMS_ALL = 1; + + public static final int ITEMS_NON_LDAP = 2; + + public static final int ITEMS_ONLY_LDAP = 3; /** * @param configurationDAO @@ -194,6 +202,60 @@ } } + /** + * Get contents of lams_configuration and group them using header names as key. + * @param filter ITEMS_ALL: include all items; ITEMS_NON_LDAP: include non-ldap items only; + * ITEMS_ONLY_LDAP: include ldap-only items. + * @return + */ + public HashMap> arrangeItems(int filter) { + List originalList = getAllItems(); + HashMap> groupedList = new HashMap>(); + + for (int i = 0; i < originalList.size(); i++) { + ConfigurationItem item = (ConfigurationItem) originalList.get(i); + String header = item.getHeaderName(); + + switch (filter) { + case ITEMS_ALL: + // all items included + break; + case ITEMS_NON_LDAP: + // non-ldap items only + if (StringUtils.contains(header, "config.header.ldap")) { + continue; + } + break; + case ITEMS_ONLY_LDAP: + // ldap-only items + if (!StringUtils.contains(header, "config.header.ldap")) { + continue; + } + break; + default: + break; + } + + if (!groupedList.containsKey(header)) { + groupedList.put(header, new ArrayList()); + } + ArrayList currentList = groupedList.get(header); + currentList.add(item); + groupedList.put(header, currentList); + } + + return groupedList; + } + + /** + * Get contents of lams_configuration and group them using header names as key. Includes ldap + * items. + * @return + */ + public HashMap> arrangeItems() { + return arrangeItems(ITEMS_ALL); + } + public static void saveOrUpdateRegistration(Registration reg){ registrationDAO.saveOrUpdate(reg); }