Skip to content

Commit

Permalink
Refactor utility and DTO to common package
Browse files Browse the repository at this point in the history
Moved utility and DTO classes to 'common' package for proper structuring and better maintainability. This reflects in all the classes references were updated accordingly. This maintains a consistent and clean structure, aiding in easy navigation and understanding of the package hierarchy and its purpose.
  • Loading branch information
Thoroldvix committed Jul 16, 2023
1 parent a24fac5 commit 9e44dc4
Show file tree
Hide file tree
Showing 42 changed files with 75 additions and 65 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.thoroldvix.economatic.dto;
package com.thoroldvix.economatic.common.dto;

import lombok.Builder;
import org.springframework.data.domain.Page;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.thoroldvix.economatic.dto;
package com.thoroldvix.economatic.common.dto;

import com.thoroldvix.economatic.error.InvalidTimeRangeException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.thoroldvix.economatic.util;
package com.thoroldvix.economatic.common.util;


import com.thoroldvix.economatic.error.NotFoundException;

import static com.thoroldvix.economatic.util.ValidationUtils.isNonEmptyString;
import static com.thoroldvix.economatic.common.util.ValidationUtils.isNonEmptyString;

public final class StringEnumConverter {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.thoroldvix.economatic.util;
package com.thoroldvix.economatic.common.util;

import java.time.Duration;
import java.time.Instant;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.thoroldvix.economatic.util;
package com.thoroldvix.economatic.common.util;

import java.util.Collection;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import java.util.List;
import java.util.Objects;

import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;


@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.goldprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.goldprice;

import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import com.thoroldvix.economatic.server.Server;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
Expand All @@ -10,7 +10,7 @@

import java.util.List;

import static com.thoroldvix.economatic.util.ValidationUtils.checkNullAndGet;
import static com.thoroldvix.economatic.common.util.ValidationUtils.checkNullAndGet;

@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
interface GoldPriceMapper {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.thoroldvix.economatic.goldprice;

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.goldprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import jakarta.validation.Valid;
import org.springframework.data.domain.Pageable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.thoroldvix.economatic.goldprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.common.util.StringEnumConverter;
import com.thoroldvix.economatic.search.SearchRequest;
import com.thoroldvix.economatic.search.SpecificationBuilder;
import com.thoroldvix.economatic.server.Faction;
import com.thoroldvix.economatic.server.Region;
import com.thoroldvix.economatic.server.ServerResponse;
import com.thoroldvix.economatic.server.ServerService;
import com.thoroldvix.economatic.util.StringEnumConverter;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.Cacheable;
Expand All @@ -23,9 +23,9 @@
import java.util.Set;
import java.util.stream.Collectors;

import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.error.ErrorMessages.*;
import static com.thoroldvix.economatic.server.ServerErrorMessages.*;
import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;
import static java.util.Objects.requireNonNull;

@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;

import static com.thoroldvix.economatic.util.Utils.elapsedTimeInMillis;
import static com.thoroldvix.economatic.common.util.Utils.elapsedTimeInMillis;

@Service
@RequiredArgsConstructor
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/thoroldvix/economatic/item/ItemMapper.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.thoroldvix.economatic.item;


import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.util.StringEnumConverter;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import com.thoroldvix.economatic.common.util.StringEnumConverter;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingConstants;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.thoroldvix.economatic.item;

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

import java.util.Optional;

import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.error.ErrorMessages.PAGEABLE_CANNOT_BE_NULL;
import static com.thoroldvix.economatic.error.ErrorMessages.SEARCH_REQUEST_CANNOT_BE_NULL;
import static com.thoroldvix.economatic.item.ItemErrorMessages.ITEM_IDENTIFIER_CANNOT_BE_NULL_OR_EMPTY;
import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;
import static java.util.Objects.requireNonNull;

@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.itemprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.itemprice;

import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import com.thoroldvix.economatic.item.Item;
import com.thoroldvix.economatic.server.Server;
import org.mapstruct.Mapper;
Expand All @@ -11,7 +11,7 @@

import java.util.List;

import static com.thoroldvix.economatic.util.ValidationUtils.checkNullAndGet;
import static com.thoroldvix.economatic.common.util.ValidationUtils.checkNullAndGet;


@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.thoroldvix.economatic.itemprice;

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.itemprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import jakarta.validation.Valid;
import org.springframework.data.domain.Pageable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.thoroldvix.economatic.itemprice;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.common.util.StringEnumConverter;
import com.thoroldvix.economatic.item.ItemResponse;
import com.thoroldvix.economatic.item.ItemService;
import com.thoroldvix.economatic.search.SearchRequest;
Expand All @@ -9,7 +10,6 @@
import com.thoroldvix.economatic.server.Region;
import com.thoroldvix.economatic.server.ServerResponse;
import com.thoroldvix.economatic.server.ServerService;
import com.thoroldvix.economatic.util.StringEnumConverter;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.Cacheable;
Expand All @@ -24,11 +24,11 @@
import java.util.Set;
import java.util.stream.Collectors;

import static com.thoroldvix.economatic.common.util.ValidationUtils.isCollectionEmpty;
import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.error.ErrorMessages.*;
import static com.thoroldvix.economatic.item.ItemErrorMessages.ITEM_IDENTIFIER_CANNOT_BE_NULL_OR_EMPTY;
import static com.thoroldvix.economatic.server.ServerErrorMessages.*;
import static com.thoroldvix.economatic.util.ValidationUtils.isCollectionEmpty;
import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;
import static java.util.Objects.requireNonNull;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

import static com.thoroldvix.economatic.util.Utils.elapsedTimeInMillis;
import static com.thoroldvix.economatic.common.util.Utils.elapsedTimeInMillis;


@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.population;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.population;

import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import com.thoroldvix.economatic.server.Server;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.thoroldvix.economatic.population;

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.thoroldvix.economatic.dto.PaginationInfo;
import com.thoroldvix.economatic.common.dto.PaginationInfo;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.thoroldvix.economatic.population;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.search.SearchRequest;
import jakarta.validation.Valid;
import org.springframework.data.domain.Pageable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.thoroldvix.economatic.population;

import com.thoroldvix.economatic.dto.TimeRange;
import com.thoroldvix.economatic.common.dto.TimeRange;
import com.thoroldvix.economatic.common.util.StringEnumConverter;
import com.thoroldvix.economatic.search.SearchRequest;
import com.thoroldvix.economatic.search.SpecificationBuilder;
import com.thoroldvix.economatic.server.Faction;
import com.thoroldvix.economatic.server.Region;
import com.thoroldvix.economatic.server.ServerResponse;
import com.thoroldvix.economatic.server.ServerService;
import com.thoroldvix.economatic.util.StringEnumConverter;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.Cacheable;
Expand All @@ -20,9 +20,9 @@
import java.util.List;
import java.util.Optional;

import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.error.ErrorMessages.*;
import static com.thoroldvix.economatic.server.ServerErrorMessages.*;
import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;
import static java.util.Objects.requireNonNull;

@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;

import static com.thoroldvix.economatic.util.Utils.elapsedTimeInMillis;
import static com.thoroldvix.economatic.common.util.Utils.elapsedTimeInMillis;

@RequiredArgsConstructor
@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import java.util.Map;
import java.util.Set;

import static com.thoroldvix.economatic.util.ValidationUtils.notLessThan;
import static com.thoroldvix.economatic.common.util.ValidationUtils.notLessThan;
import static java.util.Objects.requireNonNull;

@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.thoroldvix.economatic.recommendation;

import com.thoroldvix.economatic.common.util.ValidationUtils;
import com.thoroldvix.economatic.itemprice.ItemPriceRequest;
import com.thoroldvix.economatic.itemprice.ItemPriceResponse;
import com.thoroldvix.economatic.itemprice.ItemPriceService;
import com.thoroldvix.economatic.util.ValidationUtils;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -34,29 +34,38 @@ public Map<String, BigDecimal> getItemPriceScores(@Valid RecommendationRequest r
ItemPriceRequest itemPriceRequest = buildItemPriceRequest(request.itemList(), servers);

List<ItemPriceResponse> recentItemPrices = itemPriceServiceImpl.getRecentForItemListAndServers(itemPriceRequest, Pageable.unpaged()).prices();
return createScores(request.marketValue(), recentItemPrices, itemWeight);


return request.marketValue()
? createScoresForMarketValue(recentItemPrices, itemWeight)
: createScoresForMinBuyout(recentItemPrices, itemWeight);
}

private Map<String, BigDecimal> createScores(boolean marketValue, List<ItemPriceResponse> recentItemPrices, BigDecimal itemWeight) {
private Map<String, BigDecimal> createScoresForMarketValue(List<ItemPriceResponse> recentItemPrices, BigDecimal itemWeight) {

return recentItemPrices
.stream()
.collect(Collectors.toMap(ItemPriceResponse::server,
itemPrice -> calculateWeightedValue(determineType(marketValue, itemPrice), itemWeight, MAX_ITEM_PRICE_COPPER),
itemPrice -> calculateWeightedValue(itemPrice.marketValue(), itemWeight, MAX_ITEM_PRICE_COPPER),
BigDecimal::add)
);
}

private static long determineType(boolean marketValue, ItemPriceResponse itemPrice) {
return marketValue ? itemPrice.marketValue() : itemPrice.minBuyout();
private Map<String, BigDecimal> createScoresForMinBuyout(List<ItemPriceResponse> recentItemPrices, BigDecimal itemWeight) {

return recentItemPrices
.stream()
.collect(Collectors.toMap(ItemPriceResponse::server,
itemPrice -> calculateWeightedValue(itemPrice.minBuyout(), itemWeight, MAX_ITEM_PRICE_COPPER),
BigDecimal::add)
);
}

private void validateInputs(RecommendationRequest request, Set<String> servers) {
Objects.requireNonNull(request, "Recommendation request cannot be null");
ValidationUtils.notEmpty(servers, () -> new IllegalArgumentException("Servers cannot be null or empty"));
}


private static ItemPriceRequest buildItemPriceRequest(Set<String> itemList, Set<String> servers) {
return ItemPriceRequest.builder()
.itemList(itemList)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

import java.util.List;

import static com.thoroldvix.economatic.common.util.ValidationUtils.isNonEmptyString;
import static com.thoroldvix.economatic.common.util.ValidationUtils.notEmpty;
import static com.thoroldvix.economatic.error.ErrorMessages.SEARCH_CRITERIA_CANNOT_BE_NULL_OR_EMPTY;
import static com.thoroldvix.economatic.util.ValidationUtils.isNonEmptyString;
import static com.thoroldvix.economatic.util.ValidationUtils.notEmpty;


public class SpecificationBuilder {
Expand Down
Loading

0 comments on commit 9e44dc4

Please sign in to comment.