Skip to content

Commit d428652

Browse files
authored
Merge pull request #6870 from ORCID/8792-qa-membership-activities-being-given-priority-over-other-professional-activities-in-summary-page
fix: Sort affiliations by created date
2 parents 41aadb0 + 3d49b8a commit d428652

File tree

7 files changed

+176
-27
lines changed

7 files changed

+176
-27
lines changed

orcid-persistence/src/test/java/org/orcid/persistence/dao/OrgDisambiguatedDaoTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void testFindDisambuguatedOrgsWithIncorrectPopularity() {
5050
assertEquals(1, results.size());
5151
Pair<Long, Integer> pair = results.get(0);
5252
assertEquals(1, pair.getLeft().longValue());
53-
assertEquals(48, pair.getRight().intValue());
53+
assertEquals(50, pair.getRight().intValue());
5454
}
5555

5656
@Test

orcid-persistence/src/test/java/org/orcid/persistence/dao/ProfileDaoTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ public void testfindById() {
104104
public void testFindAll() {
105105
List<ProfileEntity> all = profileDao.getAll();
106106
assertNotNull(all);
107-
assertEquals(22, all.size());
107+
assertEquals(23, all.size());
108108
Long count = profileDao.countAll();
109-
assertEquals(Long.valueOf(22), count);
109+
assertEquals(Long.valueOf(23), count);
110110
}
111111

112112
@Test
@@ -127,7 +127,7 @@ public void testInsert() throws DataSetException {
127127
assertEquals(profile.getDateCreated(), profile.getLastModified());
128128

129129
Long count = profileDao.countAll();
130-
assertEquals(Long.valueOf(23), count);
130+
assertEquals(Long.valueOf(24), count);
131131
profile = profileDao.find(newOrcid);
132132

133133
assertNotNull(profile);
@@ -151,7 +151,7 @@ public void testInsertWithPrimaryInstitutions() throws DataSetException {
151151
assertNotNull(profile.getLastModified());
152152

153153
Long count = profileDao.countAll();
154-
assertEquals(Long.valueOf(23), count);
154+
assertEquals(Long.valueOf(24), count);
155155
profile = profileDao.find(newOrcid);
156156

157157
assertNotNull(profile);
@@ -177,7 +177,7 @@ public void testInsertWithInstitutionDepartments() throws DataSetException {
177177
assertNotNull(retrievedProfile.getLastModified());
178178

179179
Long count = profileDao.countAll();
180-
assertEquals(Long.valueOf(23), count);
180+
assertEquals(Long.valueOf(24), count);
181181
}
182182

183183
@Test
@@ -278,12 +278,12 @@ public void testUpdateIndexingStatus() {
278278
public void testGetConfirmedProfileCount() {
279279
String orcid = "4444-4444-4444-4446";
280280
Long confirmedProfileCount = profileDao.getConfirmedProfileCount();
281-
assertEquals(Long.valueOf(22), confirmedProfileCount);
281+
assertEquals(Long.valueOf(23), confirmedProfileCount);
282282
ProfileEntity profileEntity = profileDao.find(orcid);
283283
profileEntity.setCompletedDate(null);
284284
profileDao.persist(profileEntity);
285285
confirmedProfileCount = profileDao.getConfirmedProfileCount();
286-
assertEquals(Long.valueOf(21), confirmedProfileCount);
286+
assertEquals(Long.valueOf(22), confirmedProfileCount);
287287
}
288288

289289
@Test

orcid-test/src/main/resources/data/OrgAffiliationEntityData.xml

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1142,4 +1142,102 @@
11421142
visibility="PRIVATE"
11431143
client_source_id="APP-5555555555555555"
11441144
/>
1145-
</dataset>
1145+
1146+
<org_affiliation_relation
1147+
id="1007"
1148+
org_id="2"
1149+
orcid="0000-0000-0000-0008"
1150+
org_affiliation_relation_role="SERVICE"
1151+
org_affiliation_relation_title="PUBLIC"
1152+
department="PUBLIC Department"
1153+
date_created="2023-01-05 15:31:00.00"
1154+
last_modified="2023-01-05 15:31:00.00"
1155+
start_year="2023"
1156+
start_month="01"
1157+
start_day="05"
1158+
end_year="2030"
1159+
end_month="01"
1160+
end_day="01"
1161+
visibility="PUBLIC"
1162+
client_source_id="APP-5555555555555555"
1163+
display_index="1"
1164+
/>
1165+
1166+
<org_affiliation_relation
1167+
id="1008"
1168+
org_id="2"
1169+
orcid="0000-0000-0000-0008"
1170+
org_affiliation_relation_role="MEMBERSHIP"
1171+
org_affiliation_relation_title="PUBLIC"
1172+
department="PUBLIC Department"
1173+
date_created="2023-01-04 15:31:00.00"
1174+
last_modified="2023-01-04 15:31:00.00"
1175+
start_year="2023"
1176+
start_month="01"
1177+
start_day="04"
1178+
end_year="2030"
1179+
end_month="01"
1180+
end_day="01"
1181+
visibility="PUBLIC"
1182+
client_source_id="APP-5555555555555555"
1183+
display_index="1"
1184+
/>
1185+
1186+
<org_affiliation_relation
1187+
id="1009"
1188+
org_id="2"
1189+
orcid="0000-0000-0000-0008"
1190+
org_affiliation_relation_role="INVITED_POSITION"
1191+
org_affiliation_relation_title="PUBLIC"
1192+
department="PUBLIC Department"
1193+
date_created="2023-01-03 15:31:00.00"
1194+
last_modified="2023-01-03 15:31:00.00"
1195+
start_year="2023"
1196+
start_month="01"
1197+
start_day="03"
1198+
end_year="2030"
1199+
end_month="01"
1200+
end_day="01"
1201+
visibility="PUBLIC"
1202+
client_source_id="APP-5555555555555555"
1203+
display_index="1"
1204+
/>
1205+
1206+
<org_affiliation_relation
1207+
id="1010"
1208+
org_id="1"
1209+
orcid="0000-0000-0000-0008"
1210+
org_affiliation_relation_role="MEMBERSHIP"
1211+
org_affiliation_relation_title="PUBLIC"
1212+
department="PUBLIC Department"
1213+
date_created="2023-01-02 15:31:00.00"
1214+
last_modified="2023-01-02 15:31:00.00"
1215+
start_year="2023"
1216+
start_month="01"
1217+
start_day="02"
1218+
end_year="2030"
1219+
end_month="01"
1220+
end_day="01"
1221+
visibility="PUBLIC"
1222+
client_source_id="APP-5555555555555555"
1223+
/>
1224+
1225+
<org_affiliation_relation
1226+
id="1011"
1227+
org_id="1"
1228+
orcid="0000-0000-0000-0008"
1229+
org_affiliation_relation_role="INVITED_POSITION"
1230+
org_affiliation_relation_title="PUBLIC"
1231+
department="SELF PUBLIC Department"
1232+
date_created="2023-01-01 15:31:00.00"
1233+
last_modified="2023-01-01 15:31:00.00"
1234+
start_year="2023"
1235+
start_month="01"
1236+
start_day="01"
1237+
end_year="2030"
1238+
end_month="01"
1239+
end_day="01"
1240+
visibility="PUBLIC"
1241+
source_id="0000-0000-0000-0003"
1242+
/>
1243+
</dataset>

orcid-test/src/main/resources/data/ProfileEntityData.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,26 @@
435435
using_2fa="true"
436436
/>
437437

438+
<profile
439+
orcid="0000-0000-0000-0008"
440+
creation_method="API"
441+
completed_date="2023-03-29 15:31:00.00"
442+
date_created="2023-03-29 15:31:00.00"
443+
submission_date="2023-03-29 15:31:00.00"
444+
last_indexed_date="2023-03-29 15:31:00.00"
445+
last_modified="2023-03-29 15:31:00.00"
446+
is_selectable_sponsor="false"
447+
encrypted_password="e9adO9I4UpBwqI5tGR+qDodvAZ7mlcISn+T+kyqXPf2Z6PPevg7JijqYr6KGO8VOskOYqVOEK2FEDwebxWKGDrV/TQ9gRfKWZlzxssxsOnA="
448+
activities_visibility_default="PUBLIC"
449+
indexing_status="DONE"
450+
orcid_type="USER"
451+
claimed="true"
452+
reviewed="true"
453+
record_locked="false"
454+
using_2fa="false"
455+
secret_for_2fa="secret"
456+
/>
457+
438458
<granted_authority
439459
authority="USER_ROLE"
440460
orcid="4444-4444-4444-4441"
@@ -496,6 +516,11 @@
496516
orcid="0000-0000-0000-0007"
497517
/>
498518

519+
<granted_authority
520+
authority="USER_ROLE"
521+
orcid="0000-0000-0000-0008"
522+
/>
523+
499524
<external_identifier
500525
id="1"
501526
external_id_reference="d3clan"
@@ -2247,4 +2272,4 @@
22472272
last_modified="2020-01-01 15:00:00.00"
22482273
date_created="2020-01-01 15:00:00.00"
22492274
/>
2250-
</dataset>
2275+
</dataset>

orcid-test/src/main/resources/data/RecordNameEntityData.xml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,5 +207,16 @@
207207
given_names="Given names"
208208
family_name="Family name"
209209
visibility="PRIVATE"
210-
/>
211-
</dataset>
210+
/>
211+
212+
<record_name
213+
id="19"
214+
date_created="2023-01-01 00:00:00.00"
215+
last_modified="2023-01-01 00:00:00.00"
216+
orcid="0000-0000-0000-0008"
217+
credit_name="Credit Name"
218+
given_names="Given Names"
219+
family_name="Family Name"
220+
visibility="PUBLIC"
221+
/>
222+
</dataset>

orcid-web/src/main/java/org/orcid/frontend/web/controllers/PublicRecordController.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package org.orcid.frontend.web.controllers;
22

3-
import com.fasterxml.jackson.databind.ser.FilterProvider;
4-
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
5-
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
63
import org.orcid.core.exception.DeactivatedException;
74
import org.orcid.core.exception.LockedException;
85
import org.orcid.core.exception.OrcidDeprecatedException;
@@ -69,7 +66,6 @@
6966
import org.orcid.pojo.summary.ExternalIdentifiersSummary;
7067
import org.orcid.pojo.summary.RecordSummary;
7168
import org.orcid.utils.DateUtils;
72-
import org.springframework.http.converter.json.MappingJacksonValue;
7369
import org.springframework.stereotype.Controller;
7470
import org.springframework.web.bind.annotation.PathVariable;
7571
import org.springframework.web.bind.annotation.RequestMapping;
@@ -81,6 +77,8 @@
8177
import java.text.SimpleDateFormat;
8278
import java.util.ArrayList;
8379
import java.util.Arrays;
80+
import java.util.Collections;
81+
import java.util.Comparator;
8482
import java.util.GregorianCalendar;
8583
import java.util.Iterator;
8684
import java.util.List;
@@ -189,7 +187,7 @@ PublicRecord getPublicRecord(@PathVariable("orcid") String orcid) {
189187
} catch (OrcidDeprecatedException e) {
190188
isDeprecated = true;
191189
} catch (OrcidNoResultException e) {
192-
return publicRecord;
190+
return publicRecord;
193191
}
194192

195193
publicRecord = getRecord(orcid);
@@ -355,7 +353,7 @@ PublicRecord getRecord(String orcid) {
355353
return recordSummary;
356354
} else {
357355
recordSummary = getSummary(orcid);
358-
recordSummary.setStatus("active");
356+
recordSummary.setStatus("active");
359357
return recordSummary;
360358
}
361359
}
@@ -393,8 +391,9 @@ RecordSummary getSummary(String orcid) {
393391

394392
List<AffiliationSummary> employmentAffiliations = new ArrayList<>();
395393

396-
if (groupedEmployments.size() > 0) {
394+
sortAffiliationsByCreatedDate(groupedEmployments);
397395

396+
if (groupedEmployments.size() > 0) {
398397
Stream<AffiliationGroupForm> employmentsList = groupedEmployments.stream().limit(3);
399398
employmentsList.forEach(e -> employmentAffiliations.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, "employment")));
400399
}
@@ -486,15 +485,16 @@ RecordSummary getSummary(String orcid) {
486485
private List<AffiliationSummary> retrieveProfessionalActivities(AffiliationGroupContainer groupedAffiliations, String orcid) {
487486
List<AffiliationSummary> professionalActivities = new ArrayList<>();
488487

489-
List<AffiliationGroupForm> membershipGroupedAffiliations = groupedAffiliations.getAffiliationGroups().get(AffiliationType.MEMBERSHIP);
490-
List<AffiliationGroupForm> serviceGroupedAffiliations = groupedAffiliations.getAffiliationGroups().get(AffiliationType.SERVICE);
491-
List<AffiliationGroupForm> invitedPositionGroupedAffiliations = groupedAffiliations.getAffiliationGroups().get(AffiliationType.INVITED_POSITION);
492-
List<AffiliationGroupForm> distinctionGroupedAffiliations = groupedAffiliations.getAffiliationGroups().get(AffiliationType.DISTINCTION);
488+
List<AffiliationGroupForm> affiliationGroupForms = new ArrayList<>();
489+
490+
affiliationGroupForms.addAll(groupedAffiliations.getAffiliationGroups().get(AffiliationType.MEMBERSHIP));
491+
affiliationGroupForms.addAll(groupedAffiliations.getAffiliationGroups().get(AffiliationType.SERVICE));
492+
affiliationGroupForms.addAll(groupedAffiliations.getAffiliationGroups().get(AffiliationType.INVITED_POSITION));
493+
affiliationGroupForms.addAll(groupedAffiliations.getAffiliationGroups().get(AffiliationType.DISTINCTION));
493494

494-
membershipGroupedAffiliations.forEach(e -> professionalActivities.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, "membership")));
495-
serviceGroupedAffiliations.forEach(e -> professionalActivities.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, "service")));
496-
invitedPositionGroupedAffiliations.forEach(e -> professionalActivities.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, "invited-position")));
497-
distinctionGroupedAffiliations.forEach(e -> professionalActivities.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, "distinction")));
495+
sortAffiliationsByCreatedDate(affiliationGroupForms);
496+
497+
affiliationGroupForms.forEach(e -> professionalActivities.add(AffiliationSummary.valueOf(e.getDefaultAffiliation(), orcid, e.getAffiliationType().value())));
498498

