15
15
*/
16
16
package org .mapleaf .cointda .view ;
17
17
18
+ import java .io .File ;
18
19
import java .io .IOException ;
19
20
import java .net .URL ;
21
+ import java .util .ArrayList ;
22
+ import java .util .List ;
20
23
import java .util .ResourceBundle ;
21
24
import javafx .event .ActionEvent ;
22
25
import javafx .fxml .FXML ;
29
32
import javafx .scene .control .MenuItem ;
30
33
import javafx .scene .layout .AnchorPane ;
31
34
import javafx .scene .layout .BorderPane ;
35
+ import javafx .stage .FileChooser ;
36
+ import javafx .stage .FileChooser .ExtensionFilter ;
32
37
import javafx .stage .Stage ;
33
38
import org .apache .logging .log4j .LogManager ;
34
39
import org .apache .logging .log4j .Logger ;
40
+ import org .mapleaf .cointda .bean .TradeDataBean ;
35
41
import org .mapleaf .cointda .crypto .CoinListingCollector ;
36
42
import org .mapleaf .cointda .dao .CoinListingDao ;
43
+ import org .mapleaf .cointda .dao .TradeDataDao ;
44
+ import org .mapleaf .cointda .util .CSVHelper ;
37
45
38
46
/**
39
47
* FXML Controller class
@@ -49,8 +57,6 @@ public class RootLayoutController implements Initializable {
49
57
@ FXML
50
58
private ContextMenu settingMenu ;
51
59
@ FXML
52
- private MenuItem typeItem ;
53
- @ FXML
54
60
private MenuItem priceItem ;
55
61
@ FXML
56
62
private Button settingButton ;
@@ -86,18 +92,53 @@ private void handleSetting(ActionEvent event) {
86
92
settingMenu .show (settingButton , Side .RIGHT , 0 , 0 );
87
93
}
88
94
95
+ /**
96
+ * 导出交易数据到csv文件
97
+ *
98
+ * @param event
99
+ */
100
+ @ FXML
101
+ private void handleExportData (ActionEvent event ) {
102
+ List <TradeDataBean > list = TradeDataDao .queryAll ();
103
+ List <String []> data = new ArrayList <>();
104
+ String [] headers = {"id" , "coid_id" , "简称" , "买卖" , "单价" , "数量" , "总价" , "交易时间" };
105
+ if (list == null ) {
106
+ Alert alert = new Alert (Alert .AlertType .INFORMATION );
107
+ alert .setTitle ("消息" );
108
+ alert .setHeaderText ("导出数据失败" );
109
+ alert .setContentText ("没有交易数据!" );
110
+ alert .showAndWait ();
111
+ return ;
112
+ }
113
+ list .stream ().map ((bean ) -> {
114
+ String [] str = new String [8 ];
115
+ str [0 ] = bean .getId ().toString ();
116
+ str [1 ] = bean .getCoin_id ().toString ();
117
+ str [2 ] = bean .getCoin_symbol ();
118
+ str [3 ] = bean .getSale_or_buy ();
119
+ str [4 ] = bean .getPrice ().toString ();
120
+ str [5 ] = bean .getNum ().toString ();
121
+ str [6 ] = bean .getTotal_price ().toString ();
122
+ str [7 ] = bean .getTrade_date ();
123
+ return str ;
124
+ }).forEachOrdered ((str ) -> {
125
+ data .add (str );
126
+ });
127
+ FileChooser fileChooser = new FileChooser ();
128
+ //文档类型过滤器
129
+ ExtensionFilter extFilter = new ExtensionFilter ("txt files (*.csv)" , "*.csv" );
130
+ fileChooser .getExtensionFilters ().add (extFilter );
131
+ File file = fileChooser .showSaveDialog (pane .getScene ().getWindow ());
132
+ CSVHelper .writeCsv (headers , data , file );
133
+ }
134
+
89
135
@ FXML
90
136
private void handleCloseApp (ActionEvent event ) {
91
137
//Platform.exit();
92
138
Stage stage = (Stage ) pane .getScene ().getWindow ();
93
139
stage .close ();
94
140
}
95
141
96
- @ FXML
97
- private void handleSettingType (ActionEvent event ) {
98
- showTypeSettingView ();
99
- }
100
-
101
142
@ FXML
102
143
private void handleSettingPrice (ActionEvent event ) {
103
144
showSettingPriceView ();
@@ -135,12 +176,6 @@ public void setPane(BorderPane pane) {
135
176
*/
136
177
private boolean update () {
137
178
boolean ok = false ;
138
- // CoinIDMapCollector coin = new CoinIDMapCollector();
139
- // if (CoinMarketCapDao.truncate()) {
140
- // if (CoinMarketCapDao.batchInsert(coin.getCoinMarketCapIds()).length > 0) {
141
- // ok = true;
142
- // }
143
- // }
144
179
CoinListingCollector listing = new CoinListingCollector ();
145
180
if (CoinListingDao .truncate ()) {
146
181
if (CoinListingDao .batchInsert (listing .getCoinMarketListing ()).length > 0 ) {
@@ -198,22 +233,6 @@ public void showPATableView() {
198
233
}
199
234
}
200
235
201
- /**
202
- * 显示品种类型设置视图
203
- */
204
- public void showTypeSettingView () {
205
- try {
206
- FXMLLoader loader = new FXMLLoader ();
207
- loader .setLocation (RootLayoutController .class .getResource ("TypeSettingView.fxml" ));
208
- AnchorPane dataEditView = (AnchorPane ) loader .load ();
209
- pane .setCenter (dataEditView );
210
- //转移焦点到center
211
- dataEditView .requestFocus ();
212
- } catch (IOException e ) {
213
- LOGGER .error (e );
214
- }
215
- }
216
-
217
236
/**
218
237
* 显示品种价格设置视图
219
238
*/
0 commit comments