/* * GPLv3 */ package org.kleini.bricklink; import java.io.File; import java.util.LinkedList; import java.util.List; import org.kleini.bricklink.api.BrickLinkClient; import org.kleini.bricklink.api.Configuration; import org.kleini.bricklink.api.SubsetsRequest; import org.kleini.bricklink.api.SubsetsResponse; import org.kleini.bricklink.data.Condition; import org.kleini.bricklink.data.Entry; import org.kleini.bricklink.data.ItemType; import org.kleini.bricklink.data.Subset; import org.kleini.brickstore.BrickStoreDeSerializer; import org.kleini.brickstore.data.BrickStoreXML; import org.kleini.brickstore.data.Inventory; import org.kleini.brickstore.data.Item; /** * {@link PartOut} * * @author <a href="mailto:himself@kleini.org">Marcus Klein</a> */ public final class PartOut { public PartOut() { super(); } public static void main(String[] args) throws Exception { if (args.length == 0) { System.out.println(PartOut.class.getName() + " setId <multiplier>"); System.exit(1); } int multiplier = 1; if (args.length > 1) { multiplier = Integer.parseInt(args[1]); } String itemID = args[0]; Configuration configuration = new Configuration(); BrickLinkClient client = new BrickLinkClient(configuration); List<Item> items = new LinkedList<Item>(); try { SubsetsResponse response = client.execute(new SubsetsRequest(ItemType.SET, args[0])); for (Subset subset : response.getSubsets()) { System.out.println(subset); boolean counterParts = subset.getEntries().size() > 1; for (Entry entry : subset.getEntries()) { Item item = new Item(); item.setStatus("I"); item.setItemID(entry.getItem().getIdentifier()); item.setItemName(entry.getItem().getName()); item.setItemTypeID(entry.getItem().getType().getId()); item.setItemTypeName(entry.getItem().getType().name()); item.setCategoryID(entry.getItem().getCategory().getIdentifier()); item.setCategoryName(entry.getItem().getCategory().getName()); item.setColorID(entry.getColor().getIdentifier()); item.setColorName(entry.getColor().getName()); item.setQty(entry.getQuantity() * multiplier); item.setCondition(Condition.N.name()); if (counterParts) { item.setComments("" + subset.getIdentifier() + ',' + entry.isAlternate()); } items.add(item); if (entry.getExtraQuantity() > 0) { if (entry.getQuantity() == entry.getExtraQuantity()) { // Part is only an extra part item.setStatus("E"); } else { item = item.clone(); item.setQty(entry.getExtraQuantity() * multiplier); item.setStatus("E"); items.add(item); } } } } } finally { client.close(); } BrickStoreXML brickStore = new BrickStoreXML(); Inventory inventory = new Inventory(); brickStore.setInventory(inventory); inventory.setItem(items); BrickStoreDeSerializer deSerializer = new BrickStoreDeSerializer(); deSerializer.save(brickStore, new File(itemID + ".bsx")); } }