Example usage for org.joda.time.format DateTimeFormatter print

List of usage examples for org.joda.time.format DateTimeFormatter print

Introduction

In this page you can find the example usage for org.joda.time.format DateTimeFormatter print.

Prototype

public String print(ReadablePartial partial) 

Source Link

Document

Prints a ReadablePartial to a new String.

Usage

From source file:org.gluu.oxtrust.service.antlr.scimFilter.util.GluuGroupListSerializer.java

License:MIT License

private void writeStructure(String parent, Map.Entry<String, JsonNode> rootNodeEntry,
        JsonGenerator jsonGenerator) throws Exception {

    jsonGenerator.writeFieldName(rootNodeEntry.getKey());

    if (rootNodeEntry.getValue() instanceof ObjectNode) {

        jsonGenerator.writeStartObject();
        processNodes(rootNodeEntry.getKey(), rootNodeEntry.getValue(), jsonGenerator); // Recursion
        jsonGenerator.writeEndObject();/*from   ww w. j  a v a2 s. c  o m*/

    } else if (rootNodeEntry.getValue() instanceof ArrayNode) {

        ArrayNode arrayNode = (ArrayNode) rootNodeEntry.getValue();

        jsonGenerator.writeStartArray();

        if (arrayNode.size() > 0) {

            for (int i = 0; i < arrayNode.size(); i++) {

                JsonNode arrayNodeElement = arrayNode.get(i);

                if (arrayNodeElement.isObject()) {

                    jsonGenerator.writeStartObject();
                    processNodes(rootNodeEntry.getKey(), arrayNodeElement, jsonGenerator); // Recursion
                    jsonGenerator.writeEndObject();

                } else {
                    jsonGenerator.writeObject(arrayNodeElement);
                }
            }
        }

        jsonGenerator.writeEndArray();

    } else {

        if (parent != null && parent.equalsIgnoreCase("meta")) {

            if (rootNodeEntry.getValue() instanceof LongNode
                    && (rootNodeEntry.getKey().equalsIgnoreCase("created")
                            || rootNodeEntry.getKey().equalsIgnoreCase("lastModified"))) {

                DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format

                // In millis convert to string date
                jsonGenerator.writeObject(
                        dateTimeFormatter.print(Long.valueOf(rootNodeEntry.getValue().asText()).longValue()));

            } else {
                jsonGenerator.writeObject(rootNodeEntry.getValue());
            }

        } else {
            jsonGenerator.writeObject(rootNodeEntry.getValue());
        }
    }
}

From source file:org.gluu.oxtrust.service.antlr.scimFilter.util.ListResponseFidoDeviceSerializer.java

License:MIT License

private void writeStructure(String parent, Map.Entry<String, JsonNode> rootNodeEntry, ObjectMapper mapper,
        FidoDevice fidoDevice, JsonGenerator jsonGenerator) throws Exception {

    if (!rootNodeEntry.getKey().equalsIgnoreCase("externalId")) {

        jsonGenerator.writeFieldName(rootNodeEntry.getKey());

        if (rootNodeEntry.getValue() instanceof ObjectNode) {

            jsonGenerator.writeStartObject();
            processNodes(rootNodeEntry.getKey(), rootNodeEntry.getValue(), mapper, fidoDevice, jsonGenerator); // Recursion
            jsonGenerator.writeEndObject();

        } else if (rootNodeEntry.getValue() instanceof ArrayNode) {

            ArrayNode arrayNode = (ArrayNode) rootNodeEntry.getValue();

            jsonGenerator.writeStartArray();

            if (rootNodeEntry.getKey().equalsIgnoreCase("schemas")) {

                for (int i = 0; i < arrayNode.size(); i++) {

                    JsonNode arrayNodeElement = arrayNode.get(i);
                    jsonGenerator.writeObject(arrayNodeElement);
                }//from w w  w.  j  a  v a 2  s .  co  m

            } else {

                if (arrayNode.size() > 0) {

                    for (int i = 0; i < arrayNode.size(); i++) {

                        JsonNode arrayNodeElement = arrayNode.get(i);

                        if (arrayNodeElement.isObject()) {

                            jsonGenerator.writeStartObject();
                            processNodes(rootNodeEntry.getKey(), arrayNodeElement, mapper, fidoDevice,
                                    jsonGenerator); // Recursion
                            jsonGenerator.writeEndObject();

                        } else {
                            jsonGenerator.writeObject(arrayNodeElement);
                        }
                    }
                }
            }

            jsonGenerator.writeEndArray();

        } else {

            if (parent != null && parent.equalsIgnoreCase("meta")) {

                if (rootNodeEntry.getValue() instanceof LongNode
                        && (rootNodeEntry.getKey().equalsIgnoreCase("created")
                                || rootNodeEntry.getKey().equalsIgnoreCase("lastModified"))) {

                    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format

                    // In millis convert to string date
                    jsonGenerator.writeObject(dateTimeFormatter
                            .print(Long.valueOf(rootNodeEntry.getValue().asText()).longValue()));

                } else {
                    jsonGenerator.writeObject(rootNodeEntry.getValue());
                }

            } else {
                jsonGenerator.writeObject(rootNodeEntry.getValue());
            }
        }
    }
}

