Advertisement
Guest User

Untitled

a guest
May 31st, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.13 KB | None | 0 0
  1. package ui;
  2.  
  3. import java.awt.EventQueue;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.ActionEvent;
  6.  
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.border.EmptyBorder;
  10. import javax.swing.table.DefaultTableModel;
  11. import javax.swing.table.TableModel;
  12. import javax.swing.table.TableRowSorter;
  13. import javax.swing.JToolBar;
  14. import javax.swing.SwingUtilities;
  15. import javax.swing.JButton;
  16. import javax.swing.JFileChooser;
  17. import javax.swing.JScrollPane;
  18. import javax.swing.JTextArea;
  19. import javax.swing.JTable;
  20.  
  21. import org.rosuda.REngine.Rserve.RConnection;
  22. import org.rosuda.REngine.Rserve.RserveException;
  23.  
  24. import java.io.File;
  25. import java.sql.Connection;
  26. import java.sql.DriverManager;
  27. import java.sql.PreparedStatement;
  28. import java.sql.ResultSet;
  29. import java.sql.SQLException;
  30. import java.sql.Statement;
  31. import java.text.DecimalFormat;
  32. import java.text.NumberFormat;
  33. import java.text.SimpleDateFormat;
  34. import java.util.ArrayList;
  35. import java.util.Date;
  36. import java.util.List;
  37. import java.util.UUID;
  38.  
  39. @SuppressWarnings("serial")
  40. public class MainUI extends JFrame {
  41.  
  42. // Resource file to Rserve()
  43. private static final String RSOURCEFILE = "source('E:\\\\MyFrontEnd.R')";
  44.  
  45. // Table header
  46. private static final Object[] headers = { "BATCH_ID", "FILE_NAME", "START_DATE", "END_DATE", "STATUS", "REMARKS" };
  47.  
  48. // date & time vars
  49. private long start;
  50. private long end;
  51. private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
  52. private Date startDate;
  53. private Date endDate;
  54.  
  55. // UI elements
  56. private JPanel contentPane;
  57. private JFileChooser openFile;
  58. private final JScrollPane scrollPaneForConsole;
  59. private JTextArea console;
  60. private JScrollPane scrollPaneForTable;
  61. private JTable table;
  62. private DefaultTableModel tableModel;
  63.  
  64. // R connection
  65. private RConnection rConnection;
  66.  
  67. // Database parameters
  68. private static Connection connection = null;
  69. private static final String connectionUrl = "jdbc:oracle:thin:@192.168.99.1:1521:ORCL";
  70. private static final String connectionUser = "test";
  71. private static final String connectionPassword = "test";
  72.  
  73.  
  74. /**
  75. * Launch the application.
  76. */
  77. public static void main(String[] args) {
  78. EventQueue.invokeLater(new Runnable() {
  79. public void run() {
  80. try {
  81. MainUI frame = new MainUI();
  82. frame.setVisible(true);
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86. }
  87. });
  88. }
  89.  
  90. /**
  91. * Create the frame.
  92. */
  93. public MainUI() {
  94. setResizable(false);
  95. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  96. setBounds(100, 100, 1002, 415);
  97. contentPane = new JPanel();
  98. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  99. setContentPane(contentPane);
  100. contentPane.setLayout(null);
  101.  
  102. JToolBar toolBar = new JToolBar();
  103. toolBar.setBounds(5, 5, 991, 30);
  104. toolBar.setFloatable(false);
  105. contentPane.add(toolBar);
  106.  
  107. // Open file dialog with action
  108. JButton btnOpen = new JButton("Open");
  109. toolBar.add(btnOpen);
  110. btnOpen.addActionListener(new ActionListener() {
  111. public void actionPerformed(ActionEvent arg0) {
  112. openFile = new JFileChooser();
  113. openFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
  114. openFile.setMultiSelectionEnabled(true);
  115. openFile.showOpenDialog(MainUI.this);
  116.  
  117. File[] files = openFile.getSelectedFiles();
  118.  
  119. for(int i = 0; i < files.length; i++){
  120.  
  121. final File uploadedFile = files[i];
  122. consoleAppender("Chose: " + uploadedFile.getAbsolutePath());
  123.  
  124. start = System.currentTimeMillis();
  125. startDate = new Date(start);
  126. final String uuidTmp = UUID.randomUUID().toString();
  127. Object[] dataForTable = {uuidTmp, uploadedFile.getName(), dateFormat.format(startDate), null, "In Progress", ""};
  128. tableModel.addRow(dataForTable);
  129. storeDbData(dataForTable);
  130.  
  131. try {
  132.  
  133. SwingUtilities.invokeLater(new Runnable() {
  134. public void run() {
  135. rEvent(uuidTmp, uploadedFile);
  136. }
  137. });
  138.  
  139. } catch (NullPointerException e) {
  140. consoleAppender("File was not chosen");
  141. }
  142. }
  143.  
  144. }
  145. });
  146.  
  147. // Scroll with Text Area for console
  148. scrollPaneForConsole = new JScrollPane();
  149. scrollPaneForConsole.setBounds(0, 320, 996, 66);
  150. contentPane.add(scrollPaneForConsole);
  151.  
  152. console = new JTextArea();
  153. scrollPaneForConsole.setViewportView(console);
  154.  
  155. // Main UI part with table
  156. scrollPaneForTable = new JScrollPane();
  157. scrollPaneForTable.setBounds(0, 36, 996, 273);
  158. contentPane.add(scrollPaneForTable);
  159.  
  160. tableModel = new DefaultTableModel(null, headers);
  161. table = new JTable(tableModel);
  162. scrollPaneForTable.setViewportView(table);
  163.  
  164. // Table sorter
  165. TableRowSorter<TableModel> sorterHeader = new TableRowSorter<TableModel>(table.getModel());
  166. table.setRowSorter(sorterHeader);
  167.  
  168. // Load DB driver
  169. try {
  170. Class.forName("oracle.jdbc.driver.OracleDriver");
  171. } catch (ClassNotFoundException e) {
  172. consoleAppender(e.getMessage());
  173. }
  174.  
  175. // Get data from db and put it into table
  176. List<Object[]> dataFromDb = getDbData();
  177. for(int i = 0; i < dataFromDb.size(); i++){
  178. tableModel.addRow(dataFromDb.get(i));
  179. }
  180. }
  181.  
  182. /**
  183. * Append text to console
  184. * @param text
  185. */
  186. private void consoleAppender(String text) {
  187. console.append(text + "\n");
  188. }
  189.  
  190. /**
  191. * R script processing and storing results to DB
  192. */
  193. public void rEvent(String uuid, File file) {
  194. try {
  195. consoleAppender("Start uploading to Rserve()...");
  196.  
  197. rConnection = new RConnection();
  198. rConnection.eval(RSOURCEFILE);
  199.  
  200. rConnection.close();
  201.  
  202. end = System.currentTimeMillis();
  203. endDate= new Date(end);
  204.  
  205. NumberFormat formatter = new DecimalFormat("#0.00000");
  206. consoleAppender("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
  207.  
  208. consoleAppender("File Written Succesfully.....");
  209.  
  210. // add data to table and store it into database
  211. for(int i = 0; i < table.getRowCount(); i++){
  212. if(table.getValueAt(i, 0).equals(uuid)){
  213. tableModel.removeRow(i);
  214. }
  215. }
  216.  
  217. Object[] dataForTable = {uuid, file.getName(), dateFormat.format(startDate), dateFormat.format(endDate), "Success", "+"};
  218. tableModel.addRow(dataForTable);
  219. updateDbData(dataForTable);
  220.  
  221. } catch (RserveException e) {
  222. for(int i = 0; i < table.getRowCount(); i++){
  223. if(table.getValueAt(i, 0).equals(uuid)){
  224. tableModel.removeRow(i);
  225. }
  226. }
  227. Object[] dataForTable = {uuid, file.getName(), dateFormat.format(startDate), dateFormat.format(endDate), "Error", "-"};
  228. tableModel.addRow(dataForTable);
  229. updateDbData(dataForTable);
  230.  
  231. consoleAppender("ERROR: " + e.getMessage());
  232. }
  233. }
  234.  
  235. /**
  236. * Store data to database into table: HM_PR_PERFORMANCE_VAR_LOG
  237. */
  238. private void storeDbData(Object[] data){
  239. try {
  240. connection = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
  241. String insertString = "insert into HM_PR_PERFORMANCE_VAR_LOG(batch_id, file_name, start_date, end_date, status, remarks)"
  242. + " values (?, ?, ?, ?, ?, ?)";
  243. PreparedStatement statement = connection.prepareStatement(insertString);
  244.  
  245. statement.setString(1, String.valueOf(data[0])); // id
  246. statement.setString(2, String.valueOf(data[1])); // filename
  247. statement.setString(3, String.valueOf(data[2])); // startDate
  248. statement.setString(4, String.valueOf(data[3])); // endDate
  249. statement.setString(5, String.valueOf(data[4])); // status
  250. statement.setString(6, String.valueOf(data[5])); // remarks
  251.  
  252. statement.execute();
  253. statement.close();
  254. connection.close();
  255. } catch (SQLException e) {
  256. e.printStackTrace();
  257. consoleAppender(e.getMessage());
  258. }
  259. }
  260.  
  261. /**
  262. * Update data in the data base
  263. * @param data
  264. */
  265. private void updateDbData(Object[] data){
  266. try {
  267. connection = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
  268. String insertString = "update HM_PR_PERFORMANCE_VAR_LOG set end_date = ?, status = ?, remarks = ? where batch_id = ?";
  269. PreparedStatement statement = connection.prepareStatement(insertString);
  270.  
  271. statement.setString(1, String.valueOf(data[3])); // endDate
  272. statement.setString(2, String.valueOf(data[4])); // status
  273. statement.setString(3, String.valueOf(data[5])); // remarks
  274. statement.setString(4, String.valueOf(data[0])); // id
  275.  
  276. statement.execute();
  277. statement.close();
  278. connection.close();
  279. } catch (SQLException e) {
  280. e.printStackTrace();
  281. consoleAppender(e.getMessage());
  282. }
  283. }
  284.  
  285. /**
  286. * Get data from database. From table: HM_PR_PERFORMANCE_VAR_LOG
  287. * @return List of Object[]
  288. */
  289. private List<Object[]> getDbData(){
  290.  
  291. List<Object[]> result = new ArrayList<Object[]>();
  292.  
  293. try {
  294. connection = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
  295. Statement statement = connection.createStatement();
  296.  
  297. statement.executeQuery("select * from HM_PR_PERFORMANCE_VAR_LOG");
  298. ResultSet rs = statement.getResultSet();
  299.  
  300. while(rs.next()){
  301. Object[] tmpResult = {rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6)};
  302. result.add(tmpResult);
  303. }
  304.  
  305. rs.close();
  306. statement.close();
  307. connection.close();
  308. } catch (SQLException e) {
  309. e.printStackTrace();
  310. consoleAppender(e.getMessage());
  311. }
  312.  
  313. return result;
  314. }
  315. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement