From d89bce26f0767a7e8f0c82b4f2680d8ca69c3073 Mon Sep 17 00:00:00 2001 From: elgekko Date: Wed, 3 May 2023 22:20:07 +0200 Subject: [PATCH] Data services refactored --- ...mpl.java => AssociateServiceImplImpl.java} | 54 +++++------------- .../user/lis/services/data/DataService.java | 9 +++ .../lis/services/data/DataServiceImpl.java | 52 +++++++++++++++++ .../lis/services/data/InvoiceServiceImpl.java | 41 +------------- .../lis/services/data/PartnerService.java | 2 + .../lis/services/data/PartnerServiceImpl.java | 46 ++------------- .../data/ProjectAssociateServiceImpl.java | 14 +---- .../lis/services/data/ProjectService.java | 2 - .../lis/services/data/ProjectServiceImpl.java | 56 +------------------ .../services/data/SupplierServiceImpl.java | 4 +- .../services/data/TreasuryServiceImpl.java | 44 +-------------- 11 files changed, 90 insertions(+), 234 deletions(-) rename lis-services/src/main/java/hu/user/lis/services/data/{AssociateServiceImpl.java => AssociateServiceImplImpl.java} (58%) create mode 100644 lis-services/src/main/java/hu/user/lis/services/data/DataService.java create mode 100644 lis-services/src/main/java/hu/user/lis/services/data/DataServiceImpl.java diff --git a/lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImplImpl.java similarity index 58% rename from lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImpl.java rename to lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImplImpl.java index 5127581..3b4237b 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/AssociateServiceImplImpl.java @@ -1,6 +1,5 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import hu.user.lis.db.Associate; import lombok.extern.log4j.Log4j2; @@ -9,13 +8,14 @@ import org.apache.commons.lang3.RandomUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; @Service @Log4j2 -public class AssociateServiceImpl implements AssociateService { +public class AssociateServiceImplImpl extends DataServiceImpl implements AssociateService { @Autowired ObjectMapper mapper; @Autowired @@ -60,45 +60,19 @@ public class AssociateServiceImpl implements AssociateService { String name = dataGeneratorService.faker().name().fullName(); String login = "user" + (i + 1); String password = "password"; - Associate entity = Associate.builder().active(true).id(id).name(name).login(login).password(password).build(); - result.add(entity); - } - return result; - } + Double monthlyCost = BigDecimal.valueOf(RandomUtils.nextDouble(300000, 1500000)) + .setScale(2, RoundingMode.CEILING).doubleValue(); - @Override - public Associate copy(Associate sourceEntity) { - Associate result = null; - try { - String json = toString(sourceEntity); - result = mapper.readValue(json, Associate.class); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - @Override - public String toString(Associate sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public Associate copy(Associate sourceEntity, String property, Object value) { - Associate result = copy(sourceEntity); - Field field = null; - try { - field = result.getClass().getDeclaredField(property); - field.setAccessible(true); - field.set(result, value); - } catch (Exception e) { - log.catching(e); + Associate entity = Associate.builder() + .active(true) + .id(id) + .name(name) + .login(login) + .password(password) + .monthlyCost(monthlyCost) + .build(); + result.add(entity); } return result; } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/DataService.java b/lis-services/src/main/java/hu/user/lis/services/data/DataService.java new file mode 100644 index 0000000..57ab0b1 --- /dev/null +++ b/lis-services/src/main/java/hu/user/lis/services/data/DataService.java @@ -0,0 +1,9 @@ +package hu.user.lis.services.data; + +public interface DataService { + T copy(T sourceEntity); + + T copy(T sourceEntity, String property, Object value); + + String toString(T sourceEntity); +} diff --git a/lis-services/src/main/java/hu/user/lis/services/data/DataServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/DataServiceImpl.java new file mode 100644 index 0000000..08c1d5d --- /dev/null +++ b/lis-services/src/main/java/hu/user/lis/services/data/DataServiceImpl.java @@ -0,0 +1,52 @@ +package hu.user.lis.services.data; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; + +import java.lang.reflect.Field; + +@Log4j2 +public class DataServiceImpl implements DataService { + @Autowired + ObjectMapper mapper; + + @Override + public T copy(T sourceEntity) { + T result = null; + try { + String json = toString(sourceEntity); + result = (T) mapper.readValue(json, sourceEntity.getClass()); + } catch (JsonProcessingException e) { + log.catching(e); + } + return result; + } + + @Override + public T copy(T sourceEntity, String property, Object value) { + T result = copy(sourceEntity); + Field field = null; + try { + field = result.getClass().getDeclaredField(property); + field.setAccessible(true); + field.set(result, value); + } catch (Exception e) { + log.catching(e); + } + return result; + } + + @Override + public String toString(T sourceEntity) { + String result = null; + try { + result = mapper.writeValueAsString(sourceEntity); + } catch (JsonProcessingException e) { + log.catching(e); + } + return result; + } + +} diff --git a/lis-services/src/main/java/hu/user/lis/services/data/InvoiceServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/InvoiceServiceImpl.java index 1b85825..9854630 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/InvoiceServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/InvoiceServiceImpl.java @@ -1,6 +1,5 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import hu.user.lis.db.Currency; import hu.user.lis.db.Invoice; @@ -11,7 +10,6 @@ import org.apache.commons.lang3.RandomUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Field; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -23,7 +21,7 @@ import java.util.concurrent.TimeUnit; @Service @Log4j2 -public class InvoiceServiceImpl implements InvoiceService { +public class InvoiceServiceImpl extends DataServiceImpl implements InvoiceService { int GENERATE_COUNT = 1000; @Autowired DataGeneratorService dataGeneratorService; @@ -770,41 +768,4 @@ public class InvoiceServiceImpl implements InvoiceService { return result; } - @Override - public Invoice copy(Invoice sourceEntity) { - Invoice result = null; - try { - String json = toString(sourceEntity); - result = mapper.readValue(json, Invoice.class); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public String toString(Invoice sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public Invoice copy(Invoice sourceEntity, String property, Object value) { - Invoice result = copy(sourceEntity); - Field field = null; - try { - field = result.getClass().getDeclaredField(property); - field.setAccessible(true); - field.set(result, value); - } catch (Exception e) { - log.catching(e); - } - return result; - } - } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java b/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java index 8743cc2..8430123 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java @@ -12,6 +12,8 @@ public interface PartnerService { void add(Partner entity); + Partner getById(String id); + Partner copy(Partner sourceEntity) throws JsonProcessingException; void replace(Partner targetEntity, Partner replacementEntity); diff --git a/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java index 457650c..b30d224 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java @@ -1,6 +1,5 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.javafaker.Address; import hu.user.lis.db.Partner; @@ -10,13 +9,12 @@ import org.apache.commons.lang3.RandomUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @Service @Log4j2 -public class PartnerServiceImpl implements PartnerService { +public class PartnerServiceImpl extends DataServiceImpl implements PartnerService { @Autowired ObjectMapper mapper; @Autowired @@ -54,6 +52,11 @@ public class PartnerServiceImpl implements PartnerService { return getAll().get(RandomUtils.nextInt(0, entities.size())); } + @Override + public Partner getById(String id) { + return getAll().stream().filter(p -> p.getId().equals(id)).findFirst().get(); + } + private List generate() { List result = new ArrayList<>(); int count = RandomUtils.nextInt(5, 10); @@ -182,41 +185,4 @@ public class PartnerServiceImpl implements PartnerService { return result; } - @Override - public Partner copy(Partner sourceEntity) { - Partner result = null; - try { - String json = toString(sourceEntity); - result = mapper.readValue(json, Partner.class); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public String toString(Partner sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public Partner copy(Partner sourceEntity, String property, Object value) { - Partner result = copy(sourceEntity); - Field field = null; - try { - field = result.getClass().getDeclaredField(property); - field.setAccessible(true); - field.set(result, value); - } catch (Exception e) { - log.catching(e); - } - return result; - } - } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java index 460f1ec..c676893 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java @@ -1,6 +1,5 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import hu.user.lis.db.Associate; import hu.user.lis.db.Project; @@ -17,7 +16,7 @@ import java.util.stream.Collectors; @Service @Log4j2 -public class ProjectAssociateServiceImpl implements ProjectAssociateService { +public class ProjectAssociateServiceImpl extends DataServiceImpl implements ProjectAssociateService { @Autowired ObjectMapper mapper; @Autowired @@ -75,15 +74,4 @@ public class ProjectAssociateServiceImpl implements ProjectAssociateService { return result; } - @Override - public String toString(ProjectAssociate sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/ProjectService.java b/lis-services/src/main/java/hu/user/lis/services/data/ProjectService.java index d5f1e64..b1f1a7d 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/ProjectService.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/ProjectService.java @@ -15,8 +15,6 @@ public interface ProjectService { void replace(Project targetEntity, Project replacementEntity); - boolean isInvalid(Project entity); - String toString(Project sourceEntity); Project copy(Project sourceEntity, String property, Object value); diff --git a/lis-services/src/main/java/hu/user/lis/services/data/ProjectServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/ProjectServiceImpl.java index 1c073c8..a83b16f 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/ProjectServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/ProjectServiceImpl.java @@ -1,27 +1,23 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import hu.user.lis.db.Partner; import hu.user.lis.db.Project; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.RandomStringUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Field; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Objects; import java.util.concurrent.TimeUnit; @Service @Log4j2 -public class ProjectServiceImpl implements ProjectService { +public class ProjectServiceImpl extends DataServiceImpl implements ProjectService { @Autowired ObjectMapper mapper; @Autowired @@ -181,54 +177,4 @@ public class ProjectServiceImpl implements ProjectService { return result; } - @Override - public boolean isInvalid(Project entity) { - if (StringUtils.isBlank(entity.getName())) { - return true; - } - if (StringUtils.isBlank(entity.getContactName())) { - return true; - } - if (Objects.isNull(entity.getPartner())) { - return true; - } - return false; - } - - @Override - public Project copy(Project sourceEntity) { - Project result = null; - try { - String json = toString(sourceEntity); - result = mapper.readValue(json, Project.class); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public String toString(Project sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public Project copy(Project sourceEntity, String property, Object value) { - Project result = copy(sourceEntity); - Field field = null; - try { - field = result.getClass().getDeclaredField(property); - field.setAccessible(true); - field.set(result, value); - } catch (Exception e) { - log.catching(e); - } - return result; - } } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/SupplierServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/SupplierServiceImpl.java index 3913e1c..5e9f775 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/SupplierServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/SupplierServiceImpl.java @@ -9,10 +9,10 @@ import java.util.ArrayList; import java.util.List; @Service -public class SupplierServiceImpl implements SupplierService { - private List suppliers; +public class SupplierServiceImpl extends DataServiceImpl implements SupplierService { @Autowired DataGeneratorService dataGeneratorService; + private List suppliers; @Override public List getAll() { diff --git a/lis-services/src/main/java/hu/user/lis/services/data/TreasuryServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/TreasuryServiceImpl.java index 4e72d5a..8cd9bef 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/TreasuryServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/TreasuryServiceImpl.java @@ -1,6 +1,5 @@ package hu.user.lis.services.data; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import hu.user.lis.db.Currency; import hu.user.lis.db.Treasury; @@ -10,7 +9,6 @@ import org.apache.commons.lang3.RandomUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -21,7 +19,7 @@ import java.util.concurrent.TimeUnit; @Service @Log4j2 -public class TreasuryServiceImpl implements TreasuryService { +public class TreasuryServiceImpl extends DataServiceImpl implements TreasuryService { int GENERATE_COUNT = 500; @Autowired DataGeneratorService dataGeneratorService; @@ -85,48 +83,10 @@ public class TreasuryServiceImpl implements TreasuryService { int count = RandomUtils.nextInt(2, 5); List result = new ArrayList<>(); for (int i = 0; i < count; i++) { - int index = RandomUtils.nextInt(0, GENERATE_COUNT); + int index = RandomUtils.nextInt(0, entities.size()); result.add(entities.get(index)); entities.remove(index); } return result; } - - @Override - public Treasury copy(Treasury sourceEntity) { - Treasury result = null; - try { - String json = toString(sourceEntity); - result = mapper.readValue(json, Treasury.class); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public String toString(Treasury sourceEntity) { - String result = null; - try { - result = mapper.writeValueAsString(sourceEntity); - } catch (JsonProcessingException e) { - log.catching(e); - } - return result; - } - - @Override - public Treasury copy(Treasury sourceEntity, String property, Object value) { - Treasury result = copy(sourceEntity); - Field field = null; - try { - field = result.getClass().getDeclaredField(property); - field.setAccessible(true); - field.set(result, value); - } catch (Exception e) { - log.catching(e); - } - return result; - } - } -- 2.54.0