chiark
/
gitweb
/
~yarrgweb
/
jarrg-ian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename: jpctb -> jarrg
[jarrg-ian.git]
/
src
/
com
/
tedpearson
/
ypp
/
market
/
MarketUploader.java
diff --git
a/src/com/tedpearson/ypp/market/MarketUploader.java
b/src/com/tedpearson/ypp/market/MarketUploader.java
index 11f085b74570871ab8b33e040b45f1d16f72ce94..f91de7aedd25e93cbadbb3df782e46bfee03f0f6 100644
(file)
--- a/
src/com/tedpearson/ypp/market/MarketUploader.java
+++ b/
src/com/tedpearson/ypp/market/MarketUploader.java
@@
-39,6
+39,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
private Window window = null;
private JButton findMarket = null;
private JLabel resultSummary = null;
private Window window = null;
private JButton findMarket = null;
private JLabel resultSummary = null;
+ private JLabel arbitrageResult = null;
private final static String PCTB_LIVE_HOST_URL = "http://pctb.crabdance.com/";
private final static String PCTB_TEST_HOST_URL = "http://pctb.ilk.org/";
private final static String PCTB_LIVE_HOST_URL = "http://pctb.crabdance.com/";
private final static String PCTB_TEST_HOST_URL = "http://pctb.ilk.org/";
@@
-87,6
+88,15
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
return Integer.parseInt(str);
}
}
return Integer.parseInt(str);
}
}
+
+ private void progressNote(ProgressMonitor pm, String s) {
+ String arb = null;
+ if (arbitrageResult != null)
+ arb = arbitrageResult.getText();
+ if (arb != null && arb.length() != 0)
+ s = "<html>" + arb + "<br>" + s;
+ pm.setNote(s);
+ }
/**
* An abstract market offer, entailing a commodity being bought or sold by
/**
* An abstract market offer, entailing a commodity being bought or sold by
@@
-250,9
+260,10
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
if (window.getAccessibleContext().getAccessibleName().equals("Puzzle Pirates")) frame.setVisible(true);
return;
}
if (window.getAccessibleContext().getAccessibleName().equals("Puzzle Pirates")) frame.setVisible(true);
return;
}
- frame = new JFrame("
Market
Uploader");
+ frame = new JFrame("
Jarrg
Uploader");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- frame.getContentPane().setLayout(new GridLayout(2,1));
+ GridLayout layout = new GridLayout(2,1);
+ frame.getContentPane().setLayout(layout);
//frame.setPreferredSize(new Dimension(200, 60));
findMarket = new JButton("Upload Market Data");
//frame.setPreferredSize(new Dimension(200, 60));
findMarket = new JButton("Upload Market Data");
@@
-262,6
+273,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
new Thread() {
public void run() {
resultSummary.setText("");
new Thread() {
public void run() {
resultSummary.setText("");
+ arbitrageResult.setText("");
try {
runPCTB();
} catch(Exception e) {
try {
runPCTB();
} catch(Exception e) {
@@
-285,6
+297,13
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
resultSummary = new JLabel("ready");
frame.add(resultSummary);
resultSummary = new JLabel("ready");
frame.add(resultSummary);
+ arbitrageResult = new JLabel("");
+
+ if (showArbitrage) {
+ layout.setRows(layout.getRows() + 1);
+ frame.add(arbitrageResult);
+ }
+
frame.pack();
}
frame.pack();
}
@@
-434,7
+453,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
}
if (uploadToYarrg && yarrgts != null) {
}
if (uploadToYarrg && yarrgts != null) {
- p
m.setNote(
"Yarrg: Preparing data");
+ p
rogressNote(pm,
"Yarrg: Preparing data");
pm.setProgress(10);
StringBuilder yarrgsb = new StringBuilder();
pm.setProgress(10);
StringBuilder yarrgsb = new StringBuilder();
@@
-454,7
+473,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
yarrgdata = yarrgsb.toString();
yarrgdata = yarrgsb.toString();
- p
m.setNote(
"Yarrg: Uploading");
+ p
rogressNote(pm,
"Yarrg: Uploading");
if (islandName != null) {
doneyarrg = runYarrg(yarrgts, oceanName, islandName, yarrgdata);
if (islandName != null) {
doneyarrg = runYarrg(yarrgts, oceanName, islandName, yarrgdata);
@@
-464,7
+483,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
}
if (uploadToPCTB) {
}
if (uploadToPCTB) {
- p
m.setNote(
"PCTB: Getting stall names");
+ p
rogressNote(pm,
"PCTB: Getting stall names");
pm.setProgress(20);
if(pm.isCanceled()) {
return;
pm.setProgress(20);
if(pm.isCanceled()) {
return;
@@
-473,7
+492,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
TreeSet<Offer> sells = new TreeSet<Offer>();
LinkedHashMap<String,Integer> stallMap = getStallMap(data);
pm.setProgress(40);
TreeSet<Offer> sells = new TreeSet<Offer>();
LinkedHashMap<String,Integer> stallMap = getStallMap(data);
pm.setProgress(40);
- p
m.setNote(
"PCTB: Sorting offers");
+ p
rogressNote(pm,
"PCTB: Sorting offers");
if(pm.isCanceled()) {
return;
}
if(pm.isCanceled()) {
return;
}
@@
-490,7
+509,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
pm.setProgress(60);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
pm.setProgress(60);
- p
m.setNote(
"PCTB: Sending data");
+ p
rogressNote(pm,
"PCTB: Sending data");
if(pm.isCanceled()) {
return;
}
if(pm.isCanceled()) {
return;
}
@@
-508,7
+527,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
if(pm.isCanceled()) {
return;
}
if(pm.isCanceled()) {
return;
}
- p
m.setNote(
"PCTB: Waiting ...");
+ p
rogressNote(pm,
"PCTB: Waiting ...");
donepctb = finishUpload(in);
}
pm.setProgress(100);
donepctb = finishUpload(in);
}
pm.setProgress(100);
@@
-987,26
+1006,35
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
}
private int calculateArbitrageCommodity(ArrayList<SortedSet<int[]>> arb_bs) {
}
private int calculateArbitrageCommodity(ArrayList<SortedSet<int[]>> arb_bs) {
- System.out.println("ARBITRAGE?");
+
//
System.out.println("ARBITRAGE?");
int profit = 0;
SortedSet<int[]> buys = arb_bs.get(0);
SortedSet<int[]> sells = arb_bs.get(1);
while (true) {
int[] buy, sell;
try {
int profit = 0;
SortedSet<int[]> buys = arb_bs.get(0);
SortedSet<int[]> sells = arb_bs.get(1);
while (true) {
int[] buy, sell;
try {
- buy = buys.first();
+ // NB "sell" means they sell, ie we buy
sell = sells.last();
sell = sells.last();
+ buy = buys.first();
} catch (NoSuchElementException e) {
break;
}
} catch (NoSuchElementException e) {
break;
}
+
+ int unitprofit = buy[0] - sell[0];
int count = buy[1] < sell[1] ? buy[1] : sell[1];
int count = buy[1] < sell[1] ? buy[1] : sell[1];
- System.out.println(" buy @"+buy[0]+" x"+buy[1]+" sell @"+sell[0]+" x"+sell[1]+" => x"+count);
- profit += count * (buy[0] - sell[0]);
+ //System.out.println(" sell @"+sell[0]+" x"+sell[1]+" buy @"+buy[0]+" x"+buy[1]
+ // +" => x"+count+" @"+unitprofit);
+
+ if (unitprofit <= 0)
+ break;
+
+ profit += count * unitprofit;
buy[1] -= count;
sell[1] -= count;
if (buy[1]==0) buys.remove(buy);
buy[1] -= count;
sell[1] -= count;
if (buy[1]==0) buys.remove(buy);
- if (sell[1]==0)
buy
s.remove(sell);
+ if (sell[1]==0)
sell
s.remove(sell);
}
}
+ //System.out.println(" PROFIT "+profit);
return profit;
}
return profit;
}
@@
-1018,8
+1046,8
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
}
}
}
}
- private @SuppressWarnings("unchecked")
void calculateArbitrage(ArrayList<ArrayList<String>> data)
-
{
+ private @SuppressWarnings("unchecked")
+
void calculateArbitrage(ArrayList<ArrayList<String>> data)
{
int arbitrage = 0;
ArrayList<SortedSet<int[]>> arb_bs = null;
String lastcommod = null;
int arbitrage = 0;
ArrayList<SortedSet<int[]>> arb_bs = null;
String lastcommod = null;
@@
-1027,7
+1055,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
for (ArrayList<String> row : data) {
String thiscommod = row.get(0);
for (ArrayList<String> row : data) {
String thiscommod = row.get(0);
- System.out.println("ROW "+row.toString());
+
//
System.out.println("ROW "+row.toString());
if (lastcommod == null || !thiscommod.equals(lastcommod)) {
if (lastcommod != null)
arbitrage += calculateArbitrageCommodity(arb_bs);
if (lastcommod == null || !thiscommod.equals(lastcommod)) {
if (lastcommod != null)
arbitrage += calculateArbitrageCommodity(arb_bs);
@@
-1035,7
+1063,7
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
arb_bs = new ArrayList<SortedSet<int[]>>(2);
arb_bs.add(0, new TreeSet<int[]>(compar));
arb_bs.add(1, new TreeSet<int[]>(compar));
arb_bs = new ArrayList<SortedSet<int[]>>(2);
arb_bs.add(0, new TreeSet<int[]>(compar));
arb_bs.add(1, new TreeSet<int[]>(compar));
- System.out.println("ROW init");
+
//
System.out.println("ROW init");
lastcommod = thiscommod;
}
for (int bs = 0; bs < 2; bs++) {
lastcommod = thiscommod;
}
for (int bs = 0; bs < 2; bs++) {
@@
-1050,6
+1078,11
@@
public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
}
}
arbitrage += calculateArbitrageCommodity(arb_bs);
}
}
arbitrage += calculateArbitrageCommodity(arb_bs);
+ if (arbitrage != 0) {
+ arbitrageResult.setText("<html><strong>arbitrage: "+arbitrage+" poe</strong>");
+ } else {
+ arbitrageResult.setText("no arbitrage");
+ }
}
}
}
}