Skip to content

Commit 8228296

Browse files
nicolnicol
authored andcommitted
manapool pricer
1 parent 27dd5fc commit 8228296

File tree

4 files changed

+65
-27
lines changed

4 files changed

+65
-27
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.magic.api.pricers.impl;
2+
3+
import java.io.IOException;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
import org.magic.api.beans.MTGCard;
8+
import org.magic.api.beans.MTGPrice;
9+
import org.magic.api.beans.technical.MTGProperty;
10+
import org.magic.api.interfaces.abstracts.AbstractPricesProvider;
11+
import org.magic.services.providers.MTGJsonPricerProvider;
12+
import org.magic.services.providers.MTGJsonPricerProvider.VENDOR;
13+
14+
public class ManaPoolPricer extends AbstractPricesProvider {
15+
16+
@Override
17+
public String getName() {
18+
return "ManaPool";
19+
}
20+
21+
@Override
22+
protected List<MTGPrice> getLocalePrice(MTGCard card) throws IOException {
23+
24+
logger.debug("{} looking for prices for {} ",getName(),card);
25+
26+
MTGJsonPricerProvider.getInstance().expirationDay(getInt("EXPIRE_FILE_DAYS"));
27+
28+
return MTGJsonPricerProvider.getInstance().getPriceFor(card,VENDOR.MANAPOOL);
29+
}
30+
31+
@Override
32+
public STATUT getStatut() {
33+
return STATUT.BETA;
34+
}
35+
36+
@Override
37+
public Map<String, MTGProperty> getDefaultAttributes() {
38+
return Map.of("EXPIRE_FILE_DAYS",MTGProperty.newIntegerProperty("1","Number of day when the file will be updated",1,-1));
39+
}
40+
41+
42+
}

src/main/java/org/magic/api/pricers/impl/MkmPricer.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.magic.api.beans.technical.MTGProperty;
1313
import org.magic.api.interfaces.abstracts.AbstractPricesProvider;
1414
import org.magic.services.providers.MTGJsonPricerProvider;
15+
import org.magic.services.providers.MTGJsonPricerProvider.VENDOR;
1516