From source file:org.gluu.oxtrust.service.antlr.scimFilter.util.ListResponseGroupSerializer.java

License:MIT License

private void writeStructure(String parent, Map.Entry<String, JsonNode> rootNodeEntry,
        JsonGenerator jsonGenerator) throws Exception {

    // No Group Extension Schema yet

    if ((parent != null && !parent.isEmpty()) && parent.equalsIgnoreCase("members")
            && rootNodeEntry.getKey().equalsIgnoreCase("reference")) {
        jsonGenerator.writeFieldName("$ref");
    } else {//w  w w. j a v  a 2  s .  c  om
        jsonGenerator.writeFieldName(rootNodeEntry.getKey());
    }

    if (rootNodeEntry.getValue() instanceof ObjectNode) {

        jsonGenerator.writeStartObject();
        processNodes(rootNodeEntry.getKey(), rootNodeEntry.getValue(), jsonGenerator); // Recursion
        jsonGenerator.writeEndObject();

    } else if (rootNodeEntry.getValue() instanceof ArrayNode) {

        ArrayNode arrayNode = (ArrayNode) rootNodeEntry.getValue();

        jsonGenerator.writeStartArray();

        if (arrayNode.size() > 0) {

            for (int i = 0; i < arrayNode.size(); i++) {

                JsonNode arrayNodeElement = arrayNode.get(i);

                if (arrayNodeElement.isObject()) {

                    jsonGenerator.writeStartObject();
                    processNodes(rootNodeEntry.getKey(), arrayNodeElement, jsonGenerator); // Recursion
                    jsonGenerator.writeEndObject();

                } else {
                    jsonGenerator.writeObject(arrayNodeElement);
                }
            }
        }

        jsonGenerator.writeEndArray();

    } else {

        if (parent != null && parent.equalsIgnoreCase("meta")) {

            if (rootNodeEntry.getValue() instanceof LongNode
                    && (rootNodeEntry.getKey().equalsIgnoreCase("created")
                            || rootNodeEntry.getKey().equalsIgnoreCase("lastModified"))) {

                DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format

                // In millis convert to string date
                jsonGenerator.writeObject(
                        dateTimeFormatter.print(Long.valueOf(rootNodeEntry.getValue().asText()).longValue()));

            } else {
                jsonGenerator.writeObject(rootNodeEntry.getValue());
            }

        } else {
            jsonGenerator.writeObject(rootNodeEntry.getValue());
        }
    }
}

From source file:org.gluu.oxtrust.service.antlr.scimFilter.util.ListResponseUserSerializer.java

License:MIT License

