diff --git a/src/eu/lixko/ext/forraceexpander/components/Address.java b/src/eu/lixko/ext/forraceexpander/components/Address.java new file mode 100644 index 0000000..a42aae5 --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/components/Address.java @@ -0,0 +1,74 @@ +package eu.lixko.ext.forraceexpander.components; + +import java.util.ArrayList; +import java.util.LinkedHashMap; + +public class Address extends SerializableComponent { + private ArrayList addressLines = new ArrayList<>(); + private String street, zipCode, city, district, country; + private String name, phone, mail; + + public void setAddressLine(int linei, String val) throws IndexOutOfBoundsException { + this.addressLines.set(linei, val); + if(linei > 3) + throw new IndexOutOfBoundsException("Address can not have more than 4 lines! Tried to set #" + linei); + } + + public void addAddressLine(String val) throws IndexOutOfBoundsException { + if(this.addressLines.size() == 4) + throw new IndexOutOfBoundsException("Address can not have more than 4 lines!"); + this.addressLines.add(val); + } + + public void setStreet(String street) { + this.street = street; + } + + public void setZIP(String zipCode) { + this.zipCode = zipCode; + } + + public void setCity(String city) { + this.city = city; + } + + public void setDistrict(String district) { + this.district = district; + } + + public void setCountry(String country) { + this.country = country; + } + + public void setName(String name) { + this.name = name; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public void setMail(String mail) { + this.mail = mail; + } + + + @Override + public void prepare() { + super.prepare(); + + for (int i = 0; i < this.addressLines.size(); i++) { + this.putPreparedEntry("Name" + (i + 1), this.addressLines.get(i)); + } + this.putPreparedEntry("Street", street); + this.putPreparedEntry("ZIP", zipCode); + this.putPreparedEntry("City", city); + this.putPreparedEntry("District", district); + this.putPreparedEntry("Country", country); + + this.putPreparedEntry("ContactName", name); + this.putPreparedEntry("ContactPhone", phone); + this.putPreparedEntry("ContactMail", mail); + } + +} diff --git a/src/eu/lixko/ext/forraceexpander/components/Item.java b/src/eu/lixko/ext/forraceexpander/components/Item.java new file mode 100644 index 0000000..d97a750 --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/components/Item.java @@ -0,0 +1,83 @@ +package eu.lixko.ext.forraceexpander.components; + +public class Item extends SerializableComponent { + private long itemID = 0, productCode = 0, priceUnit = 0, priceTotal = 0, priceTotalWithTax = 0; + private int qty = 0; + private String name = "", ean = ""; + + public void setItemID(long itemID) { + this.itemID = itemID; + } + + public void setProductCode(long productCode) { + this.productCode = productCode; + } + + public void setQuantity(int qty) { + this.qty = qty; + } + + public void setUnitPrice(long price) { + this.priceUnit = price; + } + + public void setTotalPrice(long price) { + this.priceTotal = price; + } + + public void setTotalPriceWithTax(long price) { + this.priceTotalWithTax = price; + } + + public void setName(String name) { + this.name = name; + } + + public void setEAN(String ean) { + this.ean = ean; + } + + public long getItemID() { + return itemID; + } + + public long getProductCode() { + return productCode; + } + + public int getQuantity() { + return qty; + } + + public long getUnitPrice() { + return priceUnit; + } + + public long getTotalPrice() { + return priceTotal; + } + + public long getTotalPriceWithTax() { + return priceTotalWithTax; + } + + public String getName() { + return name; + } + + public String getEAN() { + return ean; + } + + @Override + public void prepare() { + super.prepare(); + + this.putPreparedEntry("ItemID", itemID + ""); + this.putPreparedEntry("Qty", qty + ""); + String priceStr = priceUnit + ""; + this.putPreparedEntry("Price", priceStr.substring(0, priceStr.length() - 2) + "." + priceStr.substring(priceStr.length() - 2, priceStr.length())); + this.putPreparedEntry("ShipTxt", name); + } + +} diff --git a/src/eu/lixko/ext/forraceexpander/components/Order.java b/src/eu/lixko/ext/forraceexpander/components/Order.java new file mode 100644 index 0000000..a37ee6b --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/components/Order.java @@ -0,0 +1,32 @@ +package eu.lixko.ext.forraceexpander.components; + +import java.util.ArrayList; +import java.util.Map; + +public class Order extends SerializableComponent { + private ArrayList items = new ArrayList<>(); + + @Override + public void prepare() { + super.prepare(); + + for(Item it : items) { + it.prepare(); + } + } + + public void dump() { + for(Item it : items) { + if(it.getNameValuePairs() == null) + it.prepare(); + for (Map.Entry entry : it.getNameValuePairs().entrySet()) { + System.out.println(entry.getKey() + ": " + entry.getValue()); + } + System.out.println("-------------------------------"); + } + } + + public void addItem(Item item) { + this.items.add(item); + } +} diff --git a/src/eu/lixko/ext/forraceexpander/components/SerializableComponent.java b/src/eu/lixko/ext/forraceexpander/components/SerializableComponent.java new file mode 100644 index 0000000..59115fc --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/components/SerializableComponent.java @@ -0,0 +1,35 @@ +package eu.lixko.ext.forraceexpander.components; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.LinkedHashMap; + +public class SerializableComponent { + LinkedHashMap vals; + + public LinkedHashMap getNameValuePairs() { + return this.vals; + } + + public void checkComponent() { + } + + public void prepare() { + this.vals = new LinkedHashMap<>(); + } + + public void putPreparedEntry(String name, String value) { + this.putPreparedEntry(name, value, false); + } + + public void putPreparedEntry(String name, String value, boolean allowEmpty) { + if(!value.isEmpty() || allowEmpty) + this.vals.put(name, value); + } + + @Retention(RetentionPolicy.RUNTIME) + public @interface MaxLength { + int value() default -1; + } + +} diff --git a/src/eu/lixko/ext/forraceexpander/exporter/OrderExporter.java b/src/eu/lixko/ext/forraceexpander/exporter/OrderExporter.java new file mode 100644 index 0000000..69f7afc --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/exporter/OrderExporter.java @@ -0,0 +1,5 @@ +package eu.lixko.ext.forraceexpander.exporter; + +public class OrderExporter { + +} diff --git a/src/eu/lixko/ext/forraceexpander/importer/OrderImporter.java b/src/eu/lixko/ext/forraceexpander/importer/OrderImporter.java new file mode 100644 index 0000000..b70c9d2 --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/importer/OrderImporter.java @@ -0,0 +1,31 @@ +package eu.lixko.ext.forraceexpander.importer; + +import java.util.ArrayList; +import java.util.Iterator; + +import eu.lixko.ext.forraceexpander.components.Order; + +public class OrderImporter { + public static OrderProvider orderProvider; + public static OrderParser orderParser; + public ArrayList orders = new ArrayList<>(); + + public OrderImporter() { + orderProvider = new TestOrderProvider(); + orderParser = new TestOrderParser(); + } + + public void run() { + Iterator orderIterator = orderProvider.iterator(); + while(orderIterator.hasNext()) { + String rawOrder = (String) orderIterator.next(); + Order ord = orderParser.parse(rawOrder); + orders.add(ord); + ord.dump(); + } + } + + public ArrayList getOrders() { + return this.orders; + } +} diff --git a/src/eu/lixko/ext/forraceexpander/importer/OrderParser.java b/src/eu/lixko/ext/forraceexpander/importer/OrderParser.java new file mode 100644 index 0000000..50508da --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/importer/OrderParser.java @@ -0,0 +1,9 @@ +package eu.lixko.ext.forraceexpander.importer; + +import eu.lixko.ext.forraceexpander.components.Order; + +public interface OrderParser { + + public Order parse(String html); + +} diff --git a/src/eu/lixko/ext/forraceexpander/importer/OrderProvider.java b/src/eu/lixko/ext/forraceexpander/importer/OrderProvider.java new file mode 100644 index 0000000..1e06224 --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/importer/OrderProvider.java @@ -0,0 +1,5 @@ +package eu.lixko.ext.forraceexpander.importer; + +public interface OrderProvider extends Iterable { + +} diff --git a/src/eu/lixko/ext/forraceexpander/importer/TestOrderParser.java b/src/eu/lixko/ext/forraceexpander/importer/TestOrderParser.java new file mode 100644 index 0000000..69edcc3 --- /dev/null +++ b/src/eu/lixko/ext/forraceexpander/importer/TestOrderParser.java @@ -0,0 +1,99 @@ +package eu.lixko.ext.forraceexpander.importer; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Comment; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.select.Elements; + +import eu.lixko.ext.forraceexpander.components.Item; +import eu.lixko.ext.forraceexpander.components.Order; + +public class TestOrderParser implements OrderParser { + + @Override + public Order parse(String html) { + Document doc = Jsoup.parse(html); + Order order = new Order(); + + List comments = getComments(doc); + for (Comment c : comments) { + Pattern p = Pattern.compile("\\