Skip to content

Commit

Permalink
a
Browse files Browse the repository at this point in the history
  • Loading branch information
jfkonecn committed Sep 13, 2024
1 parent a7144bf commit bf9b601
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 115 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -187,19 +187,6 @@ public void moveTokenStatsToS3() throws IOException {
log.info("Finished the cronjob to move token stats to s3.");
}

private void calculateUsageSummary(UsageSummary usageSummary, String key, int count, String time) {
// Deal with year summary
usageSummary.getYear().put(key, usageSummary.getYear().getOrDefault(key, Long.valueOf(0)) + count);
// Deal with month summary
if (!usageSummary.getMonth().containsKey(time)) {
usageSummary.getMonth().put(time, new JSONObject());
}
if (!usageSummary.getMonth().get(time).containsKey(key)) {
usageSummary.getMonth().get(time).put(key, new Integer(0));
}
usageSummary.getMonth().get(time).put(key, (Integer) usageSummary.getMonth().get(time).get(key) + (Integer) count);
}

/**
* {@code GET /check-trial-accounts} : Check the status of trial accounts
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,35 +119,31 @@ private Map<String, JSONObject> getYearSummaries(String yearFilePrefix)
}


public Map<String, Map<String, Map<String, JSONObject>>> getUserJson() throws UnsupportedEncodingException, IOException, ParseException {
public Map<String, UsageSummary> getUserJson() throws UnsupportedEncodingException, IOException, ParseException {
Map<String, JSONObject> months = getMonthSummaries(MONTH_USERS_USAGE_SUMMARY_FILE_PREFIX);
Map<String, JSONObject> years = getYearSummaries(YEAR_USERS_USAGE_SUMMARY_FILE_PREFIX);
Map<String, Map<String, Map<String, JSONObject>>> userData = new HashMap<>();
Map<String, UsageSummary> userData = new HashMap<>();
Set<String> users = years.entrySet().iterator().next().getValue().keySet();
String yearKey = "year";
String monthKey = "month";
String dayKey = "day";
for (String user : users) {
Map<String, Map<String, JSONObject>> userMap = new HashMap<>();
userMap.put(yearKey, new HashMap<>());
userMap.put(monthKey, new HashMap<>());
userMap.put(dayKey, new HashMap<>());
userData.put(user, userMap);
userData.put(user, new UsageSummary());
}
for (Map.Entry<String, JSONObject> yearEntry : years.entrySet()) {
String year = yearEntry.getKey();
for (Object rawUserEntry : yearEntry.getValue().entrySet()) {
Map.Entry<String, JSONObject> userEntry = (Map.Entry<String, JSONObject>)rawUserEntry;
String user = userEntry.getKey();
Map<String, Map<String, JSONObject>> userMap = userData.get(user);
Map<String, JSONObject> yearMap = userMap.get(yearKey);
Map<String, JSONObject> monthMap = userMap.get(monthKey);
UsageSummary userMap = userData.get(user);
Map<String, Map<String, Long>> yearMap = userMap.getYear();
Map<String, Map<String, Long>> monthMap = userMap.getMonth();
yearMap.put(year, (JSONObject)userEntry.getValue().get(yearKey));
JSONObject monthJson = (JSONObject)userEntry.getValue().get(monthKey);
for (Object rawMonthEntry : monthJson.entrySet()) {
Map.Entry<String, JSONObject> monthEntry = (Map.Entry<String, JSONObject>)rawMonthEntry;
String month = monthEntry.getKey();
monthMap.put(month, (JSONObject)monthEntry.getValue());
monthMap.put(month, monthEntry.getValue());
}

}
Expand All @@ -156,51 +152,45 @@ public Map<String, Map<String, Map<String, JSONObject>>> getUserJson() throws Un
for (Object rawUserEntry : monthEntry.getValue().entrySet()) {
Map.Entry<String, JSONObject> userEntry = (Map.Entry<String, JSONObject>)rawUserEntry;
String user = userEntry.getKey();
Map<String, Map<String, JSONObject>> userMap = userData.get(user);
Map<String, JSONObject> dayMap = userMap.get(dayKey);
UsageSummary userMap = userData.get(user);
Map<String, Map<String, Long>> dayMap = userMap.getDay();
JSONObject dayJson = (JSONObject)userEntry.getValue().get(dayKey);
for (Object rawDayEntry : dayJson.entrySet()) {
Map.Entry<String, JSONObject> dayEntry = (Map.Entry<String, JSONObject>)rawDayEntry;
String day = dayEntry.getKey();
dayMap.put(day, (JSONObject)dayEntry.getValue());
dayMap.put(day, dayEntry.getValue());
}
}
}
return userData;
}

public Map<String, Map<String, JSONObject>> getResourceJson() throws UnsupportedEncodingException, IOException, ParseException {
public UsageSummary getResourceJson() throws UnsupportedEncodingException, IOException, ParseException {
Map<String, JSONObject> months = getMonthSummaries(MONTH_RESOURCES_USAGE_SUMMARY_FILE_PREFIX);
Map<String, JSONObject> years = getYearSummaries(YEAR_RESOURCES_USAGE_SUMMARY_FILE_PREFIX);
Map<String, Map<String, JSONObject>> resourceData = new HashMap<>();
Map<String, JSONObject> years = getYearSummaries(YEAR_RESOURCES_USAGE_SUMMARY_FILE_PREFIX); UsageSummary resourceData = new UsageSummary();
String yearKey = "year";
String monthKey = "month";
String dayKey = "day";

resourceData.put(yearKey, new HashMap<>());
resourceData.put(monthKey, new HashMap<>());
resourceData.put(dayKey, new HashMap<>());

for (Map.Entry<String, JSONObject> yearEntry : years.entrySet()) {
String year = yearEntry.getKey();
JSONObject yearJson = yearEntry.getValue();
Map<String, JSONObject> yearMap = resourceData.get(yearKey);
Map<String, JSONObject> monthMap = resourceData.get(monthKey);
Map<String, Map<String, Long>> yearMap = resourceData.getYear();
Map<String, Map<String, Long>> monthMap = resourceData.getMonth();
yearMap.put(year, (JSONObject)yearEntry.getValue().get(yearKey));
JSONObject monthJson = (JSONObject)yearEntry.getValue().get(monthKey);
for (Object rawMonthEntry : monthJson.entrySet()) {
Map.Entry<String, JSONObject> monthEntry = (Map.Entry<String, JSONObject>)rawMonthEntry;
String month = monthEntry.getKey();
monthMap.put(month, (JSONObject)monthEntry.getValue());
monthMap.put(month, monthEntry.getValue());
}
}
for (Map.Entry<String, JSONObject> monthEntry : months.entrySet()) {
Map<String, JSONObject> dayMap = resourceData.get(dayKey);
Map<String, Map<String, Long>> dayMap = resourceData.getDay();
JSONObject dayJson = (JSONObject)monthEntry.getValue().get(dayKey);
for (Object rawDayEntry : dayJson.entrySet()) {
Map.Entry<String, JSONObject> dayEntry = (Map.Entry<String, JSONObject>)rawDayEntry;
String day = dayEntry.getKey();
dayMap.put(day, (JSONObject)dayEntry.getValue());
dayMap.put(day, dayEntry.getValue());
}
}
return resourceData;
Expand All @@ -216,62 +206,27 @@ public Map<String, Map<String, JSONObject>> getResourceJson() throws Unsupported
@GetMapping("/usage/users/{userId}")
public ResponseEntity<UserUsage> userUsageGet(@PathVariable @NotNull Long userId)
throws IOException, ParseException {
HttpStatus status = HttpStatus.OK;

if (userId != null) {
int year = TimeUtil.getCurrentNYTime(clock).getYear();
JSONObject yearSummary = requestData(YEAR_USERS_USAGE_SUMMARY_FILE_PREFIX + year + FileExtension.JSON_FILE.getExtension());
Map<String, JSONObject> monthSummaries = new HashMap<>();
int monthsBack = 0;
JSONObject monthSummary;
do {
String month = TimeUtil.getCurrentNYTime(clock).minus(monthsBack, ChronoUnit.MONTHS).format(DateTimeFormatter.ofPattern("yyyy-MM"));
monthSummary = requestData(MONTH_USERS_USAGE_SUMMARY_FILE_PREFIX + month + FileExtension.JSON_FILE.getExtension());
if (monthSummary != null) {
monthSummaries.put(month, monthSummary);
}
monthsBack++;
} while (monthsBack < 12);

Map<String, UsageSummary> userSummaries = getUserJson();

Optional<User> user = userService.getUserById(userId);
String email = user.map(User::getEmail).orElse(null);

if (yearSummary != null){
UsageSummary usageSummary = new UsageSummary();
if (yearSummary.containsKey(email)) {
JSONObject yearUsageObject = (JSONObject) yearSummary.get(email);
Gson gson = new Gson();
usageSummary = gson.fromJson(yearUsageObject.toString(), UsageSummary.class);
if (!monthSummaries.isEmpty()) {
Map<String, JSONObject> dayUsage = new HashMap<>();
Map<String, JSONObject> monthUsage = new HashMap<>();
for (Map.Entry<String, JSONObject> entry : monthSummaries.entrySet()) {
if (entry.getValue().containsKey(email)) {
JSONObject userUsageObject = (JSONObject) entry.getValue().get(email);
JSONObject dayUsageObject = (JSONObject) userUsageObject.get("day");
dayUsageObject.forEach((day, summary) -> dayUsage.put((String) day, (JSONObject) summary));
JSONObject monthUsageObject = (JSONObject) userUsageObject.get("month");
monthUsage.put((String) entry.getKey(), monthUsageObject);
}
}
usageSummary.setDay(dayUsage);
usageSummary.setMonth(monthUsage);
}
}

UserUsage userUsage = new UserUsage();
userUsage.setUserFirstName(user.get().getFirstName());
userUsage.setUserLastName(user.get().getLastName());
userUsage.setUserEmail(email);
userUsage.setLicenseType(Objects.nonNull(userMapper.userToUserDTO(user.get()).getLicenseType()) ? userMapper.userToUserDTO(user.get()).getLicenseType().getName() : null);
userUsage.setJobTitle(userMapper.userToUserDTO(user.get()).getJobTitle());
userUsage.setCompany(userMapper.userToUserDTO(user.get()).getCompanyName());
userUsage.setSummary(usageSummary);
return new ResponseEntity<UserUsage>(userUsage, status);
}
UsageSummary usageSummary = userSummaries.getOrDefault(email, new UsageSummary());

UserUsage userUsage = new UserUsage();
userUsage.setUserFirstName(user.get().getFirstName());
userUsage.setUserLastName(user.get().getLastName());
userUsage.setUserEmail(email);
userUsage.setLicenseType(Objects.nonNull(userMapper.userToUserDTO(user.get()).getLicenseType()) ? userMapper.userToUserDTO(user.get()).getLicenseType().getName() : null);
userUsage.setJobTitle(userMapper.userToUserDTO(user.get()).getJobTitle());
userUsage.setCompany(userMapper.userToUserDTO(user.get()).getCompanyName());
userUsage.setSummary(usageSummary);
return new ResponseEntity<UserUsage>(userUsage, HttpStatus.OK);
}

return new ResponseEntity<UserUsage>(new UserUsage(), status);
return new ResponseEntity<UserUsage>(new UserUsage(), HttpStatus.OK);
}

/**
Expand Down Expand Up @@ -330,7 +285,8 @@ public ResponseEntity<List<UserOverviewUsage>> userOverviewUsageGet(@RequestPara
String noPrivateEndpoint = "";
long noPrivateMaxUsage = 0;
long totalUsage = 0;
Map<String, Long> summary = usageSummary.getYear();
//Map<String, Long> summary = usageSummary.getYear();
Map<String, Long> summary = new HashMap<>();
for (String resource : summary.keySet()) {
totalUsage += summary.get(resource);
if (summary.get(resource) > maxUsage) {
Expand Down Expand Up @@ -392,19 +348,9 @@ public ResponseEntity<List<UserOverviewUsage>> userOverviewUsageGet(@RequestPara
@GetMapping("/usage/summary/resources")
public ResponseEntity<UsageSummary> resourceUsageGet()
throws IOException, ParseException {
HttpStatus status = HttpStatus.OK;
getUserJson();
getResourceJson();

int year = TimeUtil.getCurrentNYTime(clock).getYear();
JSONObject jsonObject = requestData(YEAR_RESOURCES_USAGE_SUMMARY_FILE_PREFIX + year + FileExtension.JSON_FILE.getExtension());

Gson gson = new Gson();
UsageSummary summary = new UsageSummary();
if (jsonObject != null) {
summary = gson.fromJson(jsonObject.toString(), UsageSummary.class);
}
return new ResponseEntity<UsageSummary>(summary, status);
UsageSummary summary = getResourceJson();
return new ResponseEntity<UsageSummary>(summary, HttpStatus.OK);
}

/**
Expand Down Expand Up @@ -442,9 +388,9 @@ public ResponseEntity<UsageSummary> resourceDetailGet(@RequestParam String endpo
yearUsage += monthUsage;
}
}
resourceDetail.getYear().put(user.toString(), yearUsage);
//resourceDetail.getYear().put(user.toString(), yearUsage);
});
resourceDetail.setMonth(monthResourceDetail);
//resourceDetail.setMonth(monthResourceDetail);
return new ResponseEntity<UsageSummary>(resourceDetail, status);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,31 @@
*/

public class UsageSummary {
private Map<String, JSONObject> day = new HashMap<>();
private Map<String, JSONObject> month = new HashMap<>();
private Map<String, Long> year = new HashMap<>();
private Map<String, Map<String, Long>> day = new HashMap<>();
private Map<String, Map<String, Long>> month = new HashMap<>();
private Map<String, Map<String, Long>> year = new HashMap<>();

public Map<String, JSONObject> getDay() {
public Map<String, Map<String, Long>> getDay() {
return day;
}

public void setDay(Map<String, JSONObject> day) {
public void setDay(Map<String, Map<String, Long>> day) {
this.day = day;
}

public Map<String, JSONObject> getMonth() {
public Map<String, Map<String, Long>> getMonth() {
return month;
}

public void setMonth(Map<String, JSONObject> month) {
public void setMonth(Map<String, Map<String, Long>> month) {
this.month = month;
}

public Map<String, Long> getYear() {
public Map<String, Map<String, Long>> getYear() {
return year;
}

public void setYear(Map<String, Long> year) {
public void setYear(Map<String, Map<String, Long>> year) {
this.year = year;
}


}

0 comments on commit bf9b601

Please sign in to comment.