Advertisement
Guest User

Untitled

a guest
Apr 14th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.47 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Container;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.MouseEvent;
  7. import java.io.BufferedReader;
  8. import java.io.File;
  9. import java.io.FileInputStream;
  10. import java.io.FileNotFoundException;
  11. import java.io.FileReader;
  12. import java.io.IOException;
  13. import java.io.PrintWriter;
  14. import java.sql.Connection;
  15. import java.sql.DriverManager;
  16. import java.sql.ResultSet;
  17. import java.sql.ResultSetMetaData;
  18. import java.sql.Statement;
  19. import java.util.ArrayList;
  20. import java.util.Properties;
  21.  
  22. import javax.swing.BoxLayout;
  23. import javax.swing.JFileChooser;
  24. import javax.swing.JFrame;
  25. import javax.swing.JMenu;
  26. import javax.swing.JMenuBar;
  27. import javax.swing.JMenuItem;
  28. import javax.swing.JScrollPane;
  29. import javax.swing.JTable;
  30. import javax.swing.table.DefaultTableCellRenderer;
  31. import javax.swing.table.DefaultTableColumnModel;
  32. import javax.swing.table.DefaultTableModel;
  33. import javax.swing.table.TableCellEditor;
  34. import javax.swing.table.TableColumn;
  35. import javax.swing.table.TableColumnModel;
  36. import javax.xml.parsers.DocumentBuilder;
  37. import javax.xml.parsers.DocumentBuilderFactory;
  38.  
  39. import org.slf4j.Logger;
  40. import org.slf4j.LoggerFactory;
  41. import org.w3c.dom.Document;
  42. import org.w3c.dom.Element;
  43. import org.w3c.dom.NodeList;
  44.  
  45. /**
  46. * Reads semicolon separated SCDF file for editing.
  47. *
  48. * @author easai
  49. *
  50. */
  51. public class SCDFFileEdit extends JFrame {
  52.  
  53. /**
  54. *
  55. */
  56. private static Logger log = LoggerFactory.getLogger(SCDFFileEdit.class);
  57.  
  58. private static final long serialVersionUID = 1L;
  59.  
  60. enum MARKING {
  61. DIFFER, ERROR
  62. };
  63.  
  64. JMenuBar mb = new JMenuBar();
  65.  
  66. private JScrollPane scroll = new JScrollPane();
  67.  
  68. JTable table;
  69.  
  70. ArrayList<String> scdfList = new ArrayList<>();
  71. String scdfFile = "";
  72. String _iniFile = "SCDFgen.ini";
  73. String _csvFile = "prq.csv";
  74. final String INFILE = "inFile";
  75. final String OUTDIR = "outDir";
  76. final String PDFDIR = "pdfDir";
  77. final String PDFOUTPUTDIR = "pdfOutputDir";
  78. String valueTable[][];
  79. Properties prop = new Properties();
  80. ArrayList<String[]> csvList = new ArrayList<>();
  81. PRQConstants.PRQ valueList[] = PRQ.values();
  82.  
  83. Document readXMLFile(String sqlFile) throws Exception {
  84. DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
  85. .newInstance();
  86. DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
  87. Document doc = docBuilder.newDocument();
  88.  
  89. log.info("Reading XML file: " + sqlFile);
  90. File file = new File(sqlFile);
  91. if (!file.exists()) {
  92. log.error("Error reading XML file: " + sqlFile);
  93. throw new Exception("File not found");
  94. } else if (file.isDirectory()) {
  95. log.error("Error reading XML file, is a directory: " + sqlFile);
  96. throw new Exception("File not found, is a directory");
  97. } else {
  98. try {
  99. doc = docBuilder.parse(new FileInputStream(file));
  100. } catch (Exception e) {
  101. log.error("Error reading XML file, bad format: " + sqlFile);
  102. throw e;
  103. }
  104. }
  105. return doc;
  106. }
  107.  
  108. public void readSCDF(String scdfFile) {
  109. BufferedReader br;
  110. try {
  111. log.info("Reading file: " + scdfFile);
  112. File file = new File(scdfFile);
  113. if (!file.exists()) {
  114. throw new Exception();
  115. }
  116. setTitle(file.getName());
  117. br = new BufferedReader(new FileReader(scdfFile));
  118. String line = "";
  119.  
  120. scdfList.clear();
  121. while ((line = br.readLine()) != null) {
  122. scdfList.add(line);
  123. }
  124.  
  125. } catch (FileNotFoundException e) {
  126. e.printStackTrace();
  127. } catch (IOException e) {
  128. e.printStackTrace();
  129. } catch (Exception e) {
  130. e.printStackTrace();
  131. }
  132. }
  133.  
  134. public void readCSV(String csvFile) {
  135. BufferedReader br;
  136. try {
  137. log.info("Reading CSV file: " + csvFile);
  138. br = new BufferedReader(new FileReader(csvFile));
  139. String line = "";
  140.  
  141. csvList.clear();
  142. while ((line = br.readLine()) != null) {
  143. String[] list = line.split(",");
  144. csvList.add(list);
  145. }
  146.  
  147. } catch (FileNotFoundException e) {
  148. e.printStackTrace();
  149. } catch (IOException e) {
  150. e.printStackTrace();
  151. } catch (Exception e) {
  152. e.printStackTrace();
  153. }
  154.  
  155. }
  156.  
  157. public void exportCSV() {
  158. JFileChooser fileChooser = new JFileChooser();
  159. fileChooser.setCurrentDirectory(new File("."));
  160. fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  161. int res = fileChooser.showOpenDialog(SCDFFileEdit.this);
  162. if (res == JFileChooser.APPROVE_OPTION) {
  163. File file = fileChooser.getSelectedFile();
  164. String fn = file.getPath();
  165. writeCSV(fn);
  166. }
  167. }
  168.  
  169. public void writeCSV(String fn) {
  170. log.info("Exporting CSV: " + fn);
  171. PrintWriter pw = null;
  172. try {
  173. TableCellEditor editor = table.getCellEditor();
  174. if (editor != null) {
  175. editor.stopCellEditing();
  176. }
  177. pw = new PrintWriter(new File(fn));
  178.  
  179. DefaultTableModel model = (DefaultTableModel) table.getModel();
  180. int nRow = model.getRowCount();
  181. int nCol = model.getColumnCount();
  182.  
  183. String line = "";
  184. String val = "";
  185. for (int i = 0; i < nCol; i++) {
  186. line = "";
  187. val = "";
  188. for (int j = 0; j < nRow; j++) {
  189. val = (String) model.getValueAt(j, i);
  190. if (j != 0)
  191. line += ",";
  192. line += "\"" + val + "\"";
  193. }
  194. pw.println(line);
  195. }
  196. pw.close();
  197. } catch (Exception e) {
  198. log.error("File write error", e);
  199. if (pw != null) {
  200. pw.close();
  201. }
  202. }
  203. }
  204.  
  205. public void writeSCDF(String scdfFile) {
  206. PrintWriter pw = null;
  207. try {
  208. TableCellEditor editor = table.getCellEditor();
  209. if (editor != null) {
  210. editor.stopCellEditing();
  211. }
  212. pw = new PrintWriter(new File(scdfFile));
  213.  
  214. DefaultTableModel model = (DefaultTableModel) table.getModel();
  215. int nRow = model.getRowCount();
  216. int nCol = model.getColumnCount();
  217.  
  218. String line = "";
  219. String val = "";
  220. for (int i = 2; i < nCol; i++) {
  221. line = "";
  222. val = "";
  223. for (int j = 0; j < nRow; j++) {
  224. val = (String) model.getValueAt(j, i);
  225. if (j != 0)
  226. line += ";";
  227. line += val;
  228. }
  229. pw.println(line);
  230. }
  231. pw.close();
  232.  
  233. this.scdfFile = scdfFile;
  234. readSCDF(scdfFile);
  235. setTable();
  236. } catch (Exception e) {
  237. log.error("File write error", e);
  238. if (pw != null) {
  239. pw.close();
  240. }
  241. }
  242. }
  243.  
  244. /**
  245. * Constructor.
  246. */
  247. SCDFFileEdit() {
  248. init();
  249.  
  250. setTitle("SCDF File Edit");
  251. pack();
  252. // setSize(500,500);
  253. setVisible(true);
  254. }
  255.  
  256. public void openSCDFFile() {
  257. JFileChooser fileChooser = new JFileChooser();
  258. fileChooser.setCurrentDirectory(new File("."));
  259. fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  260. int res = fileChooser.showOpenDialog(SCDFFileEdit.this);
  261. if (res == JFileChooser.APPROVE_OPTION) {
  262. File file = fileChooser.getSelectedFile();
  263. scdfFile = file.getPath();
  264. readSCDF(scdfFile);
  265. setTable();
  266. }
  267. }
  268.  
  269. public void saveSCDFFile() {
  270. JFileChooser fileChooser = new JFileChooser();
  271. File selectedFile = new File(scdfFile);
  272. fileChooser.setCurrentDirectory(selectedFile.getParentFile());
  273. fileChooser.setSelectedFile(selectedFile);
  274. fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  275. int res = fileChooser.showOpenDialog(SCDFFileEdit.this);
  276. if (res == JFileChooser.APPROVE_OPTION) {
  277. File file = fileChooser.getSelectedFile();
  278. writeSCDF(file.getPath());
  279. }
  280. }
  281.  
  282. private void setTable() {
  283.  
  284. ArrayList<String> labelList = new ArrayList<>();
  285. labelList.add("");
  286. labelList.add("Field");
  287. for (int i = 0; i < scdfList.size(); i++) {
  288. labelList.add("" + (i + 1));
  289. }
  290.  
  291. DefaultTableModel tableModel = new DefaultTableModel(
  292. labelList.toArray(), 0);
  293.  
  294. int nVal = valueList.length;
  295. int nSCDF = scdfList.size();
  296. valueTable = new String[nVal][nSCDF];
  297. if (0 < nSCDF) {
  298. for (int i = 0; i < nSCDF; i++) {
  299. String line = scdfList.get(i);
  300. String scdf[] = line.split(";");
  301. for (int j = 0; j < nVal; j++) {
  302. if (j < scdf.length) {
  303. valueTable[j][i] = scdf[j];
  304. }
  305. }
  306. }
  307. }
  308. for (int i = 0; i < nVal; i++) {
  309. ArrayList<Object> fieldList = new ArrayList<>();
  310. fieldList.add(i + 1);
  311. fieldList.add(valueList[i]);
  312. for (int j = 0; j < nSCDF; j++) {
  313. fieldList.add(valueTable[i][j]);
  314. }
  315. tableModel.addRow(fieldList.toArray());
  316. }
  317.  
  318. table.setModel(tableModel);
  319.  
  320. RowRenderer rowRenderer = new RowRenderer();
  321.  
  322. MARKING markingTable[][] = new MARKING[nVal][nSCDF];
  323.  
  324. for (int row = 0; row < nVal; row++) {
  325. String item0 = valueTable[row][0];
  326. boolean differ = false;
  327. for (int col = 0; col < nSCDF; col++) {
  328. String item = valueTable[row][col];
  329. if ((item != null && !item.equals(item0))
  330. || (item == null && item0 != null)) {
  331. differ = true;
  332. }
  333. }
  334. if (differ) {
  335. for (int col = 0; col < nSCDF; col++) {
  336. markingTable[row][col] = MARKING.DIFFER;
  337. }
  338. }
  339. }
  340.  
  341. int pdfIndex = getIndex("PDF_FILE_NAME");
  342. log.debug("pdfIndex: " + pdfIndex);
  343. int pdfPathIndex = getIndex("PDF_PATH");
  344. log.debug("pdfPathIndex: " + pdfPathIndex);
  345.  
  346. log.debug("setting pdf");
  347. for (int i = 0; i < nSCDF; i++) {
  348. if (pdfIndex != -1 && pdfPathIndex != -1) {
  349. log.debug(pdfIndex + "," + pdfPathIndex);
  350. String pdf = valueTable[pdfIndex][i];
  351. String path = valueTable[pdfPathIndex][i];
  352.  
  353. File dir = new File(path + File.separator + pdf);
  354.  
  355. // if (dir==null || !dir.exists()) {
  356. markingTable[pdfIndex][i] = MARKING.ERROR;
  357. markingTable[pdfPathIndex][i] = MARKING.ERROR;
  358. log.info("PDF file does not exist: " + dir.getPath());
  359. // }
  360. }
  361. }
  362.  
  363. TableColumnModel tcm = table.getColumnModel();
  364. for (int i = 0; i < tcm.getColumnCount(); i++) {
  365. TableColumn tc = tcm.getColumn(i);
  366. tc.setCellRenderer(rowRenderer);
  367. }
  368.  
  369. rowRenderer.setMarking(markingTable);
  370.  
  371. DefaultTableColumnModel columnModel = (DefaultTableColumnModel) table
  372. .getColumnModel();
  373. TableColumn column = null;
  374. for (int i = 0; i < columnModel.getColumnCount(); i++) {
  375. column = columnModel.getColumn(i);
  376. if (i == 0) {
  377. column.setMinWidth(30);
  378. column.setMaxWidth(30);
  379. column.setResizable(false);
  380. } else if (i == 1) {
  381. column.setMinWidth(150);
  382. column.setMaxWidth(150);
  383. column.setResizable(false);
  384. } else {
  385. column.setPreferredWidth(500);
  386. }
  387. }
  388.  
  389. repaint();
  390. }
  391.  
  392. int getIndex(String label) {
  393. int index = 0;
  394. int nVal = valueList.length;
  395. while (!valueList[index].name().equals(label) && ++index < nVal)
  396. ;
  397. if (nVal <= index)
  398. index = -1;
  399. return index;
  400. }
  401.  
  402. public void init() {
  403. readCSV(this._csvFile);
  404. table = new JTable() {
  405. /**
  406. *
  407. */
  408. private static final long serialVersionUID = 1L;
  409.  
  410. public String getToolTipText(MouseEvent e) {
  411. int row = convertRowIndexToModel(rowAtPoint(e.getPoint()));
  412. String text = "";
  413. if (row < csvList.size()) {
  414. String[] list = csvList.get(row);
  415. for (int i = 0; i < list.length; i++) {
  416. text += list[i] + " : ";
  417. }
  418. }
  419. return text;
  420. }
  421. };
  422.  
  423. Container pane = getContentPane();
  424. pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
  425.  
  426. this.setJMenuBar(mb);
  427. JMenu mFile = new JMenu("File");
  428. JMenuItem miOpen = new JMenuItem("Open");
  429. JMenuItem miSave = new JMenuItem("Save");
  430. JMenuItem miExport = new JMenuItem("Export");
  431. JMenuItem miQuit = new JMenuItem("Quit");
  432.  
  433. mFile.add(miOpen);
  434. mFile.add(miSave);
  435. mFile.add(miExport);
  436. mFile.add(miQuit);
  437. mb.add(mFile);
  438.  
  439. JMenu mSend = new JMenu("Send");
  440. JMenuItem miSend = new JMenuItem("Send");
  441. JMenuItem miGenerate = new JMenuItem("Generate SCDF file");
  442. mSend.add(miSend);
  443. mSend.add(miGenerate);
  444. mb.add(mSend);
  445.  
  446. JMenu mPref = new JMenu("Pref");
  447. JMenuItem miIni = new JMenuItem("Edit .ini File");
  448. mPref.add(miIni);
  449. mb.add(mPref);
  450.  
  451. JMenu mAnalysis = new JMenu("Analysis");
  452. JMenuItem miCompare = new JMenuItem("Compare");
  453. mAnalysis.add(miCompare);
  454. mb.add(mAnalysis);
  455.  
  456. miOpen.addActionListener(new Adapter() {
  457. public void actionPerformed(ActionEvent e) {
  458. openSCDFFile();
  459. }
  460. });
  461. miSave.addActionListener(new Adapter() {
  462. public void actionPerformed(ActionEvent e) {
  463. saveSCDFFile();
  464. }
  465. });
  466. miExport.addActionListener(new Adapter() {
  467. public void actionPerformed(ActionEvent e) {
  468. exportCSV();
  469. }
  470. });
  471. miQuit.addActionListener(new Adapter() {
  472. public void actionPerformed(ActionEvent e) {
  473. dispose();
  474. }
  475. });
  476. miSend.addActionListener(new Adapter() {
  477. public void actionPerformed(ActionEvent e) {
  478. sendSCDF();
  479. }
  480. });
  481. miGenerate.addActionListener(new Adapter() {
  482. public void actionPerformed(ActionEvent e) {
  483. SCDFFileEdit f = new SCDFFileEdit();
  484. f.readSCDF(scdfFile);
  485. f.setTable();
  486. }
  487. });
  488. miIni.addActionListener(new Adapter() {
  489. public void actionPerformed(ActionEvent e) {
  490. new IniFileEdit();
  491. }
  492. });
  493. miCompare.addActionListener(new Adapter() {
  494. public void actionPerformed(ActionEvent e) {
  495. compare();
  496. }
  497. });
  498.  
  499. scroll.setViewportView(table);
  500. pane.add(scroll);
  501.  
  502. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  503.  
  504. }
  505.  
  506. public void readIniFile() {
  507. try {
  508. File file = new File(_iniFile);
  509. if (!file.exists()) {
  510. throw new Exception("INI File not found");
  511. } else if (file.isDirectory()) {
  512. throw new Exception("INI File not found");
  513. } else {// read the ini file
  514. BufferedReader reader = new BufferedReader(new FileReader(file));
  515.  
  516. prop.load(reader);
  517. }
  518. } catch (Exception e) {
  519. e.printStackTrace();
  520. }
  521. }
  522.  
  523. public void sendSCDF() {
  524. log.info("Sending file: " + scdfFile);
  525. int nSCDF = valueTable[0].length;
  526. if (nSCDF == 0) {
  527. return;
  528. }
  529. // read ini file
  530. readIniFile();
  531.  
  532. // get outDir
  533. String outDir = (String) prop.getProperty(OUTDIR);
  534. log.info("outDir: " + outDir);
  535.  
  536. // write file
  537.  
  538. int nVal = valueList.length;
  539. int index = getIndex("CLIENT_CODE");
  540. if (index != -1) {
  541. String clientCode = valueTable[index][0];
  542. log.info("Client Code: " + clientCode);
  543.  
  544. File dir = new File(outDir + File.separator + clientCode);
  545. if (!dir.exists()) {
  546. dir.mkdir();
  547. }
  548.  
  549. PrintWriter pw = null;
  550. try {
  551. String fn = PRQList.getPRQName(scdfFile);
  552. String prqFile = dir.getPath() + File.separator + new File(fn);
  553. pw = new PrintWriter(prqFile);
  554. log.info("Generating SCDF file: " + prqFile);
  555. for (int i = 0; i < nSCDF; i++) {
  556. String line = "";
  557. for (int j = 0; j < nVal; j++) {
  558. if (j != 0) {
  559. line += ";";
  560. }
  561. line += valueTable[j][i];
  562. }
  563. pw.println(line);
  564. }
  565. pw.close();
  566. } catch (Exception e) {
  567. log.error("Error generating SCDF file.", e);
  568. }
  569.  
  570. }
  571. }
  572.  
  573. public static void main(String[] args) {
  574. new SCDFFileEdit();
  575. }
  576.  
  577. abstract class Adapter implements ActionListener {
  578.  
  579. }
  580.  
  581. private class RowRenderer extends DefaultTableCellRenderer {
  582. /**
  583. *
  584. */
  585. private static final long serialVersionUID = 1L;
  586.  
  587. MARKING marking[][] = null;
  588.  
  589. @SuppressWarnings("unused")
  590. public MARKING[][] getMarking() {
  591. return marking;
  592. }
  593.  
  594. public void setMarking(MARKING[][] marking) {
  595. this.marking = marking;
  596. }
  597.  
  598. public Component getTableCellRendererComponent(JTable t, Object value,
  599. boolean isSelected, boolean hasFocus, int row, int column) {
  600. if (row % 2 == 0) {
  601. setBackground(new Color(0xff, 0xff, 0xff));
  602. } else {
  603. setBackground(new Color(0xea, 0xeb, 0xff));
  604. }
  605.  
  606. if (1 < column && marking[row][column - 2] == MARKING.ERROR) {
  607. setBackground(new Color(0xff, 0xcc, 0xcc));
  608. } else if (1 < column && marking[row][column - 2] == MARKING.DIFFER) {
  609. setBackground(new Color(0xe0, 0xff, 0xe0));
  610. }
  611.  
  612. if (column == 1) {
  613. setBackground(new Color(0xd3, 0xd6, 0xff));
  614. }
  615.  
  616. return super.getTableCellRendererComponent(t, value, isSelected,
  617. hasFocus, row, column);
  618. }
  619. }
  620.  
  621. private class CompareRenderer extends DefaultTableCellRenderer {
  622. /**
  623. *
  624. */
  625. private static final long serialVersionUID = 1L;
  626.  
  627. public Component getTableCellRendererComponent(JTable t, Object value,
  628. boolean isSelected, boolean hasFocus, int row, int column) {
  629. if (row % 2 == 0) {
  630. setBackground(new Color(0xff, 0xff, 0xff));
  631. } else {
  632. setBackground(new Color(0xea, 0xeb, 0xff));
  633. }
  634.  
  635. if (column == 0) {
  636. setBackground(new Color(0xd3, 0xd6, 0xff));
  637. }
  638.  
  639. return super.getTableCellRendererComponent(t, value, isSelected,
  640. hasFocus, row, column);
  641. }
  642. }
  643.  
  644. public void compare() {
  645. // create header list
  646. String headerList[] = { "CLIENT_CODE", "PRODUCT_TYPE",
  647. "PERSONALIZED_INDICATOR", "PNP", "Job Type", "Source File",
  648. "Group Code", "Product" };
  649.  
  650. // create index list
  651. int indexList[] = new int[headerList.length];
  652. for (int i = 0; i < headerList.length; i++) {
  653. indexList[i] = this.getIndex(headerList[i]);
  654. }
  655.  
  656. // get file list
  657. File dir = new File("resources");
  658. String fileList[] = dir.list();
  659. String scdfArray[][] = new String[headerList.length][fileList.length];
  660.  
  661. // read
  662. for (int i = 0; i < fileList.length; i++) {
  663. readSCDF(dir.getPath() + File.separator + fileList[i]);
  664. for (int j = 0; j < scdfList.size(); j++) {
  665. String list[] = scdfList.get(j).split(";");
  666. for (int k = 0; k < indexList.length; k++) {
  667. if (0 <= indexList[k]) {
  668. scdfArray[k][i] = list[indexList[k]];
  669. }
  670. }
  671. }
  672. }
  673.  
  674. scdfArray = retrieve(scdfArray, 4, "jobtype", new int[] { 0, 1 });
  675. scdfArray = retrieve(scdfArray, 5, "filename", new int[] { 0, 1 });
  676. scdfArray = retrieve(scdfArray, 6, "groupcode", new int[] { 0, 1 });
  677. scdfArray = retrieve(scdfArray, 7, "product", new int[] { 0, 1 });
  678.  
  679. // array -> table
  680. String tableHeader[] = new String[fileList.length + 1];
  681. tableHeader[0] = "";
  682. for (int i = 0; i < fileList.length; i++) {
  683. tableHeader[i + 1] = fileList[i];
  684. }
  685.  
  686. DefaultTableModel tableModel = new DefaultTableModel(tableHeader, 0);
  687.  
  688. for (int i = 0; i < scdfArray.length; i++) {
  689. ArrayList<Object> array = new ArrayList<>();
  690. array.add(headerList[i]);
  691. for (int j = 0; j < scdfArray[0].length; j++) {
  692. array.add(scdfArray[i][j]);
  693. }
  694. tableModel.addRow(array.toArray());
  695. }
  696.  
  697. table.setModel(tableModel);
  698.  
  699. DefaultTableColumnModel columnModel = (DefaultTableColumnModel) table
  700. .getColumnModel();
  701. TableColumn column = null;
  702. for (int i = 0; i < columnModel.getColumnCount(); i++) {
  703. column = columnModel.getColumn(i);
  704. if (i == 0) {
  705. column.setMinWidth(190);
  706. column.setMaxWidth(190);
  707. column.setResizable(false);
  708. } else {
  709. column.setPreferredWidth(50);
  710. }
  711. }
  712.  
  713. CompareRenderer rowRenderer = new CompareRenderer();
  714.  
  715. TableColumnModel tcm = table.getColumnModel();
  716. for (int i = 0; i < tcm.getColumnCount(); i++) {
  717. TableColumn tc = tcm.getColumn(i);
  718. tc.setCellRenderer(rowRenderer);
  719. }
  720.  
  721. repaint();
  722. }
  723.  
  724. public String replaceParam(String str, String[] list) {
  725. String res = "";
  726. int index = 0;
  727. int count = 0;
  728. int prev = 0;
  729. while ((index = str.indexOf('?', index)) != -1) {
  730. if (count < list.length) {
  731. if (prev < index) {
  732. res += str.substring(prev, index);
  733. }
  734. res += list[count];
  735. count++;
  736. }
  737. index++;
  738. prev = index;
  739. }
  740. if (prev < str.length()) {
  741. res += str.substring(prev);
  742. }
  743. return res;
  744. }
  745.  
  746. public String[][] retrieve(String dataTable[][], int row, String sqlName,
  747. int[] param) {
  748. try {
  749. String sqlFile = "SCDFgen.xml";
  750. log.debug("Start reading XML file:" + sqlFile);
  751. Document doc = readXMLFile(sqlFile);
  752. log.debug("Finished reading XML file:" + sqlFile);
  753. Element root = doc.getDocumentElement();
  754. String sql = "";
  755. if (root != null) {
  756. NodeList nodeList = root.getElementsByTagName(sqlName);
  757. sql = nodeList.item(0).getTextContent();
  758. }
  759.  
  760. for (int index = 0; index < dataTable[row].length; index++) {
  761.  
  762. String paramList[] = new String[param.length];
  763. for (int i = 0; i < paramList.length; i++) {
  764. paramList[i] = dataTable[param[i]][index];
  765. }
  766. String sqlStr = replaceParam(sql, paramList);
  767.  
  768. log.info("SQL: " + sqlStr);
  769. ArrayList<String> list = getRecord(sqlStr);
  770.  
  771. if (0 < list.size()) {
  772. dataTable[row][index] = list.get(0);
  773. }
  774. }
  775. } catch (Exception e) {
  776. log.error("Error reading XML file:", e);
  777. }
  778. return dataTable;
  779. }
  780.  
  781. public static ArrayList<String> getRecord(String sql) {
  782. ArrayList<String> list = new ArrayList<>();
  783.  
  784. String jdbc_url = "jdbc:sqlserver://hostname:portnumber;databaseName=database";
  785. String user = "user";
  786. String password = "password";
  787.  
  788. ResultSet resultSet;
  789.  
  790. try {
  791. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  792. Connection con = DriverManager.getConnection(jdbc_url, user,
  793. password);
  794. con.setAutoCommit(true);
  795. Statement statement = con.createStatement();
  796.  
  797. resultSet = statement.executeQuery(sql);
  798. ResultSetMetaData rsmd = resultSet.getMetaData();
  799. String field = "";
  800. if (0 < rsmd.getColumnCount()) {
  801. field = rsmd.getColumnName(1);
  802.  
  803. while (resultSet.next()) {
  804. log.info(resultSet.getString(field));
  805. list.add(resultSet.getString(field));
  806. }
  807. }
  808.  
  809. log.debug("Retrieved: " + list.size());
  810. for (int i = 0; i < list.size(); i++) {
  811. log.info(field + ": " + list.get(i));
  812. }
  813.  
  814. statement.close();
  815. con.close();
  816.  
  817. } catch (Exception e) {
  818. e.printStackTrace();
  819. }
  820. return list;
  821. }
  822.  
  823. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement