updating/creating markets
This commit is contained in:
@@ -11,6 +11,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
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.Station;
|
||||||
import io.dietz.ed.companion.models.eddb.StationType;
|
import io.dietz.ed.companion.models.eddb.StationType;
|
||||||
import io.dietz.ed.companion.models.eddb.System;
|
import io.dietz.ed.companion.models.eddb.System;
|
||||||
@@ -24,6 +25,7 @@ public class StationDeserializer extends JsonDeserializer<Station> {
|
|||||||
System system = new System(jsonStation.systemId);
|
System system = new System(jsonStation.systemId);
|
||||||
|
|
||||||
Station station = new Station(jsonStation.id, jsonStation.name, system);
|
Station station = new Station(jsonStation.id, jsonStation.name, system);
|
||||||
|
station.setMarket(new Market(jsonStation.marketId));
|
||||||
station.setType(new StationType(jsonStation.typeId, jsonStation.typeName));
|
station.setType(new StationType(jsonStation.typeId, jsonStation.typeName));
|
||||||
station.setMaxLandingPadSize(jsonStation.maxLandingPadSize);
|
station.setMaxLandingPadSize(jsonStation.maxLandingPadSize);
|
||||||
station.setDistanceToStar(jsonStation.distanceToStar);
|
station.setDistanceToStar(jsonStation.distanceToStar);
|
||||||
@@ -42,6 +44,9 @@ public class StationDeserializer extends JsonDeserializer<Station> {
|
|||||||
@JsonProperty("updated_at")
|
@JsonProperty("updated_at")
|
||||||
public long updatedAt;
|
public long updatedAt;
|
||||||
|
|
||||||
|
@JsonProperty("ed_market_id")
|
||||||
|
public long marketId;
|
||||||
|
|
||||||
@JsonProperty("system_id")
|
@JsonProperty("system_id")
|
||||||
public long systemId;
|
public long systemId;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.dietz.ed.companion.component;
|
package io.dietz.ed.companion.component;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.zip.DataFormatException;
|
import java.util.zip.DataFormatException;
|
||||||
import java.util.zip.Inflater;
|
import java.util.zip.Inflater;
|
||||||
|
|
||||||
@@ -13,6 +14,9 @@ import org.zeromq.ZContext;
|
|||||||
import org.zeromq.ZMQ;
|
import org.zeromq.ZMQ;
|
||||||
|
|
||||||
import io.dietz.ed.companion.domain.MarketWithRoot;
|
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 {
|
public class ZeroMqHandler implements Runnable {
|
||||||
|
|
||||||
@@ -28,6 +32,12 @@ public class ZeroMqHandler implements Runnable {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ObjectMapper objectMapper;
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MarketRepository marketRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StationRepository stationRepository;
|
||||||
|
|
||||||
public void msg(String msg) {
|
public void msg(String msg) {
|
||||||
System.out.println(msg);
|
System.out.println(msg);
|
||||||
}
|
}
|
||||||
@@ -66,9 +76,24 @@ public class ZeroMqHandler implements Runnable {
|
|||||||
|
|
||||||
// outputString contains a json message
|
// outputString contains a json message
|
||||||
if (outputString.contains(filterSchema)) {
|
if (outputString.contains(filterSchema)) {
|
||||||
msg(outputString);
|
//msg(outputString);
|
||||||
var test = objectMapper.readValue(outputString, MarketWithRoot.class);
|
|
||||||
msg(test.getMarket().toString());
|
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) {
|
} catch (DataFormatException | IOException e) {
|
||||||
|
|||||||
@@ -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.Station;
|
||||||
import io.dietz.ed.companion.models.eddb.System;
|
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.StationRepository;
|
||||||
import io.dietz.ed.companion.repositories.StationTypeRepository;
|
import io.dietz.ed.companion.repositories.StationTypeRepository;
|
||||||
import io.dietz.ed.companion.repositories.SystemRepository;
|
import io.dietz.ed.companion.repositories.SystemRepository;
|
||||||
@@ -43,6 +44,9 @@ public class DatabaseConfiguration {
|
|||||||
@Autowired
|
@Autowired
|
||||||
StationTypeRepository stationTypeRepository;
|
StationTypeRepository stationTypeRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
MarketRepository marketRepository;
|
||||||
|
|
||||||
@EventListener({ ContextRefreshedEvent.class })
|
@EventListener({ ContextRefreshedEvent.class })
|
||||||
public void onContextRefreshed() throws IOException {
|
public void onContextRefreshed() throws IOException {
|
||||||
if (systemRepository.count() == 0) {
|
if (systemRepository.count() == 0) {
|
||||||
@@ -77,6 +81,11 @@ public class DatabaseConfiguration {
|
|||||||
stationTypeRepository.saveAndFlush(station.getType());
|
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
|
// check if System is existing
|
||||||
if (systemRepository.findById(station.getSystem().getId()).isEmpty()) {
|
if (systemRepository.findById(station.getSystem().getId()).isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -11,4 +11,20 @@ public class Market {
|
|||||||
|
|
||||||
@OneToOne(mappedBy = "market")
|
@OneToOne(mappedBy = "market")
|
||||||
protected Station station;
|
protected Station station;
|
||||||
|
|
||||||
|
public Market() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Market(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Station getStation() {
|
||||||
|
return station;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,10 +65,22 @@ public class Station {
|
|||||||
this.system = system;
|
this.system = system;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public System getSystem() {
|
public System getSystem() {
|
||||||
return system;
|
return system;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Market getMarket() {
|
||||||
|
return market;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMarket(Market market) {
|
||||||
|
this.market = market;
|
||||||
|
}
|
||||||
|
|
||||||
public StationType getType() {
|
public StationType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<Market, Long> {
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user