From 0deaf7260f460601d1779c62683ea5c566a4b064 Mon Sep 17 00:00:00 2001 From: Steffen Dietz Date: Fri, 7 May 2021 22:28:29 +0000 Subject: [PATCH] updating/creating markets --- .../component/StationDeserializer.java | 5 +++ .../ed/companion/component/ZeroMqHandler.java | 31 +++++++++++++++++-- .../config/DatabaseConfiguration.java | 9 ++++++ .../ed/companion/models/eddb/Market.java | 16 ++++++++++ .../ed/companion/models/eddb/Station.java | 12 +++++++ .../repositories/MarketRepository.java | 9 ++++++ 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/main/java/io/dietz/ed/companion/repositories/MarketRepository.java diff --git a/src/main/java/io/dietz/ed/companion/component/StationDeserializer.java b/src/main/java/io/dietz/ed/companion/component/StationDeserializer.java index 20f4b64..3222ec1 100644 --- a/src/main/java/io/dietz/ed/companion/component/StationDeserializer.java +++ b/src/main/java/io/dietz/ed/companion/component/StationDeserializer.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; +import io.dietz.ed.companion.models.eddb.Market; import io.dietz.ed.companion.models.eddb.Station; import io.dietz.ed.companion.models.eddb.StationType; import io.dietz.ed.companion.models.eddb.System; @@ -24,6 +25,7 @@ public class StationDeserializer extends JsonDeserializer { System system = new System(jsonStation.systemId); Station station = new Station(jsonStation.id, jsonStation.name, system); + station.setMarket(new Market(jsonStation.marketId)); station.setType(new StationType(jsonStation.typeId, jsonStation.typeName)); station.setMaxLandingPadSize(jsonStation.maxLandingPadSize); station.setDistanceToStar(jsonStation.distanceToStar); @@ -42,6 +44,9 @@ public class StationDeserializer extends JsonDeserializer { @JsonProperty("updated_at") public long updatedAt; + @JsonProperty("ed_market_id") + public long marketId; + @JsonProperty("system_id") public long systemId; diff --git a/src/main/java/io/dietz/ed/companion/component/ZeroMqHandler.java b/src/main/java/io/dietz/ed/companion/component/ZeroMqHandler.java index dda6ff2..fecd275 100644 --- a/src/main/java/io/dietz/ed/companion/component/ZeroMqHandler.java +++ b/src/main/java/io/dietz/ed/companion/component/ZeroMqHandler.java @@ -1,6 +1,7 @@ package io.dietz.ed.companion.component; import java.io.IOException; +import java.time.LocalDateTime; import java.util.zip.DataFormatException; import java.util.zip.Inflater; @@ -13,6 +14,9 @@ import org.zeromq.ZContext; import org.zeromq.ZMQ; import io.dietz.ed.companion.domain.MarketWithRoot; +import io.dietz.ed.companion.models.eddb.Market; +import io.dietz.ed.companion.repositories.MarketRepository; +import io.dietz.ed.companion.repositories.StationRepository; public class ZeroMqHandler implements Runnable { @@ -28,6 +32,12 @@ public class ZeroMqHandler implements Runnable { @Autowired private ObjectMapper objectMapper; + @Autowired + private MarketRepository marketRepository; + + @Autowired + private StationRepository stationRepository; + public void msg(String msg) { System.out.println(msg); } @@ -66,9 +76,24 @@ public class ZeroMqHandler implements Runnable { // outputString contains a json message if (outputString.contains(filterSchema)) { - msg(outputString); - var test = objectMapper.readValue(outputString, MarketWithRoot.class); - msg(test.getMarket().toString()); + //msg(outputString); + + MarketWithRoot marketContainer = objectMapper.readValue(outputString, MarketWithRoot.class); + + msg(marketContainer.getMarket().toString()); + + var test = marketRepository.findById(marketContainer.getMarket().marketId).orElseGet(() -> { + msg("Market created!"); + Market market = new Market(marketContainer.getMarket().marketId); + marketRepository.saveAndFlush(market); + return market; + }); + + if(test.getStation() != null) { + test.getStation().setUpdatedAt(LocalDateTime.now()); + stationRepository.saveAndFlush(test.getStation()); + msg(test.getStation().getName() + " updated!"); + } } } catch (DataFormatException | IOException e) { diff --git a/src/main/java/io/dietz/ed/companion/config/DatabaseConfiguration.java b/src/main/java/io/dietz/ed/companion/config/DatabaseConfiguration.java index 695cca1..308dd1c 100644 --- a/src/main/java/io/dietz/ed/companion/config/DatabaseConfiguration.java +++ b/src/main/java/io/dietz/ed/companion/config/DatabaseConfiguration.java @@ -22,6 +22,7 @@ import org.springframework.web.reactive.function.client.WebClient; import io.dietz.ed.companion.models.eddb.Station; import io.dietz.ed.companion.models.eddb.System; +import io.dietz.ed.companion.repositories.MarketRepository; import io.dietz.ed.companion.repositories.StationRepository; import io.dietz.ed.companion.repositories.StationTypeRepository; import io.dietz.ed.companion.repositories.SystemRepository; @@ -43,6 +44,9 @@ public class DatabaseConfiguration { @Autowired StationTypeRepository stationTypeRepository; + @Autowired + MarketRepository marketRepository; + @EventListener({ ContextRefreshedEvent.class }) public void onContextRefreshed() throws IOException { if (systemRepository.count() == 0) { @@ -77,6 +81,11 @@ public class DatabaseConfiguration { stationTypeRepository.saveAndFlush(station.getType()); } + // check if Market was already persisted + if(marketRepository.findById(station.getMarket().getId()).isEmpty()) { + marketRepository.saveAndFlush(station.getMarket()); + } + // check if System is existing if (systemRepository.findById(station.getSystem().getId()).isEmpty()) { return; diff --git a/src/main/java/io/dietz/ed/companion/models/eddb/Market.java b/src/main/java/io/dietz/ed/companion/models/eddb/Market.java index bd37823..a2512c1 100644 --- a/src/main/java/io/dietz/ed/companion/models/eddb/Market.java +++ b/src/main/java/io/dietz/ed/companion/models/eddb/Market.java @@ -11,4 +11,20 @@ public class Market { @OneToOne(mappedBy = "market") protected Station station; + + public Market() { + } + + public Market(long id) { + this.id = id; + } + + public long getId() { + return id; + } + + public Station getStation() { + return station; + } + } diff --git a/src/main/java/io/dietz/ed/companion/models/eddb/Station.java b/src/main/java/io/dietz/ed/companion/models/eddb/Station.java index c246b3a..1d0e851 100644 --- a/src/main/java/io/dietz/ed/companion/models/eddb/Station.java +++ b/src/main/java/io/dietz/ed/companion/models/eddb/Station.java @@ -65,10 +65,22 @@ public class Station { this.system = system; } + public String getName() { + return name; + } + public System getSystem() { return system; } + public Market getMarket() { + return market; + } + + public void setMarket(Market market) { + this.market = market; + } + public StationType getType() { return type; } diff --git a/src/main/java/io/dietz/ed/companion/repositories/MarketRepository.java b/src/main/java/io/dietz/ed/companion/repositories/MarketRepository.java new file mode 100644 index 0000000..f41e021 --- /dev/null +++ b/src/main/java/io/dietz/ed/companion/repositories/MarketRepository.java @@ -0,0 +1,9 @@ +package io.dietz.ed.companion.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import io.dietz.ed.companion.models.eddb.Market; + +public interface MarketRepository extends JpaRepository { + +}