499499
return professionalActivities;
500500
}
@@ -508,4 +508,9 @@ private String formatDate(XMLGregorianCalendar xmlGregorianCalendar) {
508508
private Long getLastModifiedTime(String orcid) {
509509
return profileEntityManager.getLastModified(orcid);
510510
}
511+
512+
private void sortAffiliationsByCreatedDate(List<AffiliationGroupForm> affiliationGroupForms) {
513+
affiliationGroupForms.sort(Comparator.comparing(a -> a.getDefaultAffiliation().getCreatedDate().toJavaDate()));
514+
Collections.reverse(affiliationGroupForms);
515+
}
511516
}

orcid-web/src/test/java/org/orcid/frontend/web/controllers/PublicRecordControllerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,14 @@ public void testGetRecordSummaryPrivateName() {
222222

223223
assertNull(record.getName());
224224
}
225+
226+
@Test
227+
public void testGetRecordSummaryProfessionalActivitiesSortedByCreationDate() {
228+
RecordSummary record = publicRecordController.getSummaryRecord("0000-0000-0000-0008");
229+
230+
assertEquals(5, record.getProfessionalActivitiesCount());
231+
assertEquals("2023-01-05", record.getProfessionalActivities().get(0).getStartDate());
232+
assertEquals("2023-01-04", record.getProfessionalActivities().get(1).getStartDate());
233+
assertEquals("2023-01-03", record.getProfessionalActivities().get(2).getStartDate());
234+
}
225235
}

0 commit comments

Comments
 (0)