/src/com/trumpetx/minerstatus/beans/BtcguildStatus.java

https://bitbucket.org/logiclrd/minerstatus · Java · 377 lines · 197 code · 38 blank · 142 comment · 11 complexity · 2cc2303154d0454b7677fb2d0553fce2 MD5 · raw file

  1. package com.trumpetx.minerstatus.beans;
  2. import android.widget.TableLayout;
  3. import com.trumpetx.minerstatus.R;
  4. import com.trumpetx.minerstatus.ViewMinerActivity;
  5. import com.trumpetx.minerstatus.util.Configuration;
  6. import com.trumpetx.minerstatus.util.Deserializer;
  7. import com.trumpetx.minerstatus.util.GsonDeserializer;
  8. import java.io.Serializable;
  9. import java.math.BigDecimal;
  10. import java.util.List;
  11. import java.util.Map;
  12. public class BtcguildStatus
  13. extends StatusBase
  14. implements Serializable, Renderable
  15. {
  16. /* @formatter:off */
  17. /*
  18. {
  19. "pool" :
  20. {
  21. "difficulty" : 2694047,
  22. "difficulty_nmc" : 1209202,
  23. "pool_speed" : 2344.2199999999998,
  24. "pps_rate" : 0.00001763146671160525,
  25. "pps_rate_nmc" : 0.00003928210505771575
  26. },
  27. "user" :
  28. {
  29. "paid_rewards" : 0.0,
  30. "paid_rewards_nmc" : 0.0,
  31. "past_24h_rewards" : 0.0,
  32. "past_24h_rewards_nmc" : 0.0,
  33. "total_rewards" : 0.0,
  34. "total_rewards_nmc" : 0.0,
  35. "unpaid_rewards" : 0.0,
  36. "unpaid_rewards_nmc" : 0.0,
  37. "user_id" : 759
  38. },
  39. "workers" :
  40. {
  41. "1" :
  42. {
  43. "dupe_shares" : 0,
  44. "dupe_shares_nmc" : 0,
  45. "dupe_shares_nmc_since_reset" : 0,
  46. "dupe_shares_since_reset" : 0,
  47. "hash_rate" : 0.0,
  48. "last_share" : 0,
  49. "stale_shares" : 0,
  50. "stale_shares_nmc" : 0,
  51. "stale_shares_nmc_since_reset" : 0,
  52. "stale_shares_since_reset" : 0,
  53. "unknown_shares" : 0,
  54. "unknown_shares_nmc" : 0,
  55. "unknown_shares_nmc_since_reset" : 0,
  56. "unknown_shares_since_reset" : 0,
  57. "valid_shares" : 0,
  58. "valid_shares_nmc" : 0,
  59. "valid_shares_nmc_since_reset" : 0,
  60. "valid_shares_since_reset" : 0,
  61. "worker_name" : "trumpetx_57701"
  62. },
  63. "2" :
  64. {
  65. "dupe_shares" : 0,
  66. "dupe_shares_nmc" : 0,
  67. "dupe_shares_nmc_since_reset" : 0,
  68. "dupe_shares_since_reset" : 0,
  69. "hash_rate" : 0.0,
  70. "last_share" : 0,
  71. "stale_shares" : 0,
  72. "stale_shares_nmc" : 0,
  73. "stale_shares_nmc_since_reset" : 0,
  74. "stale_shares_since_reset" : 0,
  75. "unknown_shares" : 0,
  76. "unknown_shares_nmc" : 0,
  77. "unknown_shares_nmc_since_reset" : 0,
  78. "unknown_shares_since_reset" : 0,
  79. "valid_shares" : 0,
  80. "valid_shares_nmc" : 0,
  81. "valid_shares_nmc_since_reset" : 0,
  82. "valid_shares_since_reset" : 0,
  83. "worker_name" : "trumpetx_57702"
  84. },
  85. "3" :
  86. {
  87. "dupe_shares" : 0,
  88. "dupe_shares_nmc" : 0,
  89. "dupe_shares_nmc_since_reset" : 0,
  90. "dupe_shares_since_reset" : 0,
  91. "hash_rate" : 0.0,
  92. "last_share" : 0,
  93. "stale_shares" : 0,
  94. "stale_shares_nmc" : 0,
  95. "stale_shares_nmc_since_reset" : 0,
  96. "stale_shares_since_reset" : 0,
  97. "unknown_shares" : 0,
  98. "unknown_shares_nmc" : 0,
  99. "unknown_shares_nmc_since_reset" : 0,
  100. "unknown_shares_since_reset" : 0,
  101. "valid_shares" : 0,
  102. "valid_shares_nmc" : 0,
  103. "valid_shares_nmc_since_reset" : 0,
  104. "valid_shares_since_reset" : 0,
  105. "worker_name" : "trumpetx_58501"
  106. },
  107. "4" :
  108. {
  109. "dupe_shares" : 0,
  110. "dupe_shares_nmc" : 0,
  111. "dupe_shares_nmc_since_reset" : 0,
  112. "dupe_shares_since_reset" : 0,
  113. "hash_rate" : 0.0,
  114. "last_share" : 0,
  115. "stale_shares" : 0,
  116. "stale_shares_nmc" : 0,
  117. "stale_shares_nmc_since_reset" : 0,
  118. "stale_shares_since_reset" : 0,
  119. "unknown_shares" : 0,
  120. "unknown_shares_nmc" : 0,
  121. "unknown_shares_nmc_since_reset" : 0,
  122. "unknown_shares_since_reset" : 0,
  123. "valid_shares" : 0,
  124. "valid_shares_nmc" : 0,
  125. "valid_shares_nmc_since_reset" : 0,
  126. "valid_shares_since_reset" : 0,
  127. "worker_name" : "trumpetx_58502"
  128. },
  129. "5" :
  130. {
  131. "dupe_shares" : 0,
  132. "dupe_shares_nmc" : 0,
  133. "dupe_shares_nmc_since_reset" : 0,
  134. "dupe_shares_since_reset" : 0,
  135. "hash_rate" : 0.0,
  136. "last_share" : 0,
  137. "stale_shares" : 0,
  138. "stale_shares_nmc" : 0,
  139. "stale_shares_nmc_since_reset" : 0,
  140. "stale_shares_since_reset" : 0,
  141. "unknown_shares" : 0,
  142. "unknown_shares_nmc" : 0,
  143. "unknown_shares_nmc_since_reset" : 0,
  144. "unknown_shares_since_reset" : 0,
  145. "valid_shares" : 0,
  146. "valid_shares_nmc" : 0,
  147. "valid_shares_nmc_since_reset" : 0,
  148. "valid_shares_since_reset" : 0,
  149. "worker_name" : "trumpetx_other"
  150. }
  151. }
  152. }
  153. */
  154. /* @formatter:on */
  155. /**
  156. *
  157. */
  158. private static final long serialVersionUID = 2399234390831522839L;
  159. public StatusMetadata getMetadata()
  160. {
  161. return new BtcguildStatusMetadata();
  162. }
  163. static class BtcguildStatusMetadata
  164. extends StatusMetadataBase
  165. {
  166. @Override
  167. public String getName()
  168. {
  169. return Configuration.POOL_BTCGUILD;
  170. }
  171. @Override
  172. public String getLabel()
  173. {
  174. return "BTC Guild";
  175. }
  176. @Override
  177. public String getDirections()
  178. {
  179. String youCanGetYourAPIKey = "on your profile page at\nhttp://www.btcguild.com/my_api.php";
  180. return getCommonDirections( "BTC Guild", youCanGetYourAPIKey );
  181. }
  182. @Override
  183. public StatusDataAdapter getDataAdapter()
  184. {
  185. return new BtcguildStatusDataAdapter();
  186. }
  187. @Override
  188. public Deserializer<? extends Status> getDeserializer()
  189. {
  190. return new BtcguildStatusDeserializer();
  191. }
  192. }
  193. static class BtcguildStatusDataAdapter
  194. extends DefaultStatusDataAdapter
  195. {
  196. @Override
  197. public String[] getURLTemplates()
  198. {
  199. return new String[] { "https://www.btcguild.com/api.php?api_key=%MINER%" };
  200. }
  201. }
  202. static class BtcguildStatusDeserializer
  203. extends GsonDeserializer<BtcguildStatus>
  204. {
  205. public BtcguildStatusDeserializer()
  206. {
  207. super(BtcguildStatus.class);
  208. }
  209. }
  210. private BtcguildUser user;
  211. private BtcguildPool pool;
  212. private Map<String, BtcguildWorker> workers;
  213. private String apiKey;
  214. @Override
  215. public void collectHashrates( List<BigDecimal> set )
  216. {
  217. set.add( getTotalHashrate() );
  218. for ( String key : getWorkers().keySet() )
  219. {
  220. BtcguildWorker worker = getWorkers().get( key );
  221. set.add( worker.getHash_rate() );
  222. }
  223. }
  224. @Override
  225. public BigDecimal getTotalHashrate()
  226. {
  227. BigDecimal hashRate = BigDecimal.ZERO;
  228. if ( workers != null )
  229. {
  230. for ( String key : workers.keySet() )
  231. {
  232. BtcguildWorker worker = (BtcguildWorker) workers.get( key );
  233. hashRate = hashRate.add( worker.getHash_rate() );
  234. }
  235. }
  236. return hashRate.setScale( 2, BigDecimal.ROUND_HALF_UP );
  237. }
  238. @Override
  239. public String getUsername()
  240. {
  241. return DEFAULT_USERNAME;
  242. }
  243. @Override
  244. public String getDisplayCol1()
  245. {
  246. if ( user == null )
  247. {
  248. return "";
  249. }
  250. return user.getPast_24h_rewards().toString();
  251. }
  252. @Override
  253. public String getDisplayCol2()
  254. {
  255. if ( workers == null )
  256. {
  257. return "No Workers";
  258. }
  259. else
  260. {
  261. return super.formatHashrate( getTotalHashrate() );
  262. }
  263. }
  264. @Override
  265. public String getUsernameLabel()
  266. {
  267. return "";
  268. }
  269. @Override
  270. public String getDisplayCol1Label()
  271. {
  272. return "Past 24 Hrs Rewards";
  273. }
  274. @Override
  275. public String getDisplayCol2Label()
  276. {
  277. return "Hash Rate";
  278. }
  279. public BtcguildUser getUser()
  280. {
  281. return user;
  282. }
  283. public void setUser( BtcguildUser user )
  284. {
  285. this.user = user;
  286. }
  287. public BtcguildPool getPool()
  288. {
  289. return pool;
  290. }
  291. public void setPool( BtcguildPool pool )
  292. {
  293. this.pool = pool;
  294. }
  295. public Map<String, BtcguildWorker> getWorkers()
  296. {
  297. return workers;
  298. }
  299. public void setWorkers( Map<String, BtcguildWorker> workers )
  300. {
  301. this.workers = workers;
  302. }
  303. public String getApiKey()
  304. {
  305. return apiKey;
  306. }
  307. public void setApiKey( String apiKey )
  308. {
  309. this.apiKey = apiKey;
  310. }
  311. public void render( ViewMinerActivity activity )
  312. {
  313. TableLayout tl = (TableLayout) activity.findViewById( R.id.detailedView );
  314. tl.addView( activity.renderRow( "Paid Rewards", getUser().getPaid_rewards() ) );
  315. tl.addView( activity.renderRow( "24h Rewards", getUser().getPast_24h_rewards() ) );
  316. tl.addView( activity.renderRow( "Unpaid Rewards", getUser().getUnpaid_rewards() ) );
  317. tl.addView( activity.renderRow( "NMC Paid Rewards", getUser().getPaid_rewards_nmc() ) );
  318. tl.addView( activity.renderRow( "NMC 24h rewards", getUser().getPast_24h_rewards_nmc() ) );
  319. tl.addView( activity.renderRow( "NMC Unpaid Rewards", getUser().getUnpaid_rewards_nmc() ) );
  320. tl.addView( activity.renderRow( DEFAULT_USERNAME + ":", "" ) );
  321. if ( getWorkers() != null )
  322. {
  323. for ( String key : getWorkers().keySet() )
  324. {
  325. BtcguildWorker worker = getWorkers().get( key );
  326. tl.addView( activity.renderRow( "", worker.getWorker_name() ) );
  327. tl.addView( activity.renderRow( "Hashrate", super.formatHashrate( worker.getHash_rate() ) ) );
  328. tl.addView( activity.renderRow( "Valid Shares", worker.getValid_shares() ) );
  329. tl.addView( activity.renderRow( "Dupe Shares", worker.getDupe_shares() ) );
  330. tl.addView( activity.renderRow( "Stale Shares", worker.getStale_shares() ) );
  331. tl.addView( activity.renderRow( "Valid NMC Shares", worker.getValid_shares_nmc() ) );
  332. tl.addView( activity.renderRow( "Dupe NMC Shares", worker.getDupe_shares_nmc() ) );
  333. tl.addView( activity.renderRow( "Stale NMC Shares", worker.getStale_shares_nmc() ) );
  334. tl.addView( activity.renderRow( "", "" ) );
  335. }
  336. }
  337. tl.addView( activity.renderRow( "", "" ) );
  338. }
  339. }