Index: lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java,v diff -u -r1.5 -r1.6 --- lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java 6 Feb 2009 05:45:52 -0000 1.5 +++ lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java 8 Feb 2009 20:17:11 -0000 1.6 @@ -17,7 +17,7 @@ String datetime, String hash) throws java.rmi.RemoteException; - public int createGroup( + public int createOrganisation( String name, String code, String description, @@ -26,6 +26,14 @@ String datetime, String hash) throws java.rmi.RemoteException; + public boolean addUserToOrganisation( + String login, + Integer organisationId, + Boolean asStaff, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException; + public boolean addUserToGroup( String username, String serverId, Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java,v diff -u -r1.13 -r1.14 --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java 6 Feb 2009 05:45:52 -0000 1.13 +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java 8 Feb 2009 20:17:11 -0000 1.14 @@ -24,8 +24,11 @@ import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationState; import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.LanguageUtil; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -74,7 +77,7 @@ } } - public int createGroup( + public int createOrganisation( String name, String code, String description, @@ -99,6 +102,62 @@ } } + public boolean addUserToOrganisation( + String login, + Integer organisationId, + Boolean asStaff, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException { + try { + // authenticate external server + ExtServerOrgMap serverMap = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(serverMap, datetime, hash); + + // get user and organisation + User user = service.getUserByLogin(login); + Organisation org = (Organisation)service.findById(Organisation.class, organisationId); + + if (user == null || org == null) { + return false; + } + + // check user is not already in org + UserOrganisation uo = service.getUserOrganisation(user.getUserId(), org.getOrganisationId()); + + if (uo == null) { + // create UserOrganisation + + uo = new UserOrganisation(user,org); + service.save(uo); + Integer[] roles; + if (asStaff) { + 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)); + service.save(uor); + uo.addUserOrganisationRole(uor); + } + user.addUserOrganisation(uo); + service.save(user); + + return true; + + } else { + // do nothing + return false; + } + + } catch (Exception e) { + log.debug(e.getMessage(), e); + throw new java.rmi.RemoteException(e.getMessage()); + } + + } + public boolean addUserToGroup( String username, String serverId, Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java,v diff -u -r1.5 -r1.6 --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java 6 Feb 2009 05:45:52 -0000 1.5 +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java 8 Feb 2009 20:17:11 -0000 1.6 @@ -29,7 +29,8 @@ static { addCreateUser(); - addCreateGroup(); + addCreateOrganisation(); + addAddUserToOrganisation(); addAddUserToGroup(); addAddUserToGroupLessons(); addAddUserToSubgroup(); @@ -61,7 +62,7 @@ ((java.util.List)_myOperations.get("createUser")).add(_oper); } - private static void addCreateGroup() { + private static void addCreateOrganisation() { org.apache.axis.description.OperationDesc _oper; org.apache.axis.description.FaultDesc _fault; org.apache.axis.description.ParameterDesc [] _params; @@ -74,17 +75,40 @@ 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("createGroup", _params, new javax.xml.namespace.QName("", "createGroupReturn")); + _oper = new org.apache.axis.description.OperationDesc("createOrganisation", _params, new javax.xml.namespace.QName("", "createOrganisationReturn")); _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int")); - _oper.setElementQName(new javax.xml.namespace.QName("", "createGroup")); + _oper.setElementQName(new javax.xml.namespace.QName("", "createOrganisation")); _oper.setSoapAction(""); _myOperationsList.add(_oper); - if (_myOperations.get("createGroup") == null) { - _myOperations.put("createGroup", new java.util.ArrayList()); + if (_myOperations.get("createOrganisation") == null) { + _myOperations.put("createOrganisation", new java.util.ArrayList()); } - ((java.util.List)_myOperations.get("createGroup")).add(_oper); + ((java.util.List)_myOperations.get("createOrganisation")).add(_oper); } + private static void addAddUserToOrganisation() { + 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("", "login"), 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("", "organisationId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "int"), java.lang.Integer.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "asStaff"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "boolean"), java.lang.Boolean.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("addUserToOrganisation", _params, new javax.xml.namespace.QName("", "addUserToOrganisationReturn")); + _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); + _oper.setElementQName(new javax.xml.namespace.QName("", "addUserToOrganisation")); + _oper.setSoapAction(""); + _myOperationsList.add(_oper); + if (_myOperations.get("addUserToOrganisation") == null) { + _myOperations.put("addUserToOrganisation", new java.util.ArrayList()); + } + ((java.util.List)_myOperations.get("addUserToOrganisation")).add(_oper); + } + private static void addAddUserToGroup() { org.apache.axis.description.OperationDesc _oper; org.apache.axis.description.FaultDesc _fault; @@ -207,12 +231,17 @@ return ret; } - public int createGroup(String name, String code, String description, String owner, String serverId, String datetime, String hash) throws java.rmi.RemoteException + public int createOrganisation(String name, String code, String description, String owner, String serverId, String datetime, String hash) throws java.rmi.RemoteException { - int ret = impl.createGroup(name, code, description, owner, serverId, datetime, hash); + int ret = impl.createOrganisation(name, code, description, owner, serverId, datetime, hash); return ret; } + public boolean addUserToOrganisation(String login, Integer organisationId, Boolean asStaff, String serverId, String datetime, String hash) throws java.rmi.RemoteException { + boolean ret = impl.addUserToOrganisation(login, organisationId, asStaff, serverId, datetime, hash); + return ret; + } + public boolean addUserToGroup(String username, String serverId, String datetime, String hash, String courseId, String courseName, String countryIsoCode, String langIsoCode, Boolean isTeacher) throws java.rmi.RemoteException { boolean ret = impl.addUserToGroup(username, serverId, datetime, hash,