/* ########################################################## ## CONFIDENTIAL & PROPRIETARY ## Copyright (C) 2004 - 2007 by Geolearning, Inc. ## All Rights Reserved. ########################################################## */ package com.geolearning.geonext.webservices; import org.apache.axis2.client.Options; import org.apache.axis2.transport.http.HttpTransportProperties; import org.apache.axis2.transport.http.HTTPConstants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.Constants; import org.apache.axis2.AxisFault; import java.rmi.RemoteException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.UUID; public class GeolearningJavaExample { private WebServicesStub SERVICE; public GeolearningJavaExample() { } protected void initialize() throws AxisFault { EndpointReference targetEPR = new EndpointReference("https://gm1.geolearning.com/geonext/geo_testing2/webservices/geonext.asmx"); HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator(); auth.setUsername("adminUserName"); auth.setPassword("Password1!"); auth.setPreemptiveAuthentication(true); Options options = new Options(); options.setProperty(HTTPConstants.AUTHENTICATE, auth); options.setProperty(HTTPConstants.CHUNKED,false); options.setTo(targetEPR); options.setTransportInProtocol(Constants.TRANSPORT_HTTP); SERVICE = new WebServicesStub(); SERVICE._getServiceClient().setOptions(options); } protected void displayAttribute(String name, String value) { System.out.println(name + ": " + value); } public String getRandomString(){ UUID uuid = UUID.randomUUID(); return uuid.randomUUID() .toString(); } protected String createNewUser() throws RemoteException { System.out.println("***createNewUser begin***"); String userName = getRandomString(); System.out.println("Random username generated: " + userName); //Check to see if the user already exists. WebServicesStub.UserExists userExists = new WebServicesStub.UserExists(); userExists.setUserName(userName); if(SERVICE.userExists(userExists).getUserExistsResult()){ System.out.println("By some crazy act of Thor the user already exists!"); return userName; } //Grab a empty shell user from the service com.geolearning.geonext.webservices.WebServicesStub.User user = SERVICE.generateUserObject(new WebServicesStub.GenerateUserObject()).getGenerateUserObjectResult(); // First lets set all of the simple string values. // Then we will attack the complex types user.setUserName(userName); // You can either set a password that conforms to the sites password rules or you can not set the password and let the system generate one user.setPassword("Passsssword1!"); user.setFirstName("John"); user.setMiddleInitial("Q"); user.setLastName("Public" ); user.setEmail(userName + "@geolearning.com"); user.setStreetAddress("1555 Pond Ln."); user.setCity("Des Moines"); user.setState("IOWA"); user.setCountry("UNITED STATES"); user.setTelephone("555-555-1212"); user.setExtension("234"); user.setLocationName("QA_Location1"); user.setStartDate(Calendar.getInstance()); // the postal code type is a enum. user.setPostalCode("55512"); user.setPostalCodeType(WebServicesStub.PostalCodeType.US); // Supervisor takes the username of the supervisors in a array of strings WebServicesStub.ArrayOfString supervisorNames = new WebServicesStub.ArrayOfString(); supervisorNames.addString("Geo_Testing"); user.setSupervisorUserNames(supervisorNames); // roles must be valid roles. Also Default role name must be in the list of roles already. user.setDefaultRoleName("Administrator"); WebServicesStub.ArrayOfString roleNames = new WebServicesStub.ArrayOfString(); roleNames.addString("Administrator"); user.setRoleNames(roleNames); // Groups are mostly the same but in this case we are dealing with the group object which // also needs to come out of the stubs. //The "name" will represent the full path to the group, seperated by slashes down the tree. WebServicesStub.ArrayOfGroup arrayOfGroup = new WebServicesStub.ArrayOfGroup(); WebServicesStub.Group group = new WebServicesStub.Group(); group.setName("Tim's Group/My Test Group"); arrayOfGroup.addGroup(group); user.setGroups(arrayOfGroup); // now some Catalog Access Codes. WebServicesStub.ArrayOfString catalogAccessCodeNames = new WebServicesStub.ArrayOfString(); catalogAccessCodeNames.addString("CrazyCatalogAccessCode"); user.setCatalogAccessCodeNames(catalogAccessCodeNames); // Custom User Attributes. emember that these would need to have already been created in the system. WebServicesStub.ArrayOfCustomUserAttribute arrayOfCustomUserAttribute = new WebServicesStub.ArrayOfCustomUserAttribute(); WebServicesStub.CustomUserAttribute cua = new WebServicesStub.CustomUserAttribute(); cua.setName("Rep ID"); cua.setValue("8675309"); arrayOfCustomUserAttribute.addCustomUserAttribute(cua); user.setCustomUserAttributes(arrayOfCustomUserAttribute); //Custom SELECT user attributes. arrayOfCustomUserAttribute = new WebServicesStub.ArrayOfCustomUserAttribute(); cua = new WebServicesStub.CustomUserAttribute(); cua.setName("Niko-Niko"); cua.setValue("Sad"); arrayOfCustomUserAttribute.addCustomUserAttribute(cua); user.setCustomSelectUserAttributes(arrayOfCustomUserAttribute); // finally, we can save the user. note that save and update user return a result object. // we can use that result to see messages and potential errors with our process. WebServicesStub.CreateUser createUser = new WebServicesStub.CreateUser(); createUser.setUser(user); WebServicesStub.CreateUserResponse createUserResponse = SERVICE.createUser(createUser); WebServicesStub.UserResult userResult = createUserResponse.getCreateUserResult(); printUserResult(userResult); //System.out.println(userName + "'s new Password is " + userResult.getDefaultPassword()); return userName; } public void printUserResult(WebServicesStub.UserResult userResult){ // ERRORS and WARNINGS // ************************************************************************ // You would think that a Axis method called getString() would return a string // but you would be wrong. getString() actually returns a array of errors or warnings (which are strings) // ************************************************************************ String[] errors = userResult.getErrors().getString(); if (errors != null) { for (String error : errors) { System.out.println("ERROR: " + error); } } else { System.out.println("***No Errors Found***"); } String[] warnings = userResult.getWarnings().getString(); if (warnings != null) { for (String warning : warnings) { System.out.println("WARNING: " + warning); } } else { System.out.println("***No Warnings Found***"); } } protected void updateUser(WebServicesStub.User user) throws RemoteException { System.out.println("***updateUser begin for " + user.getUserName() +" ***"); user.setCity("New " + user.getCity()); WebServicesStub.UpdateUser updateUser = new WebServicesStub.UpdateUser(); updateUser.setUser(user); WebServicesStub.Result result = SERVICE.updateUser(updateUser).getUpdateUserResult(); String[] errors = result.getErrors().getString(); if (errors != null) { for (int j=0; j<errors.length; j++) { System.out.println("ERROR: " + errors[j]); } } else { System.out.println("***No errors found***"); } String[] warnings = result.getWarnings().getString(); if (warnings != null) { for (int j=0; j<warnings.length; j++) { System.out.println("WARNING: " + warnings[j]); } } else { System.out.println("***No warning found***"); } System.out.println("***updateUser end***"); } public WebServicesStub.User loadUser(String userName) throws RemoteException { System.out.println("***loadUser begin for " + userName + " ***"); WebServicesStub.LoadUser loadUser = new WebServicesStub.LoadUser(); loadUser.setUserName(userName); WebServicesStub.LoadUserResponse loadUserResponse = SERVICE.loadUser(loadUser); WebServicesStub.User user = loadUserResponse.getLoadUserResult(); if(user != null){ System.out.println("***User Found!***"); PrintUserRecord(user); }else{ System.out.println("***User Not found!***"); } System.out.println("***loadUser end***"); return user; } public void PrintUserRecord(WebServicesStub.User user){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); displayAttribute("User Name", user.getUserName()); displayAttribute("External Id", user.getExternalId()); displayAttribute("First Name", user.getFirstName()); displayAttribute("Middle Initial", user.getMiddleInitial()); displayAttribute("Last Name", user.getLastName()); displayAttribute("Email", user.getEmail()); displayAttribute("Created", simpleDateFormat.format(user.getCreationTime().getTime())); displayAttribute("Last Modified", simpleDateFormat.format(user.getModifiedTime().getTime())); displayAttribute("Street Address", user.getStreetAddress()); displayAttribute("City", user.getCity()); displayAttribute("State", user.getState()); displayAttribute("Country", user.getCountry()); displayAttribute("Postal Code", user.getPostalCode()); displayAttribute("Postal Code Type", user.getPostalCodeType().getValue()); displayAttribute("Telephone", user.getTelephone()); displayAttribute("Extension", user.getExtension()); displayAttribute("Location Name", user.getLocationName()); simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy"); displayAttribute("Start Date", simpleDateFormat.format(user.getStartDate().getTime())); System.out.println("***Supervisors***"); String[] supervisorUserNames = user.getSupervisorUserNames().getString(); if (supervisorUserNames != null) { for(String name : supervisorUserNames) { displayAttribute("Supervisor:", name); } }else{ System.out.println("***No Supervisors found***"); } System.out.println("***Roles***"); String[] roleNames = user.getRoleNames().getString(); if (roleNames != null) { for (String role : roleNames) { displayAttribute("Role:",role); } } else { System.out.println("***No Roles found***"); } displayAttribute("Default Role", user.getDefaultRoleName()); System.out.println("***Groups***"); WebServicesStub.Group[] groups = user.getGroups().getGroup(); if (groups != null) { for (WebServicesStub.Group group : groups) { displayAttribute("Group:", group.getName()); } } else { System.out.println("***No Groups found***"); } System.out.println("***Custom User Attributes***"); WebServicesStub.CustomUserAttribute[] cuas = user.getCustomUserAttributes().getCustomUserAttribute(); if (cuas != null) { for (WebServicesStub.CustomUserAttribute cua : cuas) { displayAttribute("CUA:", cua.getName() + " : " + cua.getValue()); } } else { System.out.println("***No Custom User Attributes Found***"); } System.out.println("***Custom Select User Attributes***"); cuas = user.getCustomSelectUserAttributes().getCustomUserAttribute(); if (cuas != null) { for (WebServicesStub.CustomUserAttribute csua : cuas) { displayAttribute("CSUA:", csua.getName() + " : " + csua.getValue()); } } else { System.out.println("***No Custom Select User Attributes Found***"); } System.out.println("***Catalog Access Codes***"); String[] catalogAccessCodeNames = user.getCatalogAccessCodeNames().getString(); if (catalogAccessCodeNames != null) { for (String cac : catalogAccessCodeNames) { displayAttribute("Catalog Access Code:", cac); } } else { System.out.println("***No Catalog Access Codes found***"); } } public static void main(String[] args) { try { GeolearningJavaExample gje = new GeolearningJavaExample(); gje.initialize(); System.out.println("*******************************************"); String userName = gje.createNewUser(); System.out.println("*******************************************"); WebServicesStub.User testUser = gje.loadUser(userName); System.out.println("*******************************************"); gje.updateUser(testUser); System.out.println("*******************************************"); } catch (Exception e) { System.out.println("Caught Exception: " + e.getMessage() + " " + e.getClass().getName()); } } }