Advertisement
Guest User

Untitled

a guest
Nov 11th, 2015
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.63 KB | None | 0 0
  1. package com.indra.dataCampaign;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.GridBagConstraints;
  6. import java.awt.GridBagLayout;
  7. import java.awt.Insets;
  8. import java.awt.SystemColor;
  9. import java.awt.Toolkit;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.ItemEvent;
  13. import java.awt.event.ItemListener;
  14. import java.awt.event.MouseAdapter;
  15. import java.awt.event.MouseEvent;
  16. import java.math.BigDecimal;
  17. import java.sql.PreparedStatement;
  18. import java.sql.ResultSet;
  19. import java.sql.SQLException;
  20.  
  21. import javax.swing.DefaultComboBoxModel;
  22. import javax.swing.JButton;
  23. import javax.swing.JComboBox;
  24. import javax.swing.JFrame;
  25. import javax.swing.JLabel;
  26. import javax.swing.JMenuItem;
  27. import javax.swing.JOptionPane;
  28. import javax.swing.JPanel;
  29. import javax.swing.JPopupMenu;
  30. import javax.swing.JScrollPane;
  31. import javax.swing.JTable;
  32. import javax.swing.ListSelectionModel;
  33. import javax.swing.SwingUtilities;
  34. import javax.swing.UIManager;
  35. import javax.swing.border.EmptyBorder;
  36. import javax.swing.border.EtchedBorder;
  37. import javax.swing.border.LineBorder;
  38. import javax.swing.table.DefaultTableModel;
  39.  
  40. import net.proteanit.sql.DbUtils;
  41.  
  42. /**
  43. * @author Muthama and Njerenga.
  44. *
  45. */
  46. public class Rules extends JFrame implements ActionListener {
  47.  
  48.  
  49. private static final long serialVersionUID = 1L;
  50. Integer n_serial=0;
  51. private JPanel contentPane;
  52. static Params params;
  53. private JTable WorkloadsTable;
  54. private JTable CampaignsMetersTable;
  55. private JTable PotentialMetersTable;
  56. private final BigDecimal DEFAULT_FOOBAR_VALUE = new BigDecimal(0);
  57. BigDecimal meter_id, workload_id, batch_id, batch_id1;
  58. String meter_number = null, manufacturer = null, status = null,
  59. num_apa = null, meterrule = null, query_tmp = null ,ind_source = null;
  60. JButton btnAcceptRule;
  61. JButton btnReject;
  62. JPanel panelButtons;
  63. final JComboBox comboBoxRulesFilter;
  64. private JPanel panel ;
  65. private InfiniteProgressPanel glassPane;
  66. private JPopupMenu popupMenu;
  67. private JMenuItem menuItemEdit;
  68. public static String codigo;
  69. public static String selected_meter_number;
  70. private JLabel lblMeterCount;
  71. private int campaign_meters_count;
  72. private int potential_meters_count;
  73. private JLabel lblPotentialMeterCount;
  74.  
  75. /**
  76. * Create the frame.
  77. */
  78.  
  79. public Rules() {
  80.  
  81. setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  82. setBounds(100, 100, 1300, 707);
  83. contentPane = new JPanel();
  84. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  85. setContentPane(contentPane);
  86. contentPane.setLayout(null);
  87.  
  88. /*
  89. * Setting up the glasspane
  90. */
  91. this.glassPane = new InfiniteProgressPanel();
  92. setGlassPane(glassPane);
  93.  
  94. JPanel mainPanel = new JPanel();
  95. mainPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
  96. mainPanel.setBounds(10, 11, 1264, 640);
  97. contentPane.add(mainPanel);
  98. mainPanel.setLayout(null);
  99. this.setLocationRelativeTo(ChooseActivity.getInstance());
  100. this.setIconImage(Toolkit.getDefaultToolkit().getImage(DataCampaign.class.getResource("images/kenyapower.png")));
  101.  
  102.  
  103. panel = new JPanel();
  104. panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
  105. panel.setBounds(10, 49, 1244, 569);
  106. mainPanel.add(panel);
  107. GridBagLayout gbl_panel = new GridBagLayout();
  108. gbl_panel.columnWidths = new int[] { 220, 723, 300 };
  109. gbl_panel.rowHeights = new int[] { 50, 220, 30, 220, 40, 0 };
  110. gbl_panel.columnWeights = new double[] { 0.0, 1.0, 4.9E-324 };
  111. gbl_panel.rowWeights = new double[] { 0.0, 1.0, 0.0, 0.0, 0.0,
  112. Double.MIN_VALUE };
  113. panel.setLayout(gbl_panel);
  114.  
  115. /* Pop UP Menus for the table */
  116. popupMenu = new JPopupMenu();
  117. menuItemEdit = new JMenuItem("View Meters in the Same MeterBox");
  118.  
  119. menuItemEdit.addActionListener(this);
  120. popupMenu.add(menuItemEdit);
  121.  
  122. JLabel label = new JLabel(Params.getBundle().getString("Rules.label.text")); //$NON-NLS-1$
  123. label.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 14));
  124. GridBagConstraints gbc_label = new GridBagConstraints();
  125. gbc_label.insets = new Insets(0, 0, 5, 5);
  126. gbc_label.gridx = 0;
  127. gbc_label.gridy = 0;
  128. panel.add(label, gbc_label);
  129.  
  130. lblMeterCount = new JLabel();
  131. lblMeterCount.setText("Meter Count: ");
  132. lblMeterCount.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 14));
  133. GridBagConstraints gbc_lblMeterCount = new GridBagConstraints();
  134. gbc_lblMeterCount.insets = new Insets(0, 0, 5, 0);
  135. gbc_lblMeterCount.gridx = 2;
  136. gbc_lblMeterCount.gridy = 0;
  137. panel.add(lblMeterCount, gbc_lblMeterCount);
  138.  
  139. WorkloadsTable = new JTable() {
  140.  
  141. private static final long serialVersionUID = 1L;
  142.  
  143. @Override
  144. public boolean isCellEditable(int row, int column)
  145. {
  146. return false;
  147. }
  148. };
  149.  
  150. WorkloadsTable.setShowVerticalLines(false);
  151. WorkloadsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  152. WorkloadsTable.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
  153. WorkloadsTable.setBackground(UIManager.getColor("Panel.background"));
  154. WorkloadsTable.setFillsViewportHeight(true);
  155. WorkloadsTable.setCellSelectionEnabled(true);
  156. // WorkloadsTable.setAutoCreateRowSorter(true); // Enable sorting in the
  157. // table
  158. WorkloadsTable.setRowHeight(24);
  159. WorkloadsTable.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
  160.  
  161. JScrollPane workloadsScrollPane = new JScrollPane(WorkloadsTable);
  162. GridBagConstraints gbc_workloadsScrollPane = new GridBagConstraints();
  163. gbc_workloadsScrollPane.gridheight = 3;
  164. gbc_workloadsScrollPane.insets = new Insets(0, 0, 5, 5);
  165. gbc_workloadsScrollPane.fill = GridBagConstraints.BOTH;
  166. gbc_workloadsScrollPane.gridx = 0;
  167. gbc_workloadsScrollPane.gridy = 1;
  168. panel.add(workloadsScrollPane, gbc_workloadsScrollPane);
  169.  
  170. WorkloadsTable.addMouseListener(new MouseAdapter() {
  171. @Override
  172. public void mouseClicked(MouseEvent e) {
  173.  
  174. if (e.getClickCount() == 1) {
  175.  
  176.  
  177. btnAcceptRule.setEnabled(false);
  178. btnReject.setEnabled(false);
  179. WorkloadsTable = (JTable) e.getSource();
  180. int selected_row = WorkloadsTable.getSelectedRow();
  181.  
  182. batch_id = DEFAULT_FOOBAR_VALUE;
  183.  
  184. batch_id = (BigDecimal) WorkloadsTable.getModel()
  185. .getValueAt(selected_row, 0);
  186.  
  187. // Clear the other tables
  188. DefaultTableModel campaignsMetersModel = (DefaultTableModel) CampaignsMetersTable
  189. .getModel();
  190. campaignsMetersModel.setRowCount(0);
  191.  
  192. DefaultTableModel potentialMetersModel = (DefaultTableModel) PotentialMetersTable
  193. .getModel();
  194. potentialMetersModel.setRowCount(0);
  195.  
  196.  
  197.  
  198. SwingUtilities.invokeLater(new Runnable() {
  199. @Override
  200. public void run() {
  201. glassPane.start();
  202. Thread performer = new Thread(new Runnable() {
  203. @Override
  204. public void run() {
  205. populateCampaignsTable();
  206. glassPane.stop();
  207. }
  208. }, "Performer");
  209. performer.start();
  210. }
  211. });
  212.  
  213. }
  214. }
  215. });
  216.  
  217. CampaignsMetersTable = new JTable() {
  218.  
  219. private static final long serialVersionUID = 1L;
  220.  
  221. @Override
  222. public boolean isCellEditable(int row, int column)
  223. {
  224. return false;
  225. }
  226. };
  227.  
  228. // sets the popup menu for the table
  229. CampaignsMetersTable.setComponentPopupMenu(popupMenu);
  230.  
  231. CampaignsMetersTable.setShowVerticalLines(true);
  232. CampaignsMetersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  233. CampaignsMetersTable.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
  234. CampaignsMetersTable.setBackground(UIManager.getColor("Panel.background"));
  235. CampaignsMetersTable.setFillsViewportHeight(true);
  236. CampaignsMetersTable.setAutoCreateRowSorter(true); // Enable sorting in the table
  237. CampaignsMetersTable.setRowHeight(24);
  238. CampaignsMetersTable.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
  239. CampaignsMetersTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  240.  
  241.  
  242. JScrollPane campaignMetersScrollPane = new JScrollPane(CampaignsMetersTable);
  243. GridBagConstraints gbc_campaignMetersScrollPane = new GridBagConstraints();
  244. gbc_campaignMetersScrollPane.gridwidth = 2;
  245. gbc_campaignMetersScrollPane.insets = new Insets(0, 0, 5, 0);
  246. gbc_campaignMetersScrollPane.fill = GridBagConstraints.BOTH;
  247. gbc_campaignMetersScrollPane.gridx = 1;
  248. gbc_campaignMetersScrollPane.gridy = 1;
  249. panel.add(campaignMetersScrollPane, gbc_campaignMetersScrollPane);
  250.  
  251. JLabel lblPotentialMeters = new JLabel("Potential Meters in ICS");
  252. lblPotentialMeters.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 14));
  253. GridBagConstraints gbc_lblPotentialMeters = new GridBagConstraints();
  254. gbc_lblPotentialMeters.insets = new Insets(0, 0, 5, 5);
  255. gbc_lblPotentialMeters.gridx = 1;
  256. gbc_lblPotentialMeters.gridy = 2;
  257. panel.add(lblPotentialMeters, gbc_lblPotentialMeters);
  258.  
  259. /*
  260. * JPanel panel_1 = new JPanel(); GridBagConstraints gbc_panel_1 = new
  261. * GridBagConstraints(); gbc_panel_1.insets = new Insets(0, 0, 5, 5);
  262. * gbc_panel_1.fill = GridBagConstraints.BOTH; gbc_panel_1.gridx = 1;
  263. * gbc_panel_1.gridy = 3; panel.add(panel_1, gbc_panel_1);
  264. */
  265.  
  266. lblPotentialMeterCount = new JLabel("Meter Count: ");
  267. lblPotentialMeterCount.setFont(new Font("Segoe UI Semibold",
  268. Font.PLAIN, 14));
  269. GridBagConstraints gbc_lblPotentialMeterCount = new GridBagConstraints();
  270. gbc_lblPotentialMeterCount.insets = new Insets(0, 0, 5, 0);
  271. gbc_lblPotentialMeterCount.gridx = 2;
  272. gbc_lblPotentialMeterCount.gridy = 2;
  273. panel.add(lblPotentialMeterCount, gbc_lblPotentialMeterCount);
  274. PotentialMetersTable = new JTable() {
  275.  
  276. private static final long serialVersionUID = 1L;
  277.  
  278. @Override
  279. public boolean isCellEditable(int row, int column) {
  280. return false;
  281. }
  282. };
  283. PotentialMetersTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  284.  
  285. PotentialMetersTable.setShowVerticalLines(true);
  286. PotentialMetersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  287. PotentialMetersTable.setRowHeight(24);
  288. PotentialMetersTable.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
  289. PotentialMetersTable.setFillsViewportHeight(true);
  290. PotentialMetersTable.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
  291. PotentialMetersTable.setBackground(SystemColor.menu);
  292. PotentialMetersTable.setAutoCreateRowSorter(true);
  293.  
  294. JScrollPane potentialMetersScrollPane = new JScrollPane(PotentialMetersTable);
  295. GridBagConstraints gbc_potentialMetersScrollPane = new GridBagConstraints();
  296. gbc_potentialMetersScrollPane.gridwidth = 2;
  297. gbc_potentialMetersScrollPane.fill = GridBagConstraints.BOTH;
  298. gbc_potentialMetersScrollPane.insets = new Insets(0, 0, 5, 0);
  299. gbc_potentialMetersScrollPane.gridx = 1;
  300. gbc_potentialMetersScrollPane.gridy = 3;
  301. panel.add(potentialMetersScrollPane, gbc_potentialMetersScrollPane);
  302.  
  303.  
  304.  
  305. JLabel lblMetersWithRules = new JLabel(Params.getBundle().getString("Rules.lblMetersWithRules.text")); //$NON-NLS-1$
  306. lblMetersWithRules.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 14));
  307. GridBagConstraints gbc_lblMetersWithRules = new GridBagConstraints();
  308. gbc_lblMetersWithRules.insets = new Insets(0, 0, 5, 5);
  309. gbc_lblMetersWithRules.gridx = 1;
  310. gbc_lblMetersWithRules.gridy = 0;
  311. panel.add(lblMetersWithRules, gbc_lblMetersWithRules);
  312.  
  313. panelButtons = new JPanel();
  314. panelButtons.setBorder(null);
  315. panelButtons.setLayout(null);
  316. GridBagConstraints gbc_panelbuttons = new GridBagConstraints();
  317. gbc_panelbuttons.insets = new Insets(0, 0, 0, 5);
  318. gbc_panelbuttons.fill = GridBagConstraints.BOTH;
  319. gbc_panelbuttons.gridx = 1;
  320. gbc_panelbuttons.gridy = 4;
  321. panel.add(panelButtons, gbc_panelbuttons);
  322.  
  323. comboBoxRulesFilter = new JComboBox();
  324. comboBoxRulesFilter.setModel(new DefaultComboBoxModel(new String[] {""}));
  325. panelButtons.add(comboBoxRulesFilter);
  326. JLabel lblrulefilter = new JLabel(Params.getBundle().getString("Rules.lblrulefilter.text")); //$NON-NLS-1$
  327. lblrulefilter.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 13));
  328. lblrulefilter.setBounds(10, 13, 71, 19);
  329. panelButtons.add(lblrulefilter);
  330.  
  331. btnAcceptRule = new JButton(Params.getBundle().getString("Rules.btnAcceptRule.text")); //$NON-NLS-1$
  332. btnAcceptRule.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
  333. btnAcceptRule.setBounds(411, 11, 114, 23);
  334. panelButtons.add(btnAcceptRule);
  335.  
  336.  
  337. populateWorkloads();
  338. PreparedStatement preStatement_rule = null;
  339. ResultSet result_rule = null;
  340.  
  341. try {
  342. String query_rules = "SELECT D_CODE FROM "+Params.getRefCodes()+" WHERE ID_CDCS LIKE 'MR%' ORDER BY ID_CDCS ASC";
  343. preStatement_rule = Params.getDb().prepareStatement(query_rules);
  344. result_rule = preStatement_rule.executeQuery();
  345. while (result_rule.next())
  346. {
  347. comboBoxRulesFilter.addItem(result_rule.getString(1));
  348. }
  349. result_rule.close();
  350. preStatement_rule.close();
  351. } catch (SQLException er) {
  352. er.printStackTrace();
  353. Params.errorNotification(er);
  354. }
  355.  
  356. CampaignsMetersTable.addMouseListener(new MouseAdapter() {
  357. @Override
  358. public void mouseClicked(MouseEvent e)
  359. {
  360.  
  361. if (e.getClickCount()==1){
  362.  
  363.  
  364. btnAcceptRule.setEnabled(false);
  365. btnReject.setEnabled(true);
  366. CampaignsMetersTable = (JTable) e.getSource();
  367. int selected_row = CampaignsMetersTable.getSelectedRow();
  368.  
  369. workload_id = DEFAULT_FOOBAR_VALUE;
  370. meter_id = DEFAULT_FOOBAR_VALUE;
  371. meter_number = "";
  372.  
  373. workload_id = (BigDecimal) CampaignsMetersTable.getValueAt(
  374. selected_row, 12);
  375. meter_id = (BigDecimal) CampaignsMetersTable.getValueAt(
  376. selected_row, 11);
  377. meter_number = (String)CampaignsMetersTable.getValueAt(selected_row,0);
  378.  
  379. query_tmp = "SELECT tmp.NUM_APA AS METER_NUMBER, codes (tmp.CO_MARCA) AS MANUFACTURER, "
  380. + "get_last_reading(tmp.nis_rad,tmp.num_apa) as Readings, codes(get_model(tmp.num_apa)) as Model, "
  381. + "TRIM (icf.num_puerta || ' ' || icj.nom_calle || ' ' || ict.desc_tipo) AS Address, icl.nom_local AS Locality, icf.ref_dir AS Plot_Reference, "
  382. + "icm.nom_munic AS Municipality, CODES (tmp.APPLIED_RULE) AS RULE, CODES (tmp.STATUS) AS STATUS,"
  383. + " icf.num_itin AS Itinerary,"
  384. + " tmp.ID_METER AS METER_CODE, tmp.ID_WORKLOAD AS JOB_ID, tmp.IND_SOURCE AS SOURCE FROM "
  385. + Params.getTmpPotential()
  386. + " tmp, fincas@ics.world icf, tipos@ics.world ict, callejero@ics.world icj,"
  387. + " localidades@ics.world icl, municipios@ics.world icm "
  388. + " WHERE icf.nif = tmp.nif_apa"
  389. + " AND icf.cod_calle = icj.cod_calle"
  390. + " AND icj.cod_local = icl.cod_local"
  391. + " AND icl.cod_munic = icm.cod_munic"
  392. + " AND icj.tip_via = ict.tipo "
  393. + " AND tmp.ID_METER = "
  394. + meter_id
  395. + " AND tmp.ID_WORKLOAD ="
  396. + workload_id
  397. + " AND tmp.IND_SOURCE <> 'X' AND tmp.status = 'SP030' ";
  398.  
  399. SwingUtilities.invokeLater(new Runnable() {
  400. @Override
  401. public void run() {
  402. glassPane.start();
  403. Thread performer = new Thread(new Runnable() {
  404. @Override
  405. public void run() {
  406. /* Populate Potential Meters Table */
  407. populatePotentialMetersTable(query_tmp);
  408. glassPane.stop();
  409. }
  410. }, "Performer");
  411. performer.start();
  412. }
  413. });
  414.  
  415. }
  416. }
  417. });
  418.  
  419.  
  420. PotentialMetersTable.addMouseListener(new MouseAdapter() {
  421. @Override
  422. public void mouseClicked(MouseEvent e)
  423. {
  424. PotentialMetersTable = (JTable) e.getSource();
  425. int selected_row_tmp = PotentialMetersTable.getSelectedRow();
  426.  
  427.  
  428. if (e.getClickCount()==1){
  429.  
  430. manufacturer = (String) PotentialMetersTable.getValueAt(
  431. selected_row_tmp, 1);
  432. status = (String) PotentialMetersTable.getValueAt(
  433. selected_row_tmp, 9);
  434. num_apa = (String) PotentialMetersTable.getValueAt(
  435. selected_row_tmp, 0);
  436. meterrule = (String) PotentialMetersTable.getValueAt(
  437. selected_row_tmp, 8);
  438. ind_source= (String) PotentialMetersTable.getValueAt(
  439. selected_row_tmp, 13);
  440.  
  441. //CHECK IND SOURCE
  442. System.out.println(ind_source);
  443.  
  444. /*
  445. * rule_to_apply = (String) PotentialMetersTable.getValueAt(
  446. * selected_row_tmp, 13);
  447. */
  448. if (status.equals("Pending Review"))
  449. {
  450. btnAcceptRule.setEnabled(true);
  451. }
  452. }
  453. }
  454. });
  455.  
  456. comboBoxRulesFilter.addItemListener(new ItemListener() {
  457.  
  458. @Override
  459. public void itemStateChanged(ItemEvent e)
  460. {
  461.  
  462. if (e.getStateChange()== ItemEvent.SELECTED) {
  463.  
  464. String selectedrule = (String) comboBoxRulesFilter.getSelectedItem();
  465.  
  466. query_tmp = "SELECT tmp.NUM_APA AS METER_NUMBER, codes (tmp.CO_MARCA) AS MANUFACTURER, "
  467. + "get_last_reading(tmp.nis_rad,tmp.num_apa) as Readings, codes(get_model(tmp.num_apa)) as Model, "
  468. + "TRIM (icf.num_puerta || ' ' || icj.nom_calle || ' ' || ict.desc_tipo) AS Address, icl.nom_local AS Locality, icf.ref_dir AS Plot_Reference, "
  469. + "icm.nom_munic AS Municipality, CODES (tmp.APPLIED_RULE) AS RULE, CODES (tmp.STATUS) AS STATUS,"
  470. + " icf.num_itin AS Itinerary,"
  471. + " tmp.ID_METER AS METER_CODE, tmp.ID_WORKLOAD AS JOB_ID FROM "
  472. + Params.getTmpPotential()
  473. + " tmp, fincas@ics.world icf, tipos@ics.world ict, callejero@ics.world icj,"
  474. + " localidades@ics.world icl, municipios@ics.world icm "
  475. + " WHERE icf.nif = tmp.nif_apa"
  476. + " AND icf.cod_calle = icj.cod_calle"
  477. + " AND icj.cod_local = icl.cod_local"
  478. + " AND icl.cod_munic = icm.cod_munic"
  479. + " AND icj.tip_via = ict.tipo "
  480. + " AND tmp.ID_METER = "
  481. + meter_id
  482. + " AND tmp.ID_WORKLOAD ="
  483. + workload_id
  484. + " AND tmp.IND_SOURCE <> 'X' AND tmp.status = 'SP030' AND CODES(tmp.APPLIED_RULE)='"
  485. + selectedrule + "'";
  486.  
  487.  
  488. populatePotentialMetersTable(query_tmp);
  489.  
  490. }
  491. }
  492. });
  493.  
  494.  
  495. comboBoxRulesFilter.setBounds(91, 12, 172, 22);
  496.  
  497. btnAcceptRule.setEnabled(false);
  498.  
  499. btnReject = new JButton("Reject Rules");
  500. btnReject.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
  501. btnReject.addActionListener(new ActionListener() {
  502. @Override
  503. public void actionPerformed(ActionEvent e) {
  504.  
  505. SwingUtilities.invokeLater(new Runnable() {
  506. @Override
  507. public void run() {
  508. glassPane.start();
  509. Thread performer = new Thread(new Runnable() {
  510. @Override
  511. public void run() {
  512. /* Call Unmatch Function */
  513. unmatchMeter();
  514.  
  515. /* Populate Campaign Meters Table */
  516. populateCampaignsTable();
  517. DefaultTableModel potentialMetersModel = (DefaultTableModel) PotentialMetersTable
  518. .getModel();
  519. potentialMetersModel.setRowCount(0);
  520. // PotentialMetersTable.repaint();
  521. glassPane.stop();
  522. }
  523. }, "Performer");
  524. performer.start();
  525. }
  526. });
  527. }
  528. });
  529. GridBagConstraints gbc_btnReject = new GridBagConstraints();
  530. gbc_btnReject.gridx = 2;
  531. gbc_btnReject.gridy = 4;
  532. panel.add(btnReject, gbc_btnReject);
  533.  
  534. btnAcceptRule.addActionListener(new ActionListener() {
  535. @Override
  536. public void actionPerformed(ActionEvent e)
  537. {
  538. updatePotentialsTable(); //update potentials table
  539. cancelMetersApplied(); //cancel meters applied
  540. deleteMeters(); //delete meters
  541. // deleteDuplicateMeters(num_apa);
  542.  
  543. /* Refresh Campaign Table */
  544. contentPane.remove(CampaignsMetersTable);
  545. contentPane.repaint();
  546.  
  547. SwingUtilities.invokeLater(new Runnable() {
  548. @Override
  549. public void run() {
  550. glassPane.start();
  551. Thread performer = new Thread(new Runnable() {
  552. @Override
  553. public void run() {
  554. /* Populate Potential Meters Table */
  555. populateCampaignsTable();
  556. DefaultTableModel potentialMetersModel = (DefaultTableModel) PotentialMetersTable
  557. .getModel();
  558. potentialMetersModel.setRowCount(0);
  559. PotentialMetersTable.repaint();
  560. glassPane.stop();
  561. }
  562. }, "Performer");
  563. performer.start();
  564. }
  565. });
  566.  
  567. btnAcceptRule.setEnabled(false);
  568.  
  569. updateCamMetersTable();
  570. // updateDuplicateMeters(nis_rad);
  571.  
  572. }
  573. });
  574.  
  575.  
  576. JLabel lblCdscRulesApplication = new JLabel(Params.getBundle().getString("Rules.lblCdscRulesApplication.text")); //$NON-NLS-1$
  577. lblCdscRulesApplication.setFont(new Font("Segoe UI Semibold",
  578. Font.BOLD, 20));
  579. lblCdscRulesApplication.setBounds(561, 11, 231, 27);
  580. mainPanel.add(lblCdscRulesApplication);
  581. }
  582.  
  583.  
  584.  
  585. private void cancelMetersApplied(/*String meter_to_cancel*/){
  586.  
  587. //meter_to_cancel = num_apa;
  588. /*String query_cancel_status = "UPDATE "
  589. + Params.getTmpPotential()
  590. + " SET STATUS = 'SP050',DATE_UPDATED = SYSDATE WHERE NUM_APA = '"
  591. + meter_to_cancel
  592. + "' AND STATUS <> 'SP040' AND ID_WORKLOAD ='" + workload_id
  593. + "' AND ID_METER = '" + meter_id + "'"; ///remove num_apa
  594. */
  595.  
  596. //test change two
  597. String query_cancel_status = "UPDATE "
  598. + Params.getTmpPotential()
  599. + " SET STATUS = 'SP050',DATE_UPDATED = SYSDATE WHERE "
  600. + "STATUS <> 'SP040' AND ID_WORKLOAD ='" + workload_id
  601. + "' AND ID_METER = '" + meter_id + "'";
  602. PreparedStatement preStatement_cancel = null;
  603. ResultSet result_cancel = null;
  604. try {
  605. preStatement_cancel = Params.getDb().prepareStatement(query_cancel_status);
  606. result_cancel = preStatement_cancel.executeQuery();
  607. Params.getDb().commit();
  608. result_cancel.close();
  609. preStatement_cancel.close();
  610. }
  611. catch (SQLException e_tmp)
  612. {
  613. e_tmp.printStackTrace();
  614. Params.errorNotification(e_tmp);
  615. }
  616.  
  617. }
  618.  
  619. private void unmatchMeter() {
  620.  
  621. String query_cancel_status = "UPDATE "
  622. + Params.getTmpPotential()
  623. + " SET STATUS = 'SP050', DATE_UPDATED = SYSDATE WHERE ID_WORKLOAD ='"
  624. + workload_id + "' AND ID_METER = '" + meter_id + "'";
  625. PreparedStatement preStatement_cancel = null;
  626. ResultSet result_cancel = null;
  627. try {
  628. preStatement_cancel = Params.getDb().prepareStatement(
  629. query_cancel_status);
  630. result_cancel = preStatement_cancel.executeQuery();
  631. Params.getDb().commit();
  632. result_cancel.close();
  633. preStatement_cancel.close();
  634. } catch (SQLException e_tmp) {
  635. e_tmp.printStackTrace();
  636. Params.errorNotification(e_tmp);
  637. }
  638.  
  639. btnReject.setEnabled(false);
  640.  
  641. }
  642.  
  643. private void deleteMeters(){
  644.  
  645. String query_cancel_status = "DELETE FROM " + Params.getTmpPotential()
  646. + " WHERE NUM_APA = '" + num_apa + "' AND STATUS = 'SP030'"; //add co_marca
  647. PreparedStatement preStatement_cancel = null;
  648. ResultSet result_cancel = null;
  649. try {
  650. preStatement_cancel = Params.getDb().prepareStatement(query_cancel_status);
  651. result_cancel = preStatement_cancel.executeQuery();
  652. Params.getDb().commit();
  653. result_cancel.close();
  654. preStatement_cancel.close();
  655. }
  656. catch (SQLException e_tmp)
  657. {
  658. e_tmp.printStackTrace();
  659. Params.errorNotification(e_tmp);
  660. }
  661.  
  662. }
  663.  
  664.  
  665. private void populateWorkloads(){
  666. /*String query = "SELECT DISTINCT cb.id_batch, cb.id_feeder " + " FROM "
  667. + Params.getCamMeters() + " cm INNER JOIN "
  668. + Params.getCamWorkloads()
  669. + " cw on cm.id_workload=cw.id_workload INNER JOIN "
  670. + Params.getCamBatches()
  671. + " cb on cw.id_batch=cb.id_batch INNER JOIN "
  672. + Params.getTmpPotential() + " tmp on cm.id_meter=tmp.id_meter"
  673. + " WHERE SUBSTR (cm.a_flags, 1, 1) = '2' "
  674. + " ORDER BY cb.id_feeder ASC ";
  675. */
  676. String query = "SELECT DISTINCT cb.id_batch, cb.id_feeder " + " FROM "
  677. + Params.getCamMeters() + " cm INNER JOIN "
  678. + Params.getCamWorkloads()
  679. + " cw on cm.id_workload=cw.id_workload INNER JOIN "
  680. + Params.getCamBatches()
  681. + " cb on cw.id_batch=cb.id_batch INNER JOIN "
  682. + Params.getRefAreas()
  683. + " ra on cb.id_area = ra.id_area INNER JOIN "
  684. + Params.getAdmUsers()
  685. + " ad on cb.id_area = ad.id_region and ad.n_login = "+Login.getName+" INNER JOIN "
  686. + Params.getTmpPotential() + " tmp on cm.id_meter=tmp.id_meter"
  687. + " WHERE SUBSTR (cm.a_flags, 1, 1) = '2' "
  688. + " ORDER BY cb.id_feeder ASC ";
  689.  
  690. System.out.print(query);
  691. PreparedStatement preStatement = null;
  692. ResultSet result = null;
  693. try
  694. {
  695. preStatement = Params.getDb().prepareStatement(query);
  696. result = preStatement.executeQuery();
  697. WorkloadsTable.setModel(DbUtils.resultSetToTableModel(result));
  698. //Hide the columns not needed.
  699. WorkloadsTable.removeColumn(WorkloadsTable.getColumnModel().getColumn(0));
  700.  
  701.  
  702.  
  703. result.close();
  704. preStatement.close();
  705.  
  706. } catch (SQLException e) {
  707.  
  708. e.printStackTrace();
  709. Params.errorNotification(e);
  710. }
  711.  
  712.  
  713. }
  714. private void populateCampaignsTable() {
  715.  
  716. String query = "SELECT DISTINCT no_meter AS Meter_Number,codes (t_manufacturer) AS Manufacturer,n_lect AS Reading,"
  717. + " codes (t_model) AS Model, cw.activity_name, sl.location , sl.road, REPLACE (codes (cm.o_prepaid), ' METER', '') AS Pay_Type,"
  718. + "codes (t_phase) AS Phase,CASE SUBSTR (cm.a_flags, 11, 1) WHEN '0' THEN 'N.A.' WHEN '1' THEN 'YES' WHEN '2' THEN 'N.A.' WHEN '3' THEN 'NO' ELSE '-'END AS large_power,"
  719. + "id_premise, id_meter as Meter_Id, id_workload AS Job_Id FROM "
  720. + Params.getCamMeters()
  721. + " cm JOIN "
  722. + Params.getCamWorkloads()
  723. + " cw USING (id_workload) JOIN "
  724. + Params.getTmpPotential()
  725. + " tmp USING (id_meter, id_workload) LEFT JOIN (SELECT j.codigo AS job_id, s.LOCATION,s.road,j.region FROM bdi_posicional_adminis.bdiv10_historico_trabajos j, bdi_posicional_adminis.bdiv10_sec_local s "
  726. + "WHERE j.sec_substation_v10 = '3000:' || s.codigo AND s.onis_ver = 0) sl ON id_workload = sl.job_id WHERE cw.id_batch = "
  727. + batch_id
  728. + " AND tmp.ind_source <> 'X' AND tmp.applied_rule <>'MR000' and tmp.status = 'SP030' ";
  729.  
  730.  
  731. PreparedStatement preStatement = null;
  732. ResultSet result = null;
  733. try
  734. {
  735. preStatement = Params.getDb().prepareStatement(query);
  736. result = preStatement.executeQuery();
  737.  
  738. CampaignsMetersTable.setModel(DbUtils.resultSetToTableModel(result));
  739. //Hide the columns not needed.
  740. // CampaignsMetersTable.removeColumn(CampaignsMetersTable.getColumnModel().getColumn(0));
  741. result.close();
  742. preStatement.close();
  743. CampaignsMetersTable.getColumnModel().getColumn(0)
  744. .setPreferredWidth(100);
  745. CampaignsMetersTable.getColumnModel().getColumn(1)
  746. .setPreferredWidth(100);
  747. CampaignsMetersTable.getColumnModel().getColumn(2)
  748. .setPreferredWidth(80);
  749. CampaignsMetersTable.getColumnModel().getColumn(3)
  750. .setPreferredWidth(100);
  751. CampaignsMetersTable.getColumnModel().getColumn(4)
  752. .setPreferredWidth(180);
  753. CampaignsMetersTable.getColumnModel().getColumn(5)
  754. .setPreferredWidth(150);
  755. CampaignsMetersTable.getColumnModel().getColumn(6)
  756. .setPreferredWidth(150);
  757. CampaignsMetersTable.getColumnModel().getColumn(7)
  758. .setPreferredWidth(100);
  759. CampaignsMetersTable.getColumnModel().getColumn(8)
  760. .setPreferredWidth(100);
  761. CampaignsMetersTable.getColumnModel().getColumn(9)
  762. .setPreferredWidth(100);
  763. CampaignsMetersTable.getColumnModel().getColumn(10)
  764. .setPreferredWidth(100);
  765.  
  766. // Getting the meter count
  767. campaign_meters_count = CampaignsMetersTable.getModel()
  768. .getRowCount();
  769.  
  770. lblMeterCount.setText("Meter Count: " + campaign_meters_count);
  771. /* To Refresh Potential Meter Count */
  772. lblPotentialMeterCount.setText("Meter Count:");
  773.  
  774. } catch (SQLException e) {
  775.  
  776. e.printStackTrace();
  777. Params.errorNotification(e);
  778. }
  779. }
  780.  
  781. /*
  782. * Function to query the table
  783. */
  784. public void populatePotentialMetersTable(String currentquery) {
  785.  
  786. currentquery= query_tmp;
  787. PreparedStatement preStatementcurent = null;
  788. ResultSet resultcurrent = null;
  789. try
  790. {
  791. preStatementcurent = Params.getDb().prepareStatement(currentquery);
  792. resultcurrent = preStatementcurent.executeQuery();
  793. PotentialMetersTable.setModel(DbUtils.resultSetToTableModel(resultcurrent));
  794.  
  795. // Get the Meters Count
  796. potential_meters_count = PotentialMetersTable.getModel()
  797. .getRowCount();
  798. lblPotentialMeterCount.setText("Meter Count: "
  799. + potential_meters_count);
  800.  
  801. PotentialMetersTable.getColumnModel().getColumn(0)
  802. .setPreferredWidth(100);
  803. PotentialMetersTable.getColumnModel().getColumn(1)
  804. .setPreferredWidth(100);
  805. PotentialMetersTable.getColumnModel().getColumn(2)
  806. .setPreferredWidth(80);
  807. PotentialMetersTable.getColumnModel().getColumn(3)
  808. .setPreferredWidth(100);
  809. PotentialMetersTable.getColumnModel().getColumn(4)
  810. .setPreferredWidth(180);
  811. PotentialMetersTable.getColumnModel().getColumn(5)
  812. .setPreferredWidth(150);
  813. PotentialMetersTable.getColumnModel().getColumn(6)
  814. .setPreferredWidth(150);
  815. PotentialMetersTable.getColumnModel().getColumn(7)
  816. .setPreferredWidth(150);
  817. PotentialMetersTable.getColumnModel().getColumn(8)
  818. .setPreferredWidth(100);
  819. PotentialMetersTable.getColumnModel().getColumn(9)
  820. .setPreferredWidth(100);
  821. PotentialMetersTable.getColumnModel().getColumn(10)
  822. .setPreferredWidth(100);
  823. resultcurrent.close();
  824. preStatementcurent.close();
  825.  
  826. } catch (SQLException e) {
  827.  
  828. e.printStackTrace();
  829. Params.errorNotification(e);
  830. }
  831.  
  832. }
  833.  
  834. /*Function to update */
  835. public void updateCamMetersTable()
  836. {
  837. String query_update_cam=null;
  838.  
  839. query_update_cam = "UPDATE cam_meters cm SET (d_update,st_campaign,aux_field_5,aux_field_6, no_premise,a_flags,id_update) =(SELECT sysdate, 'SC040',num_apa||'|'||co_marca||'|'||aol_pm, nis_rad,nif_apa, '400000000000'||decode (ind_source,'A','1','H','2','0')||'00','"+Login.id_user+"' FROM tmp_potential tp WHERE num_apa ='"
  840. + num_apa
  841. + "' and id_workload ='"
  842. + workload_id
  843. + "' and id_meter='"
  844. + meter_id
  845. + "' AND STATUS ='SP040') WHERE cm.id_meter = '"
  846. + meter_id + "' and cm.id_workload ='" + workload_id + "'";
  847. //position 13
  848.  
  849. System.out.println(query_update_cam);
  850. PreparedStatement preStatement_update = null;
  851. ResultSet result_update = null;
  852.  
  853. try {
  854. preStatement_update = Params.getDb().prepareStatement(query_update_cam);
  855. result_update = preStatement_update.executeQuery();
  856. Params.getDb().commit();
  857.  
  858. result_update.close();
  859. preStatement_update.close();
  860. }
  861. catch (SQLException e_tmp)
  862. {
  863.  
  864. e_tmp.printStackTrace();
  865. JOptionPane.showMessageDialog(null, "Update Not Successful on Campaing Meters Table!"," ",JOptionPane.INFORMATION_MESSAGE);
  866. }
  867. }
  868.  
  869.  
  870. /*Function to update */
  871. public void updateDuplicateMeters(BigDecimal aux_field_6)
  872. {
  873. String query_update_cam = "UPDATE cam_meters SET (d_update,st_campaign, a_flags) =(SELECT sysdate, 'SC030' , '2' || SUBSTR (a_flags, 2, 14) FROM cam_meters WHERE aux_field_6 ='"
  874. + aux_field_6 + "' and st_campaign ='SC030')";
  875.  
  876. System.out.println(query_update_cam);
  877. PreparedStatement preStatement_update = null;
  878. ResultSet result_update = null;
  879.  
  880. try {
  881. preStatement_update = Params.getDb().prepareStatement(query_update_cam);
  882. result_update = preStatement_update.executeQuery();
  883. Params.getDb().commit();
  884.  
  885. result_update.close();
  886. preStatement_update.close();
  887. }
  888. catch (SQLException e_tmp)
  889. {
  890.  
  891. e_tmp.printStackTrace();
  892. JOptionPane.showMessageDialog(null, "Update Not Successful on Campaing Meters Table!"," ",JOptionPane.INFORMATION_MESSAGE);
  893. }
  894. }
  895.  
  896.  
  897. //Update potentials table function
  898. public void updatePotentialsTable()
  899. {////one test change
  900. String query_update_tmp = "UPDATE TMP_POTENTIAL SET STATUS = 'SP040', DATE_UPDATED = SYSDATE WHERE NUM_APA = '"
  901. + num_apa
  902. + "' AND ID_WORKLOAD='"
  903. + workload_id
  904. + "' AND ID_METER = '"
  905. + meter_id
  906. + "' AND CODES(CO_MARCA) = '"
  907. + manufacturer
  908. + "' AND CODES(APPLIED_RULE) = '"
  909. + meterrule
  910. + "'AND IND_SOURCE = '"
  911. + ind_source
  912. + "'"; ///add ind_source
  913. PreparedStatement preStatement_update_tmp = null;
  914. ResultSet result_update_tmp = null;
  915.  
  916. try {
  917. preStatement_update_tmp = Params.getDb().prepareStatement(query_update_tmp);
  918. result_update_tmp = preStatement_update_tmp.executeQuery();
  919. Params.getDb().commit();
  920. result_update_tmp.close();
  921. preStatement_update_tmp.close();
  922. }catch (SQLException e_r)
  923. {
  924. e_r.printStackTrace();
  925. JOptionPane.showMessageDialog(null, "Update Not Successful on Potential Meters Table!"," ",JOptionPane.INFORMATION_MESSAGE);
  926. }
  927.  
  928.  
  929.  
  930. JOptionPane.showMessageDialog(null, "Update Done Successfully!"," ",JOptionPane.INFORMATION_MESSAGE);
  931.  
  932.  
  933. }
  934.  
  935. /*
  936. * Table methods
  937. */
  938. public void invokeMeterComparison() {
  939. int selectedRow = CampaignsMetersTable.getSelectedRow();
  940. selected_meter_number = CampaignsMetersTable.getValueAt(
  941. selectedRow, 0).toString();
  942. codigo = meter_id.toString();
  943. ChooseActivity.activity_id = workload_id;
  944.  
  945. PremiseComparison premiseComparison = new PremiseComparison();
  946. premiseComparison.setVisible(true);
  947.  
  948. }
  949.  
  950. /**
  951. *
  952. * Table Action Functions
  953. *
  954. * */
  955. @Override
  956. public void actionPerformed(ActionEvent ae) {
  957. JMenuItem menu = (JMenuItem) ae.getSource();
  958. if (menu == menuItemEdit) {
  959. invokeMeterComparison();
  960. }
  961.  
  962. }
  963. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement