added general logic for easydrop core

This commit is contained in:
Leonie Eitze
2023-06-09 13:39:05 +02:00
parent 1d6e384068
commit 4c283f5ca6
6 changed files with 185 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
package de.rwu.easydrop.core;
import java.util.List;
import de.rwu.easydrop.model.Offer;
public class Core {
private OfferIdentifier ident;
private OfferProvisioner provis;
private OfferReviewer review;
private OfferUpdater update;
public Core(){
this.ident = new OfferIdentifier();
this.provis = new OfferProvisioner();
this.review = new OfferReviewer();
this.update = new OfferUpdater();
}
public void runCore(){
List<Offer> identifiedOffers = ident.runIdentifier();
provis.runProvisioner(identifiedOffers);
List<Offer> updatingOffers = review.runReviewer();
update.runUpdater(updatingOffers);
}
}

View File

@@ -0,0 +1,31 @@
package de.rwu.easydrop.core;
import de.rwu.easydrop.model.Offer;
import java.util.List;
import java.util.ArrayList;
public class OfferIdentifier {
public OfferIdentifier() {
}
public List<Offer> runIdentifier() {
/* muss die Kataloge durchforsten nach vergleichbaren Produkten auf mehreren Händlerwebseiten (APIs)
* muss Preisermittler als Abhängigkeit für jeden Katalog aufrufen
* erhält dadurch Liste von Produkten, die auf verschiedenen Plattformen eingestellt werden können, gibt diese Liste zurück
* muss Datenbank nach Produktangeboten durchforsten, ob diese Produkte schon eingestellt wurden vom OfferProvisioner
* wenn ja, muss er die Liste um diese Angebote kürzen
*
*/
return new ArrayList<Offer>();
}
}

View File

@@ -0,0 +1,24 @@
package de.rwu.easydrop.core;
import de.rwu.easydrop.model.Offer;
import java.util.List;
public class OfferProvisioner {
public OfferProvisioner(/*OfferWriter for database? */) {
}
public void runProvisioner(List<Offer> offersToProvision) {
/*
* Bekommt vom Identifier eine Liste mit Angeboten, die er einstellen soll auf Zielplattformen
* Stellt Angebote bei der Zielplattform ein
* Schreibt eingestellte Angebote in die Datenbank
*/
}
}

View File

@@ -0,0 +1,23 @@
package de.rwu.easydrop.core;
import de.rwu.easydrop.model.Offer;
import java.util.List;
import java.util.ArrayList;
public class OfferReviewer {
public OfferReviewer(/*OfferReader/retriever for database? */){
}
public List<Offer> runReviewer() {
/*
* Liest eingestellte Angebote in der Datenbank
* Prüft Zielplattformen der SourceProducts, ob diese noch verfügbar sind (Issue#12) bzw. ob sie sich im Preis geändert haben
* Gibt Liste zurück von Offers, die geändert werden müssen, wird übergeben an OfferUpdater mit availability true oder false
*/
return new ArrayList<Offer>();
}
}

View File

@@ -0,0 +1,21 @@
package de.rwu.easydrop.core;
import java.util.List;
import de.rwu.easydrop.model.Offer;
public class OfferUpdater {
public OfferUpdater() {
}
public void runUpdater(List<Offer> offersToUpdate) {
/*
* Bekommt vom OfferReviewer eine Liste mit zu ändernden Offers übergeben.
* Bei availability=false löscht der Updater das Angebot aus der Datenbank und von der Zielplattform.
* Der Updater ändert die geänderten Parameter in der Liste in der Datenbank und in der Zielplattform ab.
* Er ändert das upDate in der Datenbank nach der Änderung.
*/
}
}

View File

@@ -0,0 +1,52 @@
package de.rwu.easydrop.model;
import java.util.Date;
import lombok.Data;
/**
* An Offer.
*
* @since 0.3.0
*/
@Data
public class Offer {
/*
* The product that our software buys
*/
Product sourceProduct;
/*
* The product that our software sells
*/
Product saleProduct;
/*
* Boolean to check if sourceProduct is still available on source website
*/
boolean availability;
/*
* Date of the creation of the offer
* NOTE: Use Timestamp? https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html
*/
Date creationDate;
/*
* Date of last update of the offer on the destination website (API)
*/
Date upDate;
/*
* Date of last check if offer is still valid
*/
Date checkDate;
}