use of ma.glasnost.orika.MapperFactory in project ORCID-Source by ORCID.
the class MapperFacadeFactory method getInvalidRecordDataChangeMapperFacade.
public MapperFacade getInvalidRecordDataChangeMapperFacade() {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
ClassMapBuilder<RecordCorrection, InvalidRecordDataChangeEntity> classMap = mapperFactory.classMap(RecordCorrection.class, InvalidRecordDataChangeEntity.class);
classMap.fieldBToA("id", "sequence");
classMap.fieldBToA("sqlUsedToUpdate", "sqlUsedToUpdate");
classMap.fieldBToA("description", "description");
classMap.fieldBToA("numChanged", "numChanged");
classMap.fieldBToA("type", "type");
classMap.byDefault();
classMap.register();
return mapperFactory.getMapperFacade();
}
use of ma.glasnost.orika.MapperFactory in project ORCID-Source by ORCID.
the class MapperFacadeFactory method getClientMapperFacade.
public MapperFacade getClientMapperFacade() {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
ClassMapBuilder<ClientSummary, ClientDetailsEntity> clientSummaryClassMap = mapperFactory.classMap(ClientSummary.class, ClientDetailsEntity.class);
clientSummaryClassMap.field("name", "clientName");
clientSummaryClassMap.field("description", "clientDescription");
clientSummaryClassMap.byDefault();
clientSummaryClassMap.register();
ClassMapBuilder<Client, ClientDetailsEntity> clientClassMap = mapperFactory.classMap(Client.class, ClientDetailsEntity.class);
clientClassMap.field("name", "clientName");
clientClassMap.field("description", "clientDescription");
clientClassMap.field("website", "clientWebsite");
clientClassMap.field("allowAutoDeprecate", "allowAutoDeprecate");
clientClassMap.fieldBToA("clientId", "id");
clientClassMap.fieldBToA("clientType", "clientType");
clientClassMap.fieldBToA("groupProfileId", "groupProfileId");
clientClassMap.fieldBToA("authenticationProviderId", "authenticationProviderId");
clientClassMap.fieldBToA("persistentTokensEnabled", "persistentTokensEnabled");
clientClassMap.customize(new CustomMapper<Client, ClientDetailsEntity>() {
/**
* On the way in, from Client to ClientDetailsEntity, we need to care about mapping the redirect uri's, since all config features will not change from UI requests
*/
@Override
public void mapAtoB(Client a, ClientDetailsEntity b, MappingContext context) {
Map<String, ClientRedirectUriEntity> existingRedirectUriEntitiesMap = new HashMap<String, ClientRedirectUriEntity>();
if (b.getClientRegisteredRedirectUris() != null && !b.getClientRegisteredRedirectUris().isEmpty()) {
existingRedirectUriEntitiesMap = ClientRedirectUriEntity.mapByUriAndType(b.getClientRegisteredRedirectUris());
}
if (b.getClientRegisteredRedirectUris() != null) {
b.getClientRegisteredRedirectUris().clear();
} else {
b.setClientRegisteredRedirectUris(new TreeSet<ClientRedirectUriEntity>());
}
if (a.getClientRedirectUris() != null) {
for (ClientRedirectUri cru : a.getClientRedirectUris()) {
String rUriKey = ClientRedirectUriEntity.getUriAndTypeKey(cru.getRedirectUri(), cru.getRedirectUriType());
if (existingRedirectUriEntitiesMap.containsKey(rUriKey)) {
ClientRedirectUriEntity existingEntity = existingRedirectUriEntitiesMap.get(rUriKey);
existingEntity.setLastModified(new Date());
existingEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
existingEntity.setUriActType(cru.getUriActType());
existingEntity.setUriGeoArea(cru.getUriGeoArea());
b.getClientRegisteredRedirectUris().add(existingEntity);
} else {
ClientRedirectUriEntity newEntity = new ClientRedirectUriEntity();
newEntity.setClientDetailsEntity(b);
newEntity.setDateCreated(new Date());
newEntity.setLastModified(new Date());
newEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
newEntity.setRedirectUri(cru.getRedirectUri());
newEntity.setRedirectUriType(cru.getRedirectUriType());
newEntity.setUriActType(cru.getUriActType());
newEntity.setUriGeoArea(cru.getUriGeoArea());
b.getClientRegisteredRedirectUris().add(newEntity);
}
}
}
}
/**
* On the way out, from ClientDetailsEntity to Client, we just need to care about mapping the redirect uri's and the primary client secret since all config features will not be visible on the UI
*/
@Override
public void mapBtoA(ClientDetailsEntity b, Client a, MappingContext context) {
if (b.getClientSecrets() != null) {
for (ClientSecretEntity entity : b.getClientSecrets()) {
if (entity.isPrimary()) {
a.setDecryptedSecret(encryptionManager.decryptForInternalUse(entity.getClientSecret()));
}
}
}
if (b.getRegisteredRedirectUri() != null) {
a.setClientRedirectUris(new HashSet<ClientRedirectUri>());
for (ClientRedirectUriEntity entity : b.getClientRegisteredRedirectUris()) {
ClientRedirectUri element = new ClientRedirectUri();
element.setRedirectUri(entity.getRedirectUri());
element.setRedirectUriType(entity.getRedirectUriType());
element.setUriActType(entity.getUriActType());
element.setUriGeoArea(entity.getUriGeoArea());
element.setPredefinedClientScopes(ScopePathType.getScopesFromSpaceSeparatedString(entity.getPredefinedClientScope()));
a.getClientRedirectUris().add(element);
}
}
}
});
clientClassMap.register();
return mapperFactory.getMapperFacade();
}
use of ma.glasnost.orika.MapperFactory in project ORCID-Source by ORCID.
the class MapperFacadeFactory method getObject.
@Override
public MapperFacade getObject() throws Exception {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
// Register converters
ConverterFactory converterFactory = mapperFactory.getConverterFactory();
converterFactory.registerConverter("externalIdentifierIdConverter", new ExternalIdentifierTypeConverter());
// Register factories
mapperFactory.registerObjectFactory(new WorkEntityFactory(workDao), TypeFactory.<NotificationWorkEntity>valueOf(NotificationWorkEntity.class), TypeFactory.<Item>valueOf(Item.class));
// Custom notification
ClassMapBuilder<NotificationCustom, NotificationCustomEntity> notificationCustomClassMap = mapperFactory.classMap(NotificationCustom.class, NotificationCustomEntity.class);
registerSourceConverters(mapperFactory, notificationCustomClassMap);
mapCommonFields(notificationCustomClassMap).register();
// Permission notification
ClassMapBuilder<NotificationPermission, NotificationAddItemsEntity> notificationPermissionClassMap = mapperFactory.classMap(NotificationPermission.class, NotificationAddItemsEntity.class);
registerSourceConverters(mapperFactory, notificationPermissionClassMap);
mapCommonFields(notificationPermissionClassMap.field("authorizationUrl.uri", "authorizationUrl").field("items.items", "notificationItems").customize(new CustomMapper<NotificationPermission, NotificationAddItemsEntity>() {
@Override
public void mapAtoB(NotificationPermission notification, NotificationAddItemsEntity entity, MappingContext context) {
if (StringUtils.isBlank(entity.getAuthorizationUrl())) {
String authUrl = orcidUrlManager.getBaseUrl() + notification.getAuthorizationUrl().getPath();
// validate
validateAndConvertToURI(authUrl);
entity.setAuthorizationUrl(authUrl);
}
}
@Override
public void mapBtoA(NotificationAddItemsEntity entity, NotificationPermission notification, MappingContext context) {
AuthorizationUrl authUrl = notification.getAuthorizationUrl();
if (authUrl != null) {
authUrl.setPath(extractFullPath(authUrl.getUri()));
authUrl.setHost(orcidUrlManager.getBaseHost());
}
}
})).register();
// Institutional sign in notification
ClassMapBuilder<NotificationInstitutionalConnection, NotificationInstitutionalConnectionEntity> institutionalConnectionNotificationClassMap = mapperFactory.classMap(NotificationInstitutionalConnection.class, NotificationInstitutionalConnectionEntity.class);
registerSourceConverters(mapperFactory, institutionalConnectionNotificationClassMap);
mapCommonFields(institutionalConnectionNotificationClassMap.field("authorizationUrl.uri", "authorizationUrl").customize(new CustomMapper<NotificationInstitutionalConnection, NotificationInstitutionalConnectionEntity>() {
@Override
public void mapAtoB(NotificationInstitutionalConnection notification, NotificationInstitutionalConnectionEntity entity, MappingContext context) {
if (StringUtils.isBlank(entity.getAuthorizationUrl())) {
String authUrl = orcidUrlManager.getBaseUrl() + notification.getAuthorizationUrl().getPath();
// validate
validateAndConvertToURI(authUrl);
entity.setAuthorizationUrl(authUrl);
}
}
@Override
public void mapBtoA(NotificationInstitutionalConnectionEntity entity, NotificationInstitutionalConnection notification, MappingContext context) {
AuthorizationUrl authUrl = notification.getAuthorizationUrl();
if (authUrl != null) {
authUrl.setPath(extractFullPath(authUrl.getUri()));
authUrl.setHost(orcidUrlManager.getBaseHost());
}
String providerId = entity.getAuthenticationProviderId();
if (StringUtils.isNotBlank(providerId)) {
String idpName = identityProviderManager.retrieveIdentitifyProviderName(providerId);
notification.setIdpName(idpName);
} else {
notification.setIdpName(LAST_RESORT_IDENTITY_PROVIDER_NAME);
}
}
})).register();
// Amend notification
ClassMapBuilder<NotificationAmended, NotificationAmendedEntity> amendNotificationClassMap = mapperFactory.classMap(NotificationAmended.class, NotificationAmendedEntity.class);
registerSourceConverters(mapperFactory, amendNotificationClassMap);
mapCommonFields(amendNotificationClassMap).register();
mapperFactory.classMap(NotificationItemEntity.class, Item.class).fieldMap("externalIdType", "externalIdentifier.type").converter("externalIdentifierIdConverter").add().field("externalIdValue", "externalIdentifier.value").byDefault().register();
return mapperFactory.getMapperFacade();
}
use of ma.glasnost.orika.MapperFactory in project ORCID-Source by ORCID.
the class MapperFacadeFactory method getNameMapperFacade.
public MapperFacade getNameMapperFacade() {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
ClassMapBuilder<Name, RecordNameEntity> nameClassMap = mapperFactory.classMap(Name.class, RecordNameEntity.class);
addV3DateFields(nameClassMap);
nameClassMap.field("creditName.content", "creditName");
nameClassMap.field("givenNames.content", "givenNames");
nameClassMap.field("familyName.content", "familyName");
nameClassMap.field("path", "profile.id");
nameClassMap.byDefault();
nameClassMap.register();
return mapperFactory.getMapperFacade();
}
use of ma.glasnost.orika.MapperFactory in project ORCID-Source by ORCID.
the class MapperFacadeFactory method getMembershipMapperFacade.
public MapperFacade getMembershipMapperFacade() {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
ClassMapBuilder<Membership, OrgAffiliationRelationEntity> classMap = mapperFactory.classMap(Membership.class, OrgAffiliationRelationEntity.class);
ClassMapBuilder<MembershipSummary, OrgAffiliationRelationEntity> summaryClassMap = mapperFactory.classMap(MembershipSummary.class, OrgAffiliationRelationEntity.class);
return generateMapperFacadeForAffiliation(mapperFactory, classMap, summaryClassMap);
}
Aggregations