1617
public class MkmPricer extends AbstractPricesProvider {
1718

@@ -27,19 +28,14 @@ protected List<MTGPrice> getLocalePrice(MTGCard card) throws IOException {
2728

2829
MTGJsonPricerProvider.getInstance().expirationDay(getInt("EXPIRE_FILE_DAYS"));
2930

30-
return MTGJsonPricerProvider.getInstance().getPriceFor(card);
31+
return MTGJsonPricerProvider.getInstance().getPriceFor(card,VENDOR.CARDMARKET);
3132
}
3233

3334
@Override
3435
public Icon getIcon() {
3536
return new ImageIcon(MkmPricer.class.getResource("/icons/plugins/magiccardmarket.png"));
3637
}
3738

38-
@Override
39-
public STATUT getStatut() {
40-
return STATUT.BETA;
41-
}
42-
4339
@Override
4440
public Map<String, MTGProperty> getDefaultAttributes() {
4541
return Map.of("EXPIRE_FILE_DAYS",MTGProperty.newIntegerProperty("1","Number of day when the file will be updated",1,-1));

src/main/java/org/magic/services/providers/MTGJsonPricerProvider.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
import java.io.IOException;
66
import java.util.ArrayList;
77
import java.util.Currency;
8+
import java.util.EnumMap;
89
import java.util.List;
10+
import java.util.Map;
911
import java.util.NavigableMap;
1012
import java.util.TreeMap;
1113

1214
import org.apache.logging.log4j.Logger;
13-
import org.api.mkm.tools.MkmConstants;
1415
import org.magic.api.beans.MTGCard;
1516
import org.magic.api.beans.MTGPrice;
1617
import org.magic.api.interfaces.abstracts.extra.AbstractMTGJsonProvider;
@@ -34,9 +35,9 @@
3435
public class MTGJsonPricerProvider {
3536
public enum SUPPORT {PAPER,MTGO}
3637
public enum STOCK {RETAIL, BUYLIST}
37-
public enum VENDOR {CARDKINGDOM,TCGPLAYER,CARDHOARDER,CARDMARKET,CARDSPHERE}
38+
public enum VENDOR {CARDKINGDOM,TCGPLAYER,CARDHOARDER,CARDMARKET,CARDSPHERE,MANAPOOL}
3839

39-
private List<Data> caches;
40+
private Map<VENDOR,List<Data>> caches;
4041
private static MTGJsonPricerProvider inst;
4142

4243
protected Logger logger = MTGLogger.getLogger(this.getClass());
@@ -48,7 +49,9 @@ public enum VENDOR {CARDKINGDOM,TCGPLAYER,CARDHOARDER,CARDMARKET,CARDSPHERE}
4849
public MTGJsonPricerProvider() throws IOException {
4950

5051
gson = new GsonBuilder().setPrettyPrinting().create();
51-
52+
53+
caches = new EnumMap<>(VENDOR.class);
54+
5255

5356
if(!dataFile.exists())
5457
downloadDataFile();
@@ -62,7 +65,6 @@ public static MTGJsonPricerProvider getInstance() throws IOException
6265
return inst;
6366
}
6467

65-
6668
public Meta getVersion()
6769
{
6870
try(var reader = new JsonReader(new FileReader(dataFile)))
@@ -177,11 +179,6 @@ public List<Data> loadData(VENDOR v) throws IOException
177179
{
178180
File f = new File(MTGConstants.DATA_DIR.getAbsolutePath(),v.name()+".json");
179181

180-
181-
if(caches==null)
182-
caches = new ArrayList<>();
183-
184-
185182
if(f.exists())
186183
{
187184
int lastModif = FileTools.daysBetween(f);
@@ -202,14 +199,18 @@ public List<Data> loadData(VENDOR v) throws IOException
202199
logger.error("{} doesn't existe. running buildPrices({})",f.getAbsolutePath(),v);
203200
buildPrices(v);
204201
}
205-
202+
logger.debug("Filling cache for {}", v);
203+
206204
try(var reader = new FileReader(f))
207205
{
208206
var el = JsonParser.parseReader(reader).getAsJsonArray();
209-
el.forEach(e->caches.add(gson.fromJson(e,Data.class)));
207+
208+
for(var e : el)
209+
caches.computeIfAbsent(v, _->new ArrayList<Data>()).add(gson.fromJson(e,Data.class));
210210
}
211+
logger.debug("Filling cache for {} done", v);
211212
}
212-
return caches;
213+
return caches.get(v);
213214
}
214215

215216
private Currency getCurrencyFor(VENDOR v)
@@ -220,19 +221,19 @@ private Currency getCurrencyFor(VENDOR v)
220221
return Currency.getInstance("USD");
221222
}
222223

223-
public List<MTGPrice> getPriceFor(MTGCard card) {
224-
List<MTGPrice> ret = new ArrayList<>();
224+
public List<MTGPrice> getPriceFor(MTGCard card, VENDOR v) {
225+
var ret = new ArrayList<MTGPrice>();
225226
Data d;
226227
try {
227-
d = loadData(VENDOR.CARDMARKET).stream().filter(i->i.getMtgjsonId().equals(card.getId())).findFirst().orElse(null);
228+
d = loadData(v).stream().filter(i->i.getMtgjsonId().equals(card.getId())).findFirst().orElse(null);
228229
logger.debug("data = {}", d);
229230
} catch (Exception e) {
230231
logger.error(e);
231232
return ret;
232233
}
233234
if(d==null)
234235
{
235-
logger.warn("MTGJson found nothing for {}",card);
236+
logger.warn("{} found nothing for {}",v,card);
236237
return ret;
237238
}
238239

@@ -243,9 +244,8 @@ public List<MTGPrice> getPriceFor(MTGCard card) {
243244
mp.setCountry("None");
244245
mp.setCurrency("EUR");
245246
mp.setCardData(card);
246-
mp.setSeller("Mkm");
247-
mp.setSite("Mkm");
248-
mp.setUrl(MkmConstants.MKM_SITE_URL);
247+
mp.setSeller(v.name());
248+
mp.setSite(v.name());
249249
mp.setFoil(b);
250250
mp.setValue(d.listPricesByFoil(b).get(0).getStockPrices().lastEntry().getValue());
251251
ret.add(mp);
@@ -257,7 +257,7 @@ public List<MTGPrice> getPriceFor(MTGCard card) {
257257
}
258258
}
259259

260-
logger.debug("MTGJson found {} prices",ret.size());
260+
logger.debug("{} found {} prices",v,ret.size());
261261
return ret;
262262
}
263263

1.67 KB
Loading

0 commit comments

Comments
 (0)