1616import material .user .BungieUser ;
1717import material .user .DestinyCharacter ;
1818import utils .HttpUtils ;
19+ import utils .StringUtils ;
1920
2021import java .net .ConnectException ;
2122import java .util .*;
@@ -25,6 +26,56 @@ public class ActivityHistoryReview {
2526
2627 private HttpUtils httpUtils = new HttpUtils ();
2728
29+ public LinkedHashMap <String , Activity > getMostUnrecentAttempts (Clan clan , ActivityIdentifier activityIdentifier ) {
30+ HashMap <String , Activity > map = new HashMap <>();
31+ HashMap <String , Double > doubleMap = new HashMap <>();
32+ LinkedHashMap <String , Activity > toReturn = new LinkedHashMap <>();
33+
34+ for (BungieUser bungieUser : clan .getMembers ()) {
35+ for (DestinyCharacter destinyCharacter : bungieUser .getCharacters ()) {
36+ for (int i = 0 ; i < 25 ; i ++) {
37+ JsonObject jo = httpUtils .urlRequestGET ("https://www.bungie.net/Platform/Destiny2/" + bungieUser .getMembershipType () + "/Account/" + bungieUser .getBungieMembershipID () + "/Character/" + destinyCharacter .getCharacterID () + "/Stats/Activities/?page=" + i + "&count=250&mode=" + activityIdentifier .getMode ().getBungieValue ());
38+
39+ if (jo == null || !jo .has ("Response" ) || !jo .getAsJsonObject ("Response" ).has ("activities" )) {
40+ break ;
41+ }
42+
43+ JsonArray ja = jo .getAsJsonObject ("Response" ).getAsJsonArray ("activities" );
44+ JsonObject jo2 = ja .get (0 ).getAsJsonObject ();
45+ Date date = StringUtils .valueOfZTime (jo2 .get ("period" ).getAsString ());
46+
47+ if (map .containsKey (bungieUser .getBungieMembershipID ())) {
48+ if (StringUtils .getDaysSinceTime (date ) < StringUtils .getDaysSinceTime (map .get (bungieUser .getBungieMembershipID ()).getDatePlayed ())) {
49+ map .remove (bungieUser .getBungieMembershipID ());
50+ map .put (bungieUser .getBungieMembershipID (), new Activity (jo2 .getAsJsonObject ("activityDetails" ).get ("instanceId" ).getAsString (), date ));
51+ }
52+ } else {
53+ map .put (bungieUser .getBungieMembershipID (), new Activity (jo2 .getAsJsonObject ("activityDetails" ).get ("instanceId" ).getAsString (), date ));
54+ }
55+ }
56+ }
57+
58+ if (map .containsKey (bungieUser .getBungieMembershipID ())) {
59+ doubleMap .put (bungieUser .getBungieMembershipID (), StringUtils .getDaysSinceTime (map .get (bungieUser .getBungieMembershipID ()).getDatePlayed ()));
60+ }
61+ }
62+
63+ List <Map .Entry <String , Double >> list = new LinkedList <>(doubleMap .entrySet ());
64+
65+ Collections .sort (list , new Comparator <>() {
66+ public int compare (Map .Entry <String , Double > o1 ,
67+ Map .Entry <String , Double > o2 ) {
68+ return (o2 .getValue ()).compareTo (o1 .getValue ());
69+ }
70+ });
71+
72+ for (Map .Entry <String , Double > map2 : list ) {
73+ toReturn .put (map2 .getKey (), map .get (map2 .getKey ()));
74+ }
75+
76+ return toReturn ;
77+ }
78+
2879 /**
2980 * Takes a very long time
3081 */
0 commit comments