Index: lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java =================================================================== diff -u -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 -r951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc --- lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java (.../Register.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java (.../Register.java) (revision 951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc) @@ -16,4 +16,32 @@ String serverId, String datetime, String hash) throws java.rmi.RemoteException; + + public boolean addUserToGroup( + String username, + String serverId, + String datetime, + String hash, + Boolean isTeacher) throws java.rmi.RemoteException; + + public boolean addUserToGroupLessons( + String username, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException; + + public boolean addUserToSubgroup( + String username, + String orgid, + String serverId, + String datetime, + String hash, + Boolean isTeacher) throws java.rmi.RemoteException; + + public boolean addUserToSubgroupLessons( + String username, + String orgId, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException; } Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java =================================================================== diff -u -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 -r951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java (.../RegisterServiceSoapBindingImpl.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java (.../RegisterServiceSoapBindingImpl.java) (revision 951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc) @@ -10,6 +10,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServlet; @@ -55,8 +56,15 @@ ((HttpServlet) context.getProperty(HTTPConstants.MC_HTTP_SERVLET)) .getServletContext()).getBean("integrationService"); - public boolean createUser(String username, String password, String firstName, String lastName, - String email, String serverId, String datetime, String hash) throws java.rmi.RemoteException { + public boolean createUser( + String username, + String password, + String firstName, + String lastName, + String email, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException { try { ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); Authenticator.authenticate(extServer, datetime, hash); @@ -86,29 +94,125 @@ user.setHtmlTheme(htmlTheme); } service.save(user); + return true; + } catch (Exception e) { + log.debug(e.getMessage(), e); + throw new java.rmi.RemoteException(e.getMessage()); + } + } + + public boolean addUserToGroup( + String username, + String serverId, + String datetime, + String hash, + Boolean isTeacher) throws java.rmi.RemoteException { + try { + ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(extServer, datetime, hash); + User user = service.getUserByLogin(username); Organisation org = extServer.getOrganisation(); - addMemberships(user, org); + addMemberships(user, org, isTeacher); + return true; + } catch (Exception e) { + log.debug(e.getMessage(), e); + throw new java.rmi.RemoteException(e.getMessage()); + } + } + + public boolean addUserToSubgroup( + String username, + String orgId, + String serverId, + String datetime, + String hash, + Boolean isTeacher) throws java.rmi.RemoteException { + try { + ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(extServer, datetime, hash); + User user = service.getUserByLogin(username); + Organisation group = extServer.getOrganisation(); + Organisation subgroup = (Organisation)service.findById(Organisation.class, new Integer(orgId)); + Set children = group.getChildOrganisations(); + Iterator iter = children.iterator(); + while (iter.hasNext()) { + Organisation child = (Organisation)iter.next(); + if (child.getOrganisationId().equals(subgroup.getOrganisationId())) { + addMemberships(user, subgroup, isTeacher); + return true; + } + } + return false; + } catch (Exception e) { + log.debug(e.getMessage(), e); + throw new java.rmi.RemoteException(e.getMessage()); + } + } + + public boolean addUserToGroupLessons( + String username, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException { + try { + ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(extServer, datetime, hash); + User user = service.getUserByLogin(username); + Organisation org = extServer.getOrganisation(); addUserToLessons(user, org); return true; } catch (Exception e) { log.debug(e.getMessage(), e); throw new java.rmi.RemoteException(e.getMessage()); } } - + + public boolean addUserToSubgroupLessons( + String username, + String orgId, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException { + try { + ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(extServer, datetime, hash); + User user = service.getUserByLogin(username); + Organisation group = extServer.getOrganisation(); + + Organisation subgroup = (Organisation)service.findById(Organisation.class, new Integer(orgId)); + Set children = group.getChildOrganisations(); + Iterator iter = children.iterator(); + while (iter.hasNext()) { + Organisation child = (Organisation)iter.next(); + if (child.getOrganisationId().equals(subgroup.getOrganisationId())) { + addUserToLessons(user, subgroup); + return true; + } + } + return false; + } catch (Exception e) { + log.debug(e.getMessage(), e); + throw new java.rmi.RemoteException(e.getMessage()); + } + } + private SupportedLocale getLocale() { String defaultLocale = Configuration.get(ConfigurationKeys.SERVER_LANGUAGE); return service .getSupportedLocale(defaultLocale.substring(0, 2), defaultLocale.substring(3)); } @SuppressWarnings("unchecked") - private void addMemberships(User user, Organisation org) { + private void addMemberships(User user, Organisation org, Boolean isTeacher) { log.debug("adding memberships for user " + user.getUserId() + " in " + org.getName()); UserOrganisation uo = new UserOrganisation(user, org); service.save(uo); - Integer[] roles = new Integer[] { Role.ROLE_AUTHOR, Role.ROLE_MONITOR, - Role.ROLE_GROUP_MANAGER, Role.ROLE_LEARNER }; + Integer[] roles; + if (isTeacher) { + roles = new Integer[] { Role.ROLE_AUTHOR, Role.ROLE_MONITOR, Role.ROLE_LEARNER }; + } else { + roles = new Integer[] { Role.ROLE_LEARNER }; + } for (Integer roleId : roles) { UserOrganisationRole uor = new UserOrganisationRole(uo, (Role) service.findById( Role.class, roleId)); Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java =================================================================== diff -u -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 -r951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java (.../RegisterServiceSoapBindingSkeleton.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java (.../RegisterServiceSoapBindingSkeleton.java) (revision 951a33cdabfc3a4c4c2f728d4b6871a98bea2bbc) @@ -7,6 +7,7 @@ package org.lamsfoundation.lams.webservice; + public class RegisterServiceSoapBindingSkeleton implements org.lamsfoundation.lams.webservice.Register, org.apache.axis.wsdl.Skeleton { private org.lamsfoundation.lams.webservice.Register impl; private static java.util.Map _myOperations = new java.util.Hashtable(); @@ -27,7 +28,15 @@ } static { - org.apache.axis.description.OperationDesc _oper; + addCreateUser(); + addAddUserToGroup(); + addAddUserToGroupLessons(); + addAddUserToSubgroup(); + addAddUserToSubgroupLessons(); + } + + private static void addCreateUser() { + org.apache.axis.description.OperationDesc _oper; org.apache.axis.description.FaultDesc _fault; org.apache.axis.description.ParameterDesc [] _params; _params = new org.apache.axis.description.ParameterDesc [] { @@ -50,6 +59,94 @@ } ((java.util.List)_myOperations.get("createUser")).add(_oper); } + + private static void addAddUserToGroup() { + org.apache.axis.description.OperationDesc _oper; + org.apache.axis.description.FaultDesc _fault; + org.apache.axis.description.ParameterDesc [] _params; + _params = new org.apache.axis.description.ParameterDesc [] { + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "username"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "serverId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "datetime"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "hash"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "isTeacher"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "boolean"), java.lang.Boolean.class, false, false), + }; + _oper = new org.apache.axis.description.OperationDesc("addUserToGroup", _params, new javax.xml.namespace.QName("", "addUserToGroupReturn")); + _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); + _oper.setElementQName(new javax.xml.namespace.QName("", "addUserToGroup")); + _oper.setSoapAction(""); + _myOperationsList.add(_oper); + if (_myOperations.get("addUserToGroup") == null) { + _myOperations.put("addUserToGroup", new java.util.ArrayList()); + } + ((java.util.List)_myOperations.get("addUserToGroup")).add(_oper); + } + + private static void addAddUserToGroupLessons() { + org.apache.axis.description.OperationDesc _oper; + org.apache.axis.description.FaultDesc _fault; + org.apache.axis.description.ParameterDesc [] _params; + _params = new org.apache.axis.description.ParameterDesc [] { + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "username"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "serverId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "datetime"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "hash"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + }; + _oper = new org.apache.axis.description.OperationDesc("addUserToGroupLessons", _params, new javax.xml.namespace.QName("", "addUserToGroupLessonsReturn")); + _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); + _oper.setElementQName(new javax.xml.namespace.QName("", "addUserToGroupLessons")); + _oper.setSoapAction(""); + _myOperationsList.add(_oper); + if (_myOperations.get("addUserToGroupLessons") == null) { + _myOperations.put("addUserToGroupLessons", new java.util.ArrayList()); + } + ((java.util.List)_myOperations.get("addUserToGroupLessons")).add(_oper); + } + + private static void addAddUserToSubgroup() { + org.apache.axis.description.OperationDesc _oper; + org.apache.axis.description.FaultDesc _fault; + org.apache.axis.description.ParameterDesc [] _params; + _params = new org.apache.axis.description.ParameterDesc [] { + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "username"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "orgId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "serverId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "datetime"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "hash"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "isTeacher"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "boolean"), java.lang.Boolean.class, false, false), + }; + _oper = new org.apache.axis.description.OperationDesc("addUserToSubgroup", _params, new javax.xml.namespace.QName("", "addUserToSubgroupReturn")); + _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); + _oper.setElementQName(new javax.xml.namespace.QName("", "addUserToSubgroup")); + _oper.setSoapAction(""); + _myOperationsList.add(_oper); + if (_myOperations.get("addUserToSubgroup") == null) { + _myOperations.put("addUserToSubgroup", new java.util.ArrayList()); + } + ((java.util.List)_myOperations.get("addUserToSubgroup")).add(_oper); + } + + private static void addAddUserToSubgroupLessons() { + org.apache.axis.description.OperationDesc _oper; + org.apache.axis.description.FaultDesc _fault; + org.apache.axis.description.ParameterDesc [] _params; + _params = new org.apache.axis.description.ParameterDesc [] { + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "username"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "orgId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "serverId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "datetime"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "hash"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + }; + _oper = new org.apache.axis.description.OperationDesc("addUserToSubgroupLessons", _params, new javax.xml.namespace.QName("", "addUserToSubgroupLessonsReturn")); + _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); + _oper.setElementQName(new javax.xml.namespace.QName("", "addUserToSubgroupLessons")); + _oper.setSoapAction(""); + _myOperationsList.add(_oper); + if (_myOperations.get("addUserToSubgroupLessons") == null) { + _myOperations.put("addUserToSubgroupLessons", new java.util.ArrayList()); + } + ((java.util.List)_myOperations.get("addUserToSubgroupLessons")).add(_oper); + } public RegisterServiceSoapBindingSkeleton() { this.impl = new org.lamsfoundation.lams.webservice.RegisterServiceSoapBindingImpl(); @@ -58,10 +155,30 @@ public RegisterServiceSoapBindingSkeleton(org.lamsfoundation.lams.webservice.Register impl) { this.impl = impl; } + public boolean createUser(String username, String password, String firstName, String lastName, String email, String serverId, String datetime, String hash) throws java.rmi.RemoteException { boolean ret = impl.createUser(username, password, firstName, lastName, email, serverId, datetime, hash); return ret; } + + public boolean addUserToGroup(String username, String serverId, String datetime, String hash, Boolean isTeacher) throws java.rmi.RemoteException { + boolean ret = impl.addUserToGroup(username, serverId, datetime, hash, isTeacher); + return ret; + } + + public boolean addUserToGroupLessons(String username, String serverId, String datetime, String hash) throws java.rmi.RemoteException { + boolean ret = impl.addUserToGroupLessons(username, serverId, datetime, hash); + return ret; + } + public boolean addUserToSubgroup(String username, String orgId, String serverId, String datetime, String hash, Boolean isTeacher) throws java.rmi.RemoteException { + boolean ret = impl.addUserToSubgroup(username, orgId, serverId, datetime, hash, isTeacher); + return ret; + } + + public boolean addUserToSubgroupLessons(String username, String orgId, String serverId, String datetime, String hash) throws java.rmi.RemoteException { + boolean ret = impl.addUserToSubgroupLessons(username, orgId, serverId, datetime, hash); + return ret; + } }