Search in sources :

Example 1 with ScimPersonGroupsPatch

use of org.gluu.oxtrust.model.scim.ScimPersonGroupsPatch in project oxTrust by GluuFederation.

the class CopyUtils method patch.

public GluuCustomPerson patch(ScimPersonPatch source, GluuCustomPerson destination, boolean isUpdate) throws Exception {
    if (source == null || !isValidData(source, isUpdate)) {
        return null;
    }
    if (destination == null) {
        log.trace(" creating a new Scimperson instant ");
        destination = new GluuCustomPerson();
    }
    log.trace(" setting userName ");
    log.trace(" source.getUserName() :" + source.getUserName() + "h");
    log.trace("  userName length : " + source.getUserName().length());
    if (source.getUserName() != null && source.getUserName().length() > 0) {
        destination.setUid(source.getUserName());
    }
    log.trace(" setting givenname ");
    if (source.getName().getGivenName() != null && source.getName().getGivenName().length() > 0) {
        destination.setGivenName(source.getName().getGivenName());
    }
    log.trace(" setting famillyname ");
    if (source.getName().getFamilyName() != null && source.getName().getGivenName().length() > 0) {
        destination.setSurname(source.getName().getFamilyName());
    }
    log.trace(" setting middlename ");
    if (source.getName().getMiddleName() != null && source.getName().getMiddleName().length() > 0) {
        destination.setAttribute(OX_TRUST_MIDDLE_NAME, source.getName().getMiddleName());
    }
    log.trace(" setting honor");
    if (source.getName().getHonorificPrefix() != null && source.getName().getHonorificPrefix().length() > 0) {
        destination.setAttribute(OX_TRUSTHONORIFIC_PREFIX, source.getName().getHonorificPrefix());
    }
    if (source.getName().getHonorificSuffix() != null && source.getName().getHonorificSuffix().length() > 0) {
        destination.setAttribute(OX_TRUSTHONORIFIC_SUFFIX, source.getName().getHonorificSuffix());
    }
    log.trace(" setting displayname ");
    if (source.getDisplayName() != null && source.getDisplayName().length() > 0) {
        destination.setDisplayName(source.getDisplayName());
    }
    log.trace(" setting externalID ");
    if (source.getExternalId() != null && source.getExternalId().length() > 0) {
        destination.setAttribute(OX_TRUST_EXTERNAL_ID, source.getExternalId());
    }
    log.trace(" setting nickname ");
    if (source.getNickName() != null && source.getNickName().length() > 0) {
        destination.setAttribute(OX_TRUST_NICK_NAME, source.getNickName());
    }
    log.trace(" setting profileURL ");
    if (source.getProfileUrl() != null && source.getProfileUrl().length() > 0) {
        destination.setAttribute(OX_TRUST_PROFILE_URL, source.getProfileUrl());
    }
    // getting emails
    log.trace(" setting emails ");
    if (source.getEmails() != null && source.getEmails().size() > 0) {
        List<ScimPersonEmailsPatch> emails = source.getEmails();
        String[] emailsList = new String[source.getEmails().size()];
        String[] emailsTypes = new String[source.getEmails().size()];
        String[] emailsPrimary = new String[source.getEmails().size()];
        int emailsSize = 0;
        if (destination.getAttributes(OX_TRUST_EMAIL) != null && destination.getAttributes(OX_TRUST_EMAIL).length > 0) {
            emailsList = destination.getAttributes(OX_TRUST_EMAIL);
            emailsTypes = destination.getAttributes(OX_TRUST_EMAIL_TYPE);
            emailsPrimary = destination.getAttributes(OX_TRUST_EMAIL_PRIMARY);
        // emailsSize =
        // destination.getAttributes("oxTrustEmail").length;
        }
        boolean emailIsFound = false;
        while (emailIsFound != true) {
            if (emails.get(0).getPrimary() == "true") {
                for (String oneEmail : emailsList) {
                    if (oneEmail == emails.get(0).getValue()) {
                        if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                            emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                        }
                        emailIsFound = true;
                    }
                    emailsSize++;
                }
                emailsSize = 0;
                for (String onePrimary : emailsPrimary) {
                    if (onePrimary == emails.get(0).getPrimary()) {
                        if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                            emailsPrimary[emailsSize] = "false";
                        }
                    }
                    emailsSize++;
                }
                if (emails.get(0).getValue() != null && emails.get(0).getValue().length() > 0) {
                    emailsList[emailsSize] = emails.get(0).getValue();
                }
                if (emails.get(0).getType() != null && emails.get(0).getType().length() > 0) {
                    emailsTypes[emailsSize] = emails.get(0).getType();
                }
                if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                    emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                }
                emailIsFound = true;
            }
            if (emails.get(0).getPrimary() == "false") {
                emailsSize = emailsList.length;
                if (emails.get(0).getValue() != null && emails.get(0).getValue().length() > 0) {
                    emailsList[emailsSize] = emails.get(0).getValue();
                }
                if (emails.get(0).getType() != null && emails.get(0).getType().length() > 0) {
                    emailsTypes[emailsSize] = emails.get(0).getType();
                }
                if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                    emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                }
                emailIsFound = true;
            }
        }
        destination.setAttribute(OX_TRUST_EMAIL, emailsList);
        destination.setAttribute(OX_TRUST_EMAIL_TYPE, emailsTypes);
        destination.setAttribute(OX_TRUST_EMAIL_PRIMARY, emailsPrimary);
    }
    // getting addresses
    log.trace(" settting addresses ");
    if (source.getAddresses() != null && source.getAddresses().size() == 2) {
        List<ScimPersonAddressesPatch> addresses = source.getAddresses();
        String[] street = new String[source.getAddresses().size()];
        String[] formatted = new String[source.getAddresses().size()];
        String[] locality = new String[source.getAddresses().size()];
        String[] region = new String[source.getAddresses().size()];
        String[] postalCode = new String[source.getAddresses().size()];
        String[] country = new String[source.getAddresses().size()];
        String[] addressType = new String[source.getAddresses().size()];
        String[] addressPrimary = new String[source.getAddresses().size()];
        int addressSize = 0;
        if (destination.getAttributes(OX_TRUST_STREET) != null && destination.getAttributes(OX_TRUST_STREET).length > 0) {
            street = destination.getAttributes(OX_TRUST_STREET);
            formatted = destination.getAttributes(OX_TRUST_ADDRESS_FORMATTED);
            locality = destination.getAttributes(OX_TRUST_LOCALITY);
            region = destination.getAttributes(OX_TRUST_REGION);
            postalCode = destination.getAttributes(OX_TRUST_POSTAL_CODE);
            country = destination.getAttributes(OX_TRUST_COUNTRY);
            addressType = destination.getAttributes(OX_TRUST_ADDRESS_TYPE);
            addressPrimary = destination.getAttributes(OX_TRUST_ADDRESS_PRIMARY);
        // addressSize =
        // destination.getAttributes("oxTrustStreet").length;
        }
        for (String oneStreet : street) {
            if (oneStreet == addresses.get(0).getStreetAddress()) {
                if (addresses.get(1).getStreetAddress() != null && addresses.get(1).getStreetAddress().length() > 0) {
                    street[addressSize] = addresses.get(1).getStreetAddress();
                }
                if (addresses.get(1).getFormatted() != null && addresses.get(1).getFormatted().length() > 0) {
                    formatted[addressSize] = addresses.get(1).getFormatted();
                }
                if (addresses.get(1).getLocality() != null && addresses.get(1).getLocality().length() > 0) {
                    locality[addressSize] = addresses.get(1).getLocality();
                }
                if (addresses.get(1).getRegion() != null && addresses.get(1).getRegion().length() > 0) {
                    region[addressSize] = addresses.get(1).getRegion();
                }
                if (addresses.get(1).getPostalCode() != null && addresses.get(1).getPostalCode().length() > 0) {
                    postalCode[addressSize] = addresses.get(1).getPostalCode();
                }
                if (addresses.get(1).getCountry() != null && addresses.get(1).getCountry().length() > 0) {
                    country[addressSize] = addresses.get(1).getCountry();
                }
                if (addresses.get(1).getType() != null && addresses.get(1).getType().length() > 0) {
                    addressType[addressSize] = addresses.get(1).getType();
                }
                if (addresses.get(1).getPrimary() != null && addresses.get(1).getPrimary().length() > 0) {
                    addressPrimary[addressSize] = addresses.get(1).getPrimary();
                }
            }
            addressSize++;
        }
        destination.setAttribute(OX_TRUST_STREET, street);
        destination.setAttribute(OX_TRUST_LOCALITY, locality);
        destination.setAttribute(OX_TRUST_REGION, region);
        destination.setAttribute(OX_TRUST_POSTAL_CODE, postalCode);
        destination.setAttribute(OX_TRUST_COUNTRY, country);
        destination.setAttribute(OX_TRUST_ADDRESS_FORMATTED, formatted);
        destination.setAttribute(OX_TRUST_ADDRESS_PRIMARY, addressPrimary);
        destination.setAttribute(OX_TRUST_ADDRESS_TYPE, addressType);
    }
    // getting phone numbers;
    log.trace(" setting phoneNumbers ");
    if (source.getPhoneNumbers() != null && source.getPhoneNumbers().size() > 0) {
        List<ScimPersonPhonesPatch> phones = source.getPhoneNumbers();
        String[] phoneNumber = new String[source.getPhoneNumbers().size()];
        String[] phoneType = new String[source.getPhoneNumbers().size()];
        int phoneSize = 0;
        if (destination.getAttributes(OX_TRUST_PHONE_VALUE) != null && destination.getAttributes(OX_TRUST_PHONE_VALUE).length > 0) {
            phoneNumber = destination.getAttributes(OX_TRUST_PHONE_VALUE);
            phoneType = destination.getAttributes(OX_TRUST_PHONE_TYPE);
        // phoneSize =
        // destination.getAttributes("oxTrustPhoneValue").length;
        }
        for (ScimPersonPhones phone : phones) {
            if (phone.getValue() != null && phone.getValue().length() > 0) {
                phoneNumber[phoneSize] = phone.getValue();
            }
            if (phone.getType() != null && phone.getType().length() > 0) {
                phoneType[phoneSize] = phone.getType();
            }
            phoneSize++;
        }
        destination.setAttribute(OX_TRUST_PHONE_VALUE, phoneNumber);
        destination.setAttribute(OX_TRUST_PHONE_TYPE, phoneType);
    }
    // getting ims
    log.trace(" setting ims ");
    if (source.getIms() != null && source.getIms().size() > 0) {
        List<ScimPersonImsPatch> ims = source.getIms();
        String[] imValue = new String[source.getIms().size()];
        String[] imType = new String[source.getIms().size()];
        int imSize = 0;
        if (destination.getAttributes(OX_TRUST_IMS_VALUE) != null && destination.getAttributes(OX_TRUST_IMS_VALUE).length > 0) {
            imValue = destination.getAttributes(OX_TRUST_IMS_VALUE);
            imType = destination.getAttributes("oxTrustImsType");
            imSize = destination.getAttributes(OX_TRUST_IMS_VALUE).length;
        }
        for (ScimPersonIms im : ims) {
            if (im.getValue() != null && im.getValue().length() > 0) {
                imValue[imSize] = im.getValue();
            }
            if (im.getType() != null && im.getType().length() > 0) {
                imType[imSize] = im.getType();
            }
            imSize++;
        }
        destination.setAttribute(OX_TRUST_IMS_VALUE, imValue);
        destination.setAttribute("oxTrustImsType", imType);
    }
    // getting Photos
    log.trace(" setting photos ");
    if (source.getPhotos() != null && source.getPhotos().size() > 0) {
        List<ScimPersonPhotosPatch> photos = source.getPhotos();
        String[] photoType = new String[source.getPhotos().size()];
        String[] photoValue = new String[source.getPhotos().size()];
        int photoSize = 0;
        if (destination.getAttributes(OX_TRUST_PHOTOS) != null && destination.getAttributes(OX_TRUST_PHOTOS).length > 0) {
            photoType = destination.getAttributes(OX_TRUST_PHOTOS_TYPE);
            photoValue = destination.getAttributes(OX_TRUST_PHOTOS);
            photoSize = destination.getAttributes(OX_TRUST_PHOTOS_TYPE).length;
        }
        for (ScimPersonPhotos photo : photos) {
            if (photo.getType() != null && photo.getType().length() > 0) {
                photoType[photoSize] = photo.getType();
            }
            if (photo.getValue() != null && photo.getValue().length() > 0) {
                photoValue[photoSize] = photo.getValue();
            }
            photoSize++;
        }
        destination.setAttribute(OX_TRUST_PHOTOS_TYPE, photoType);
        destination.setAttribute(OX_TRUST_PHOTOS, photoValue);
    }
    if (source.getUserType() != null && source.getUserType().length() > 0) {
        destination.setAttribute(OX_TRUST_USER_TYPE, source.getUserType());
    }
    if (source.getTitle() != null && source.getTitle().length() > 0) {
        destination.setAttribute(OX_TRUST_TITLE, source.getTitle());
    }
    if (source.getPreferredLanguage() != null && source.getPreferredLanguage().length() > 0) {
        destination.setPreferredLanguage(source.getPreferredLanguage());
    }
    if (source.getLocale() != null && source.getLocale().length() > 0) {
        destination.setAttribute(OX_TRUST_LOCALE, source.getLocale());
    }
    if (source.getTimezone() != null && source.getTimezone().length() > 0) {
        destination.setTimezone(source.getTimezone());
    }
    if (source.getActive() != null && source.getActive().length() > 0) {
        destination.setAttribute(OX_TRUST_ACTIVE, source.getActive());
    }
    if (source.getPassword() != null && source.getPassword().length() > 0) {
        destination.setUserPassword(source.getPassword());
    }
    // getting user groups
    log.trace(" setting groups ");
    if (source.getGroups() != null && source.getGroups().size() > 0) {
        List<ScimPersonGroupsPatch> listGroups = source.getGroups();
        List<String> members = new ArrayList<String>();
        for (ScimPersonGroups group : listGroups) {
            members.add(groupService.getDnForGroup(group.getValue()));
        }
        destination.setMemberOf(members);
    }
    // getting roles
    log.trace(" setting roles ");
    if (source.getRoles() != null && source.getRoles().size() > 0) {
        List<ScimRolesPatch> roles = source.getRoles();
        String[] scimRole = new String[source.getRoles().size()];
        int rolesSize = 0;
        if (destination.getAttributes(OX_TRUST_ROLE) != null && destination.getAttributes(OX_TRUST_ROLE).length > 0) {
            scimRole = destination.getAttributes(OX_TRUST_ROLE);
            rolesSize = destination.getAttributes(OX_TRUST_ROLE).length;
        }
        for (ScimRoles role : roles) {
            if (role.getValue() != null && role.getValue().length() > 0) {
                scimRole[rolesSize] = role.getValue();
            }
            rolesSize++;
        }
        destination.setAttribute(OX_TRUST_ROLE, scimRole);
    }
    // getting entitlements
    log.trace(" setting entitlements ");
    if (source.getEntitlements() != null && source.getEntitlements().size() > 0) {
        List<ScimEntitlementsPatch> ents = source.getEntitlements();
        String[] listEnts = new String[source.getEntitlements().size()];
        int entsSize = 0;
        if (destination.getAttributes(OX_TRUST_ENTITLEMENTS) != null && destination.getAttributes(OX_TRUST_ENTITLEMENTS).length > 0) {
            listEnts = destination.getAttributes(OX_TRUST_ENTITLEMENTS);
            entsSize = destination.getAttributes(OX_TRUST_ENTITLEMENTS).length;
        }
        for (ScimEntitlements ent : ents) {
            if (ent.getValue() != null && ent.getValue().length() > 0) {
                listEnts[entsSize] = ent.getValue();
            }
            entsSize++;
        }
        destination.setAttribute(OX_TRUST_ENTITLEMENTS, listEnts);
    }
    // getting x509Certificates
    log.trace(" setting certs ");
    if (source.getX509Certificates() != null && source.getX509Certificates().size() > 0) {
        List<Scimx509CertificatesPatch> certs = source.getX509Certificates();
        String[] listCerts = new String[source.getX509Certificates().size()];
        int certsSize = 0;
        if (destination.getAttributes(OX_TRUSTX509_CERTIFICATE) != null && destination.getAttributes(OX_TRUSTX509_CERTIFICATE).length > 0) {
            listCerts = destination.getAttributes(OX_TRUSTX509_CERTIFICATE);
            certsSize = destination.getAttributes(OX_TRUSTX509_CERTIFICATE).length;
        }
        for (Scimx509Certificates cert : certs) {
            if (cert.getValue() != null && cert.getValue().length() > 0) {
                listCerts[certsSize] = cert.getValue();
            }
            certsSize++;
        }
        destination.setAttribute(OX_TRUSTX509_CERTIFICATE, listCerts);
    }
    // getting meta
    log.trace(" setting meta ");
    if (source.getMeta().getCreated() != null && source.getMeta().getCreated().length() > 0) {
        destination.setAttribute(OX_TRUST_META_CREATED, source.getMeta().getCreated());
    }
    if (source.getMeta().getLastModified() != null && source.getMeta().getLastModified().length() > 0) {
        destination.setAttribute(OX_TRUST_META_LAST_MODIFIED, source.getMeta().getLastModified());
    }
    if (source.getMeta().getVersion() != null && source.getMeta().getVersion().length() > 0) {
        destination.setAttribute(OX_TRUST_META_VERSION, source.getMeta().getVersion());
    }
    if (source.getMeta().getLocation() != null && source.getMeta().getLocation().length() > 0) {
        destination.setAttribute(OX_TRUST_META_LOCATION, source.getMeta().getLocation());
    }
    setGluuStatus(source, destination);
    return destination;
}
Also used : ScimEntitlements(org.gluu.oxtrust.model.scim.ScimEntitlements) ScimPersonGroupsPatch(org.gluu.oxtrust.model.scim.ScimPersonGroupsPatch) ScimPersonImsPatch(org.gluu.oxtrust.model.scim.ScimPersonImsPatch) ArrayList(java.util.ArrayList) Scimx509CertificatesPatch(org.gluu.oxtrust.model.scim.Scimx509CertificatesPatch) ScimPersonIms(org.gluu.oxtrust.model.scim.ScimPersonIms) ScimPersonPhotosPatch(org.gluu.oxtrust.model.scim.ScimPersonPhotosPatch) GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) ScimRolesPatch(org.gluu.oxtrust.model.scim.ScimRolesPatch) ScimPersonPhonesPatch(org.gluu.oxtrust.model.scim.ScimPersonPhonesPatch) ScimPersonEmailsPatch(org.gluu.oxtrust.model.scim.ScimPersonEmailsPatch) Scimx509Certificates(org.gluu.oxtrust.model.scim.Scimx509Certificates) ScimRoles(org.gluu.oxtrust.model.scim.ScimRoles) ScimPersonAddressesPatch(org.gluu.oxtrust.model.scim.ScimPersonAddressesPatch) ScimPersonPhotos(org.gluu.oxtrust.model.scim.ScimPersonPhotos) ScimEntitlementsPatch(org.gluu.oxtrust.model.scim.ScimEntitlementsPatch) ScimPersonGroups(org.gluu.oxtrust.model.scim.ScimPersonGroups) ScimPersonPhones(org.gluu.oxtrust.model.scim.ScimPersonPhones)