private void writeStructure(String parent, Map.Entry<String, JsonNode> rootNodeEntry, ObjectMapper mapper,
        User user, JsonGenerator jsonGenerator) throws Exception {

    if (!(SchemaTypeMapping.getSchemaTypeInstance(rootNodeEntry.getKey()) instanceof UserExtensionSchema)) {

        if ((parent != null && !parent.isEmpty()) && parent.equalsIgnoreCase("groups")
                && rootNodeEntry.getKey().equalsIgnoreCase("reference")) {
            jsonGenerator.writeFieldName("$ref");
        } else {/*from  w  w w . j  av a 2  s. c o m*/
            jsonGenerator.writeFieldName(rootNodeEntry.getKey());
        }

        if (rootNodeEntry.getValue() instanceof ObjectNode) {

            jsonGenerator.writeStartObject();
            processNodes(rootNodeEntry.getKey(), rootNodeEntry.getValue(), mapper, user, jsonGenerator); // Recursion
            jsonGenerator.writeEndObject();

        } else if (rootNodeEntry.getValue() instanceof ArrayNode) {

            ArrayNode arrayNode = (ArrayNode) rootNodeEntry.getValue();

            jsonGenerator.writeStartArray();

            if (rootNodeEntry.getKey().equalsIgnoreCase("schemas")) {

                for (int i = 0; i < arrayNode.size(); i++) {

                    JsonNode arrayNodeElement = arrayNode.get(i);

                    if (arrayNodeElement.getTextValue().equalsIgnoreCase(Constants.USER_EXT_SCHEMA_ID)) {

                        boolean hasUserExtensionsInAttributes = false;
                        Extension extension = user.getExtension(Constants.USER_EXT_SCHEMA_ID);

                        if (attributes != null && attributes.size() > 0) {

                            for (Map.Entry<String, Extension.Field> extEntry : extension.getFields()
                                    .entrySet()) {

                                for (String attribute : attributes) {

                                    attribute = FilterUtil.stripScim2Schema(attribute);

                                    if (extEntry.getKey().equalsIgnoreCase(attribute)) {

                                        hasUserExtensionsInAttributes = true;
                                        break;
                                    }
                                }
                            }

                        } else {

                            if (extension != null && !extension.getFields().isEmpty()) {
                                hasUserExtensionsInAttributes = true;
                            }
                        }

                        if (hasUserExtensionsInAttributes) {
                            jsonGenerator.writeObject(arrayNodeElement);
                        }

                    } else {
                        jsonGenerator.writeObject(arrayNodeElement);
                    }
                }

            } else {

                if (arrayNode.size() > 0) {

                    for (int i = 0; i < arrayNode.size(); i++) {

                        JsonNode arrayNodeElement = arrayNode.get(i);

                        if (arrayNodeElement.isObject()) {

                            jsonGenerator.writeStartObject();
                            processNodes(rootNodeEntry.getKey(), arrayNodeElement, mapper, user, jsonGenerator); // Recursion
                            jsonGenerator.writeEndObject();

                        } else {
                            jsonGenerator.writeObject(arrayNodeElement);
                        }
                    }
                }
            }

            jsonGenerator.writeEndArray();

        } else {

            if (parent != null && parent.equalsIgnoreCase("meta")) {

                if (rootNodeEntry.getValue() instanceof LongNode
                        && (rootNodeEntry.getKey().equalsIgnoreCase("created")
                                || rootNodeEntry.getKey().equalsIgnoreCase("lastModified"))) {

                    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format

                    // In millis convert to string date
                    jsonGenerator.writeObject(dateTimeFormatter
                            .print(Long.valueOf(rootNodeEntry.getValue().asText()).longValue()));

                } else {
                    jsonGenerator.writeObject(rootNodeEntry.getValue());
                }

            } else {
                jsonGenerator.writeObject(rootNodeEntry.getValue());
            }
        }

    } else {
        serializeUserExtension(rootNodeEntry, mapper, user, jsonGenerator);
    }
}

From source file:org.gluu.oxtrust.service.scim2.jackson.custom.UserSerializer.java

License:MIT License

