Advertisement
Guest User

Untitled

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