Skip to content

Commit

Permalink
new export MagicManager plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
nicol authored and nicol committed Jan 13, 2024
1 parent 1f40e7d commit 5f282fa
Show file tree
Hide file tree
Showing 6 changed files with 168 additions and 8 deletions.
120 changes: 120 additions & 0 deletions src/main/java/org/magic/api/exports/impl/MagicManagerExport.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package org.magic.api.exports.impl;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.magic.api.beans.MagicCardStock;
import org.magic.api.beans.MagicDeck;
import org.magic.api.interfaces.abstracts.extra.AbstractFormattedFileCardExport;
import org.magic.services.MTGControler;
import org.magic.services.tools.FileTools;
import org.magic.services.tools.UITools;

import com.google.common.collect.Lists;

public class MagicManagerExport extends AbstractFormattedFileCardExport {


private static final String columns = "Card Name,Set Code,Collector Number,Language,Foil,Count";


public static void main(String[] args) {
// TODO Auto-generated method stub

}

@Override
public void exportDeck(MagicDeck deck, File dest) throws IOException {
exportStock(importFromDeck(deck), dest);

}

@Override
public MagicDeck importDeck(String f, String name) throws IOException {
var d = new MagicDeck();
d.setName(name);

for(MagicCardStock st : importStock(f))
d.getMain().put(st.getProduct(), st.getQte());

return d;
}


@Override
public List<MagicCardStock> importStock(String content) throws IOException {
// TODO Auto-generated method stub
return super.importStock(content);
}

Integer number=0;
@Override
public void exportStock(List<MagicCardStock> stock, File f) throws IOException {



Lists.partition(stock, getInt("MAX_ITEMS")).forEach(list->{
var temp = new StringBuilder(columns);
temp.append(System.lineSeparator());

list.forEach(st->{
temp.append("\"").append(st.getProduct().getName()).append("\"").append(getSeparator());
temp.append(aliases.getSetIdFor(this,st.getProduct().getCurrentSet()).toLowerCase()).append(getSeparator());
temp.append(st.getProduct().getCurrentSet().getNumber()).append(getSeparator());
temp.append(st.getLanguage().substring(0, 2)).append(getSeparator());
temp.append(st.isFoil()?"True":"False").append(getSeparator());
temp.append(st.getQte());
notify(st.getProduct());
temp.append(System.lineSeparator());
});


try {
f.renameTo(new File(f.getAbsolutePath()+"-"+(number++)));
FileTools.saveFile(f, temp.toString());
} catch (IOException e) {
logger.error(e);
}
});
number=0;
}

@Override
public Map<String, String> getDefaultAttributes() {
var m = super.getDefaultAttributes();

m.put("MAX_ITEMS", "2000");

return m;
}


@Override
protected boolean skipFirstLine() {
return true;
}

@Override
protected String[] skipLinesStartWith() {
return new String[0];
}

@Override
protected String getSeparator() {
return ",";
}

@Override
public String getName() {
return "MagicManager";
}

@Override
public String getFileExtension() {
return ".csv";
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,13 @@ public class CsCartExternalShop extends AbstractExternalShop {

public static void main(String[] args) throws IOException {
MTGControler.getInstance().loadAccountsConfiguration();

var cscart = new CsCartExternalShop();

cscart.listProducts("").forEach(System.out::println);
cscart.listProducts("").stream().map(e->{
return e.getName() + " " + e.getUrl();

}).forEach(System.out::println);


System.exit(0);
}
Expand All @@ -56,9 +59,10 @@ public CsCartExternalShop() {
private RequestBuilder getBuilder(String endpoint,METHOD m) {

var auth= "Basic " + CryptoUtils.toBase64((getAuthenticator().get("EMAIL")+":"+getAuthenticator().get("API_KEY")).getBytes());
var idComp = getAuthenticator().get("COMPANY_ID");

if(!StringUtils.isEmpty(getAuthenticator().get("COMPANY_ID")))
endpoint = "/vendors/"+getAuthenticator().get("COMPANY_ID")+"/"+endpoint;
if(!StringUtils.isEmpty(idComp))
endpoint = "/vendors/"+idComp+"/"+endpoint;


return RequestBuilder.build().setClient(client).method(m)
Expand All @@ -73,6 +77,14 @@ public List<String> listAuthenticationAttributes() {
}


@Override
public Category getCategoryById(Integer id) throws IOException {
var ret = getBuilder("api/categories/"+id,METHOD.GET).toJson();
var jo = ret.getAsJsonObject();
return new Category(jo.get("category_id").getAsInt(),jo.get("category").getAsString());

}

@Override
public List<Category> listCategories() throws IOException {
var list = new ArrayList<Category>();
Expand Down Expand Up @@ -113,7 +125,10 @@ public List<MTGProduct> listProducts(String name) throws IOException {
var build = getBuilder(API_PRODUCTS,METHOD.GET);

if(!StringUtils.isEmpty(name))
build.addContent("pname",name);
{
build.addContent("pname","Y");
build.addContent("q",name);
}

var ret = build.toJson();

Expand Down Expand Up @@ -157,6 +172,15 @@ private MTGProduct buildProduct(JsonObject jo) {
{
logger.error("error getting image url for {}",product.getName());
}

try {
product.setCategory(getCategoryById(jo.get("category_ids").getAsJsonArray().get(0).getAsInt()));
} catch (IOException e) {
logger.error("error getting category for {}",product.getName());
}



return product;
}

Expand All @@ -176,7 +200,7 @@ private Transaction buildTransaction(JsonObject jo)
{
var t = new Transaction();
t.setId(jo.get("order_id").getAsLong());
t.setDateCreation(new Date(jo.get("timestamp").getAsLong()));
t.setDateCreation(new Date(jo.get("timestamp").getAsLong()*1000));

switch(jo.get("status").getAsString())
{
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/magic/api/interfaces/MTGExternalShop.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ public interface MTGExternalShop extends MTGPlugin {


public List<Category> listCategories() throws IOException;

public Category getCategoryById(Integer id) throws IOException;

public Integer saveOrUpdateContact(Contact c) throws IOException;
public Contact getContactByEmail(String email) throws IOException;
public List<Contact> listContacts() throws IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,18 @@
import java.util.List;
import java.util.Map;

import org.magic.api.beans.shop.Category;
import org.magic.api.beans.shop.Transaction;
import org.magic.api.interfaces.MTGExternalShop;
import org.magic.api.interfaces.MTGStockItem;
import org.magic.services.tools.MTG;
import org.magic.services.tools.TCache;

public abstract class AbstractExternalShop extends AbstractMTGPlugin implements MTGExternalShop {


private TCache<Category> cacheCategory;


protected abstract List<Transaction> loadTransaction() throws IOException;
protected abstract List<MTGStockItem> loadStock(String search) throws IOException;
protected abstract void saveOrUpdateStock(List<MTGStockItem> it) throws IOException ;
Expand All @@ -30,13 +34,19 @@ public PLUGINS getType() {

protected AbstractExternalShop() {
itemsBkcp = new HashMap<>();
cacheCategory = new TCache<>("categ");
}

@Override
public List<Transaction> listTransaction() throws IOException {

return loadTransaction();
}

@Override
public Category getCategoryById(Integer id) throws IOException {
return listCategories().stream().filter(c->c.getIdCategory()==id).findFirst().orElse(null);
}

@Override
public List<MTGStockItem> listStock(String search) throws IOException {
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/data/pluginsAliases.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
{
"MagicManager": {
"regex":{
"default":"(?=\")\"(.*?)\"|(.*?)(.*?),(.*?),(.*?),(.*?),(True|False),(\\d+)"
}
},
"CardSphere": {
"regex": {
"default": "\"(\\d+)\",\"(\\d+)\",\"(.*?)\",\"(.*?)\",\"(.*?)\",\"(.*?)\",\"(.*?)\",\"(.*?)\""
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5f282fa

Please sign in to comment.