protected void serializeUserExtension(Map.Entry<String, JsonNode> rootNodeEntry, ObjectMapper mapper, User user,
        JsonGenerator jsonGenerator) throws Exception {

    AttributeService attributeService = AttributeService.instance();
    Extension extension = user.getExtension(rootNodeEntry.getKey());

    Map<String, Object> list = new HashMap<String, Object>();

    boolean enclosingWritten = false;
    for (Map.Entry<String, Extension.Field> extEntry : extension.getFields().entrySet()) {

        if (attributes != null && attributes.size() > 0) {

            for (String attribute : attributes) {

                attribute = FilterUtil.stripScim2Schema(attribute);

                if (extEntry.getKey().equalsIgnoreCase(attribute)) {

                    if (!enclosingWritten) {

                        jsonGenerator.writeFieldName(rootNodeEntry.getKey());
                        enclosingWritten = true;
                    }//w w  w  . jav a2s .  co m
                    break;
                }
            }

        } else {
            if (!enclosingWritten) {
                jsonGenerator.writeFieldName(rootNodeEntry.getKey());
                enclosingWritten = true;
            }
        }

        if (enclosingWritten) {

            GluuAttribute gluuAttribute = attributeService.getAttributeByName(extEntry.getKey());
            GluuAttributeDataType attributeDataType = gluuAttribute.getDataType();

            if ((gluuAttribute.getOxMultivaluedAttribute() != null)
                    && gluuAttribute.getOxMultivaluedAttribute().equals(OxMultivalued.TRUE)) {

                if (attributeDataType.equals(GluuAttributeDataType.STRING)
                        || attributeDataType.equals(GluuAttributeDataType.PHOTO)) {

                    List<String> stringList = Arrays
                            .asList(mapper.readValue(extEntry.getValue().getValue(), String[].class));
                    list.put(extEntry.getKey(), stringList);

                } else if (attributeDataType.equals(GluuAttributeDataType.DATE)) {

                    List<Date> dateList = Arrays
                            .asList(mapper.readValue(extEntry.getValue().getValue(), Date[].class));
                    List<String> stringList = new ArrayList<String>();
                    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC();
                    for (Date date : dateList) {
                        String dateString = dateTimeFormatter.print(date.getTime());
                        stringList.add(dateString);
                    }
                    list.put(extEntry.getKey(), stringList);

                } else if (attributeDataType.equals(GluuAttributeDataType.NUMERIC)) {

                    List<BigDecimal> numberList = Arrays
                            .asList(mapper.readValue(extEntry.getValue().getValue(), BigDecimal[].class));
                    list.put(extEntry.getKey(), numberList);
                }

            } else {

                if (attributeDataType.equals(GluuAttributeDataType.DATE)) {
                    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC();
                    list.put(extEntry.getKey(),
                            dateTimeFormatter.print(new Long(extEntry.getValue().getValue())));
                } else {
                    list.put(extEntry.getKey(), extEntry.getValue().getValue());
                }
            }
        }
    }

    if (enclosingWritten) {
        jsonGenerator.writeObject(list);
    }
}

From source file:org.gluu.oxtrust.service.scim2.Scim2FidoDeviceService.java

License:MIT License

public FidoDevice updateFidoDevice(String id, FidoDevice fidoDevice) throws Exception {

    fidoDeviceService = FidoDeviceService.instance();

    GluuCustomFidoDevice gluuCustomFidoDevice = fidoDeviceService
            .getGluuCustomFidoDeviceById(fidoDevice.getUserId(), id);
    if (gluuCustomFidoDevice == null) {
        throw new EntryPersistenceException(
                "Scim2FidoDeviceService.updateFidoDevice(): Resource " + id + " not found");
    }/*from   www.j  a  v  a  2s  .c  o  m*/

    GluuCustomFidoDevice updatedGluuCustomFidoDevice = CopyUtils2.updateGluuCustomFidoDevice(fidoDevice,
            gluuCustomFidoDevice);

    log.info(" Setting meta: update device ");
    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format
    Date dateLastModified = DateTime.now().toDate();
    updatedGluuCustomFidoDevice.setMetaLastModified(dateTimeFormatter.print(dateLastModified.getTime()));
    if (updatedGluuCustomFidoDevice.getMetaLocation() == null
            || (updatedGluuCustomFidoDevice.getMetaLocation() != null
                    && updatedGluuCustomFidoDevice.getMetaLocation().isEmpty())) {
        String relativeLocation = "/scim/v2/FidoDevices/" + id;
        updatedGluuCustomFidoDevice.setMetaLocation(relativeLocation);
    }

    fidoDeviceService.updateGluuCustomFidoDevice(gluuCustomFidoDevice);

    FidoDevice updatedFidoDevice = CopyUtils2.copy(gluuCustomFidoDevice, new FidoDevice());

    return updatedFidoDevice;
}

From source file:org.gluu.oxtrust.service.scim2.Scim2GroupService.java

License:MIT License

