use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.
the class BulkWebService method processUserOperation.
private BulkOperation processUserOperation(BulkOperation operation, Map<String, String> processedBulkIds) throws Exception {
log.info(" Operation is for User ");
// Intercept bulkId
User user = null;
if (operation.getData() != null) {
// Required in a request when
// "method" is "POST", "PUT", or
// "PATCH".
String serializedData = serialize(operation.getData());
for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
String key = "bulkId:" + entry.getKey();
serializedData = serializedData.replaceAll(key, entry.getValue());
}
user = deserializeToUser(serializedData);
}
String userRootEndpoint = appConfiguration.getBaseEndpoint() + "/scim/v2/Users/";
if (operation.getMethod().equalsIgnoreCase(HttpMethod.POST)) {
log.info(" Method is POST ");
try {
user = scim2UserService.createUser(user);
GluuCustomPerson gluuPerson = personService.getPersonByUid(user.getUserName());
String inum = gluuPerson.getInum();
// String location = (new
// StringBuilder()).append(domain).append("/Users/").append(inum).toString();
String location = userRootEndpoint + inum;
operation.setLocation(location);
operation.setStatus(String.valueOf(Response.Status.CREATED.getStatusCode()));
operation.setResponse(user);
// Set aside successfully-processed bulkId
// bulkId is only required in POST
processedBulkIds.put(operation.getBulkId(), user.getId());
} catch (DuplicateEntryException ex) {
log.error("DuplicateEntryException", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.CONFLICT.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.CONFLICT, ErrorScimType.UNIQUENESS, ex.getMessage()));
} catch (PersonRequiredFieldsException ex) {
log.error("PersonRequiredFieldsException: ", ex);
operation.setStatus(String.valueOf(Response.Status.BAD_REQUEST.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.BAD_REQUEST, ErrorScimType.INVALID_VALUE, ex.getMessage()));
} catch (Exception ex) {
log.error("Failed to create user", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
}
} else if (operation.getMethod().equalsIgnoreCase(HttpMethod.PUT)) {
log.info(" Method is PUT ");
String path = operation.getPath();
String id = getId(path);
for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
String key = "bulkId:" + entry.getKey();
if (id.equalsIgnoreCase(key)) {
id = id.replaceAll(key, entry.getValue());
break;
}
}
try {
user = scim2UserService.updateUser(id, user);
// String location = (new
// StringBuilder()).append(domain).append("/Users/").append(personiD).toString();
String location = userRootEndpoint + id;
operation.setLocation(location);
operation.setStatus(String.valueOf(Response.Status.OK.getStatusCode()));
operation.setResponse(user);
// bulkId is only required in POST
if (operation.getBulkId() != null) {
processedBulkIds.put(operation.getBulkId(), user.getId());
}
} catch (EntryPersistenceException ex) {
log.error("Failed to update user", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.NOT_FOUND.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.NOT_FOUND, ErrorScimType.INVALID_VALUE, "Resource " + id + " not found"));
} catch (DuplicateEntryException ex) {
log.error("DuplicateEntryException", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.CONFLICT.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.CONFLICT, ErrorScimType.UNIQUENESS, ex.getMessage()));
} catch (Exception ex) {
log.error("Failed to update user", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
}
} else if (operation.getMethod().equalsIgnoreCase(HttpMethod.DELETE)) {
log.info(" Method is DELETE ");
String path = operation.getPath();
String id = getId(path);
for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
String key = "bulkId:" + entry.getKey();
if (id.equalsIgnoreCase(key)) {
id = id.replaceAll(key, entry.getValue());
break;
}
}
try {
scim2UserService.deleteUser(id);
// Location may be omitted on DELETE
operation.setStatus(String.valueOf(Response.Status.OK.getStatusCode()));
operation.setResponse("User " + id + " deleted");
// bulkId is only required in POST
if (operation.getBulkId() != null) {
processedBulkIds.put(operation.getBulkId(), id);
}
} catch (EntryPersistenceException ex) {
log.error("Failed to delete user", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.NOT_FOUND.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.NOT_FOUND, null, "Resource " + id + " not found"));
} catch (Exception ex) {
log.error("Failed to delete user", ex);
ex.printStackTrace();
operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
}
}
return operation;
}
use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.
the class CopyUtils method copy.
/**
* Copy data from GluuGroup object to ScimGroup object
*
* @param source
* @param destination
* @return
* @throws Exception
*/
public ScimGroup copy(GluuGroup source, ScimGroup destination) throws Exception {
if (source == null) {
return null;
}
if (destination == null) {
destination = new ScimGroup();
}
List<String> schemas = new ArrayList<String>();
schemas.add(Constants.SCIM1_CORE_SCHEMA_ID);
destination.setSchemas(schemas);
destination.setDisplayName(source.getDisplayName());
destination.setId(source.getInum());
if (source.getMembers() != null) {
if (source.getMembers().size() != 0) {
List<ScimGroupMembers> members = new ArrayList<ScimGroupMembers>();
List<String> membersList = source.getMembers();
for (String oneMember : membersList) {
ScimGroupMembers member = new ScimGroupMembers();
GluuCustomPerson person = personService.getPersonByDn(oneMember);
member.setValue(person.getInum());
member.setDisplay(person.getDisplayName());
members.add(member);
}
destination.setMembers(members);
}
}
return destination;
}
use of org.gluu.oxtrust.model.GluuCustomPerson 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;
}
use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.
the class CopyUtils2 method copy.
/**
* Copy data from GluuGroup object to ScimGroup object
*
* @param source
* @param destination
* @return
* @throws Exception
*/
public Group copy(GluuGroup source, Group destination) throws Exception {
if (source == null) {
return null;
}
if (destination == null) {
destination = new Group();
}
destination.setDisplayName(source.getDisplayName());
destination.setId(source.getInum());
if (source.getMembers() != null) {
if (source.getMembers().size() > 0) {
Set<MemberRef> memberRefSet = new HashSet<MemberRef>();
List<String> membersList = source.getMembers();
for (String oneMember : membersList) {
if (oneMember != null && !oneMember.isEmpty()) {
GluuCustomPerson gluuCustomPerson = personService.getPersonByDn(oneMember);
MemberRef memberRef = new MemberRef();
memberRef.setValue(gluuCustomPerson.getInum());
memberRef.setDisplay(gluuCustomPerson.getDisplayName());
String reference = appConfiguration.getBaseEndpoint() + "/scim/v2/Users/" + gluuCustomPerson.getInum();
memberRef.setReference(reference);
memberRefSet.add(memberRef);
}
}
destination.setMembers(memberRefSet);
}
}
log.trace(" getting meta ");
Meta meta = (destination.getMeta() != null) ? destination.getMeta() : new Meta();
if (source.getAttribute("oxTrustMetaVersion") != null) {
meta.setVersion(source.getAttribute("oxTrustMetaVersion"));
}
String location = source.getAttribute("oxTrustMetaLocation");
if (location != null && !location.isEmpty()) {
if (!location.startsWith("https://") && !location.startsWith("http://")) {
location = appConfiguration.getBaseEndpoint() + location;
}
} else {
location = appConfiguration.getBaseEndpoint() + "/scim/v2/Groups/" + source.getInum();
}
meta.setLocation(location);
if (source.getAttribute("oxTrustMetaCreated") != null && !source.getAttribute("oxTrustMetaCreated").isEmpty()) {
try {
DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaCreated"), DateTimeZone.UTC);
meta.setCreated(dateTimeUtc.toDate());
} catch (Exception e) {
log.error(" Date parse exception (NEW format), continuing...", e);
// For backward compatibility
try {
meta.setCreated(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaCreated")));
} catch (Exception ex) {
log.error(" Date parse exception (OLD format)", ex);
}
}
}
if (source.getAttribute("oxTrustMetaLastModified") != null && !source.getAttribute("oxTrustMetaLastModified").isEmpty()) {
try {
DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaLastModified"), DateTimeZone.UTC);
meta.setLastModified(dateTimeUtc.toDate());
} catch (Exception e) {
log.error(" Date parse exception (NEW format), continuing...", e);
// For backward compatibility
try {
meta.setLastModified(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaLastModified")));
} catch (Exception ex) {
log.error(" Date parse exception (OLD format)", ex);
}
}
}
destination.setMeta(meta);
return destination;
}
use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.
the class CopyUtils2 method copy.
/**
* Copy data from Person object to GluuCustomPerson object
*
* @param source
* @param destination
* @return
* @throws Exception
*/
public GluuCustomPerson copy(Person source, GluuCustomPerson destination, List<GluuAttribute> attributes, GluuUserRole role, boolean isUpdate) {
if (source == null || !isValidData(source, isUpdate)) {
return null;
}
if (destination == null) {
destination = new GluuCustomPerson();
}
if (source.getPersonAttrList() != null) {
for (PersonAttribute personAttr : source.getPersonAttrList()) {
GluuAttribute attribute = getAttribute(attributes, personAttr.getName());
if (attribute == null || attribute.getEditType() == null || !containsRole(attribute.getEditType(), role))
continue;
destination.setAttribute(personAttr.getName(), personAttr.getValue());
}
}
if (!isUpdate) {
destination.setUid(source.getUserId());
destination.setUserPassword(source.getPassword());
destination.setGivenName(source.getFirstName());
destination.setDisplayName(source.getDisplayName());
destination.setSurname(source.getLastName());
destination.setMail(source.getEmail());
destination.setCommonName(source.getFirstName() + " " + source.getDisplayName());
} else {
if (!isEmpty(source.getFirstName()))
destination.setGivenName(source.getFirstName());
if (!isEmpty(source.getDisplayName()))
destination.setDisplayName(source.getDisplayName());
if (!isEmpty(source.getLastName()))
destination.setSurname(source.getLastName());
if (!isEmpty(source.getEmail()))
destination.setMail(source.getEmail());
if (!isEmpty(source.getFirstName()) && !isEmpty(source.getDisplayName()))
destination.setCommonName(source.getFirstName() + " " + source.getDisplayName());
}
return destination;
}
Aggregations