Aggregations

ArrayList (java.util.ArrayList)1 GluuCustomPerson (org.gluu.oxtrust.model.GluuCustomPerson)1 ScimEntitlements (org.gluu.oxtrust.model.scim.ScimEntitlements)1 ScimEntitlementsPatch (org.gluu.oxtrust.model.scim.ScimEntitlementsPatch)1 ScimPersonAddressesPatch (org.gluu.oxtrust.model.scim.ScimPersonAddressesPatch)1 ScimPersonEmailsPatch (org.gluu.oxtrust.model.scim.ScimPersonEmailsPatch)1 ScimPersonGroups (org.gluu.oxtrust.model.scim.ScimPersonGroups)1 ScimPersonGroupsPatch (org.gluu.oxtrust.model.scim.ScimPersonGroupsPatch)1 ScimPersonIms (org.gluu.oxtrust.model.scim.ScimPersonIms)1 ScimPersonImsPatch (org.gluu.oxtrust.model.scim.ScimPersonImsPatch)1 ScimPersonPhones (org.gluu.oxtrust.model.scim.ScimPersonPhones)1 ScimPersonPhonesPatch (org.gluu.oxtrust.model.scim.ScimPersonPhonesPatch)1 ScimPersonPhotos (org.gluu.oxtrust.model.scim.ScimPersonPhotos)1 ScimPersonPhotosPatch (org.gluu.oxtrust.model.scim.ScimPersonPhotosPatch)1 ScimRoles (org.gluu.oxtrust.model.scim.ScimRoles)1 ScimRolesPatch (org.gluu.oxtrust.model.scim.ScimRolesPatch)1 Scimx509Certificates (org.gluu.oxtrust.model.scim.Scimx509Certificates)1 Scimx509CertificatesPatch (org.gluu.oxtrust.model.scim.Scimx509CertificatesPatch)1