public Group createGroup(Group group) throws Exception {

    log.debug(" copying gluuGroup ");
    GluuGroup gluuGroup = CopyUtils2.copy(group, null, false);
    if (gluuGroup == null) {
        throw new Exception("Scim2GroupService.createGroup(): Failed to create group; GluuGroup is null");
    }//  w w  w .ja va  2 s .  c  o m

    groupService = GroupService.instance();

    log.debug(" generating inum ");
    String inum = groupService.generateInumForNewGroup();

    log.debug(" getting DN ");
    String dn = groupService.getDnForGroup(inum);

    log.debug(" getting iname ");
    String iname = groupService.generateInameForNewGroup(group.getDisplayName().replaceAll(" ", ""));

    log.debug(" setting dn ");
    gluuGroup.setDn(dn);

    log.debug(" setting inum ");
    gluuGroup.setInum(inum);

    log.debug(" setting iname ");
    gluuGroup.setIname(iname);

    log.info("group.getMembers().size() : " + group.getMembers().size());
    if (group.getMembers().size() > 0) {
        Utils.personMembersAdder(gluuGroup, dn);
    }

    // As per spec, the SP must be the one to assign the meta attributes
    log.info(" Setting meta: create group ");
    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format
    Date dateCreated = DateTime.now().toDate();
    String relativeLocation = "/scim/v2/Groups/" + inum;
    gluuGroup.setAttribute("oxTrustMetaCreated", dateTimeFormatter.print(dateCreated.getTime()));
    gluuGroup.setAttribute("oxTrustMetaLastModified", dateTimeFormatter.print(dateCreated.getTime()));
    gluuGroup.setAttribute("oxTrustMetaLocation", relativeLocation);

    // For custom script: create group
    if (externalScimService.isEnabled()) {
        externalScimService.executeScimCreateGroupMethods(gluuGroup);
    }

    log.debug("adding new GluuGroup");
    groupService.addGroup(gluuGroup);

    Group createdGroup = CopyUtils2.copy(gluuGroup, null);

    return createdGroup;
}

From source file:org.gluu.oxtrust.service.scim2.Scim2GroupService.java

License:MIT License

public Group updateGroup(String id, Group group) throws Exception {

    groupService = GroupService.instance();

    GluuGroup gluuGroup = groupService.getGroupByInum(id);
    if (gluuGroup == null) {

        throw new EntryPersistenceException(
                "Scim2GroupService.updateGroup(): " + "Resource " + id + " not found");

    } else {//  w w  w .j a  va 2s  .  c  o m

        // Validate if attempting to update displayName of a different id
        if (gluuGroup.getDisplayName() != null) {

            GluuGroup groupToFind = new GluuGroup();
            groupToFind.setDisplayName(group.getDisplayName());

            List<GluuGroup> foundGroups = groupService.findGroups(groupToFind, 2);
            if (foundGroups != null && foundGroups.size() > 0) {
                for (GluuGroup foundGroup : foundGroups) {
                    if (foundGroup != null && !foundGroup.getInum().equalsIgnoreCase(gluuGroup.getInum())) {
                        throw new DuplicateEntryException(
                                "Cannot update displayName of a different id: " + group.getDisplayName());
                    }
                }
            }
        }
    }

    GluuGroup updatedGluuGroup = CopyUtils2.copy(group, gluuGroup, true);

    if (group.getMembers().size() > 0) {
        Utils.personMembersAdder(updatedGluuGroup, groupService.getDnForGroup(id));
    }

    log.info(" Setting meta: update group ");
    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format
    Date dateLastModified = DateTime.now().toDate();
    updatedGluuGroup.setAttribute("oxTrustMetaLastModified",
            dateTimeFormatter.print(dateLastModified.getTime()));
    if (updatedGluuGroup.getAttribute("oxTrustMetaLocation") == null
            || (updatedGluuGroup.getAttribute("oxTrustMetaLocation") != null
                    && updatedGluuGroup.getAttribute("oxTrustMetaLocation").isEmpty())) {
        String relativeLocation = "/scim/v2/Groups/" + id;
        updatedGluuGroup.setAttribute("oxTrustMetaLocation", relativeLocation);
    }

    // For custom script: update group
    if (externalScimService.isEnabled()) {
        externalScimService.executeScimUpdateGroupMethods(updatedGluuGroup);
    }

    groupService.updateGroup(updatedGluuGroup);

    log.debug(" group updated ");

    Group updatedGroup = CopyUtils2.copy(updatedGluuGroup, null);

    return updatedGroup;
}

From source file:org.gluu.oxtrust.service.scim2.Scim2UserService.java

License:MIT License

