added general logic for easydrop core
This commit is contained in:
34
src/main/java/de/rwu/easydrop/core/Core.java
Normal file
34
src/main/java/de/rwu/easydrop/core/Core.java
Normal 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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
31
src/main/java/de/rwu/easydrop/core/OfferIdentifier.java
Normal file
31
src/main/java/de/rwu/easydrop/core/OfferIdentifier.java
Normal 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>();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
24
src/main/java/de/rwu/easydrop/core/OfferProvisioner.java
Normal file
24
src/main/java/de/rwu/easydrop/core/OfferProvisioner.java
Normal 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
23
src/main/java/de/rwu/easydrop/core/OfferReviewer.java
Normal file
23
src/main/java/de/rwu/easydrop/core/OfferReviewer.java
Normal 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>();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
21
src/main/java/de/rwu/easydrop/core/OfferUpdater.java
Normal file
21
src/main/java/de/rwu/easydrop/core/OfferUpdater.java
Normal 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/main/java/de/rwu/easydrop/model/Offer.java
Normal file
52
src/main/java/de/rwu/easydrop/model/Offer.java
Normal 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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user