package it.inaf.ia2.gms.model; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class RapUser { private String id; private List identities; public String getId() { return id; } public void setId(String id) { this.id = id; } public List getIdentities() { return identities; } public void setIdentities(List identities) { this.identities = identities; } public String getDisplayName() { String displayName = null; // trying to extract name and surname for (Identity identity : identities) { if (identity.getName() != null && identity.getSurname() != null) { displayName = String.format("%s %s", identity.getName(), identity.getSurname()); if (identity.isPrimary()) { // prefer always primary break; } } } if (displayName == null) { // No name and surname --> using primary email Identity primaryIdentity = identities.stream().filter(i -> i.isPrimary()).findFirst() .orElseThrow(() -> new IllegalStateException("No primary identity for user " + id)); displayName = primaryIdentity.getEmail(); } // Adding types Set types = identities.stream().map(i -> { if (i.getType() == IdentityType.EDU_GAIN && i.getTypedId().endsWith("@ia2.inaf.it")) { return "IA2"; } return i.getType().getValue(); }).collect(Collectors.toSet()); displayName += String.format(" (%s)", String.join(", ", types)); return displayName; } }