public User createUser(User user) throws Exception {

    log.debug(" copying gluuperson ");
    GluuCustomPerson gluuPerson = CopyUtils2.copy(user, null, false);
    if (gluuPerson == null) {
        throw new Exception("Scim2UserService.createUser(): Failed to create user; GluuCustomPerson is null");
    }/*from ww w .  j av  a2  s.c om*/

    personService = PersonService.instance();

    log.debug(" generating inum ");
    String inum = personService.generateInumForNewPerson(); // inumService.generateInums(Configuration.INUM_TYPE_PEOPLE_SLUG);
    // //personService.generateInumForNewPerson();
    log.debug(" getting DN ");
    String dn = personService.getDnForPerson(inum);

    log.debug(" getting iname ");
    String iname = personService.generateInameForNewPerson(user.getUserName());

    log.debug(" setting dn ");
    gluuPerson.setDn(dn);

    log.debug(" setting inum ");
    gluuPerson.setInum(inum);

    log.debug(" setting iname ");
    gluuPerson.setIname(iname);

    log.debug(" setting commonName ");
    gluuPerson.setCommonName(gluuPerson.getGivenName() + " " + gluuPerson.getSurname());

    log.info("gluuPerson.getMemberOf().size() : " + gluuPerson.getMemberOf().size());
    if (user.getGroups().size() > 0) {
        log.info(" jumping to groupMembersAdder ");
        log.info("gluuPerson.getDn() : " + gluuPerson.getDn());
        Utils.groupMembersAdder(gluuPerson, gluuPerson.getDn());
    }

    // As per spec, the SP must be the one to assign the meta attributes
    log.info(" Setting meta: create user ");
    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format
    Date dateCreated = DateTime.now().toDate();
    String relativeLocation = "/scim/v2/Users/" + inum;
    gluuPerson.setAttribute("oxTrustMetaCreated", dateTimeFormatter.print(dateCreated.getTime()));
    gluuPerson.setAttribute("oxTrustMetaLastModified", dateTimeFormatter.print(dateCreated.getTime()));
    gluuPerson.setAttribute("oxTrustMetaLocation", relativeLocation);

    // Sync email, forward ("oxTrustEmail" -> "mail")
    gluuPerson = Utils.syncEmailForward(gluuPerson, true);

    // For custom script: create user
    if (externalScimService.isEnabled()) {
        externalScimService.executeScimCreateUserMethods(gluuPerson);
    }

    log.debug("adding new GluuPerson");
    personService.addPerson(gluuPerson);

    User createdUser = CopyUtils2.copy(gluuPerson, null);

    return createdUser;
}

From source file:org.gluu.oxtrust.service.scim2.Scim2UserService.java

License:MIT License

public User updateUser(String id, User user) throws Exception {

    personService = PersonService.instance();

    GluuCustomPerson gluuPerson = personService.getPersonByInum(id);
    if (gluuPerson == null) {

        throw new EntryPersistenceException(
                "Scim2UserService.updateUser(): " + "Resource " + id + " not found");

    } else {//w  ww . ja va 2s  .  c o m

        // Validate if attempting to update userName of a different id
        if (user.getUserName() != null) {

            GluuCustomPerson personToFind = new GluuCustomPerson();
            personToFind.setUid(user.getUserName());

            List<GluuCustomPerson> foundPersons = personService.findPersons(personToFind, 2);
            if (foundPersons != null && foundPersons.size() > 0) {
                for (GluuCustomPerson foundPerson : foundPersons) {
                    if (foundPerson != null && !foundPerson.getInum().equalsIgnoreCase(gluuPerson.getInum())) {
                        throw new DuplicateEntryException(
                                "Cannot update userName of a different id: " + user.getUserName());
                    }
                }
            }
        }
    }

    GluuCustomPerson updatedGluuPerson = CopyUtils2.copy(user, gluuPerson, true);

    if (user.getGroups().size() > 0) {
        Utils.groupMembersAdder(updatedGluuPerson, personService.getDnForPerson(id));
    }

    log.info(" Setting meta: update user ");
    DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); // Date should be in UTC format
    Date dateLastModified = DateTime.now().toDate();
    updatedGluuPerson.setAttribute("oxTrustMetaLastModified",
            dateTimeFormatter.print(dateLastModified.getTime()));
    if (updatedGluuPerson.getAttribute("oxTrustMetaLocation") == null
            || (updatedGluuPerson.getAttribute("oxTrustMetaLocation") != null
                    && updatedGluuPerson.getAttribute("oxTrustMetaLocation").isEmpty())) {
        String relativeLocation = "/scim/v2/Users/" + id;
        updatedGluuPerson.setAttribute("oxTrustMetaLocation", relativeLocation);
    }

    // Sync email, forward ("oxTrustEmail" -> "mail")
    updatedGluuPerson = Utils.syncEmailForward(updatedGluuPerson, true);

    // For custom script: update user
    if (externalScimService.isEnabled()) {
        externalScimService.executeScimUpdateUserMethods(updatedGluuPerson);
    }

    personService.updatePerson(updatedGluuPerson);

    log.debug(" person updated ");

    User updatedUser = CopyUtils2.copy(updatedGluuPerson, null);

    return updatedUser;
}