Skip to content

Commit 17b6687

Browse files
committed
Small Update
1 parent 7b68713 commit 17b6687

4 files changed

Lines changed: 68 additions & 1 deletion

File tree

src/main/java/material/DestinyAPI.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ public static boolean hasOauthManager() {
105105
}
106106

107107

108-
public static BungieUser getUser(String id) { return new BungieUser(id); }
108+
public static BungieUser getUser(String id) {
109+
return new BungieUser(id);
110+
}
109111

110112
/**
111113
* Get a BungieUser from a Steam ID

src/main/java/material/stats/activities/Activity.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ public Activity(String activityId) {
3939
this.activityId = activityId;
4040
}
4141

42+
public Activity(String activityId, Date dateOccured) {
43+
super("https://stats.bungie.net/Platform/Destiny2/Stats/PostGameCarnageReport/" + activityId + "/", source -> {
44+
return source.getAsJsonObject("Response");
45+
});
46+
this.activityId = activityId;
47+
this.time = dateOccured;
48+
}
49+
4250
/**
4351
* Initialize an activity with more information which could improve load times
4452
*/

src/main/java/material/stats/activities/ActivityHistoryReview.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import material.user.BungieUser;
1717
import material.user.DestinyCharacter;
1818
import utils.HttpUtils;
19+
import utils.StringUtils;
1920

2021
import java.net.ConnectException;
2122
import 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
*/

src/main/java/utils/StringUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package utils;
1010

1111
import java.text.DateFormat;
12+
import java.text.DecimalFormat;
1213
import java.text.ParseException;
1314
import java.text.SimpleDateFormat;
1415
import java.util.Date;
@@ -36,4 +37,9 @@ public static Date valueOfZTime(String zuluTimeInString) {
3637
}
3738
return null;
3839
}
40+
41+
public static double getDaysSinceTime(Date date) {
42+
DecimalFormat df = new DecimalFormat("0.##");
43+
return Double.parseDouble(df.format((new Date().getTime() - date.getTime()) / 1000.0 / 60.0 / 60.0 / 24.0));
44+
}
3945
}

0 commit comments

Comments
 (0)