Advertisement
Guest User

woksi

a guest
Jun 23rd, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.98 KB | None | 0 0
  1. package p04;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.io.File;
  7. import java.io.FileWriter;
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.PreparedStatement;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13. import java.sql.Statement;
  14. import java.util.ArrayList;
  15. import java.util.Calendar;
  16. import java.util.List;
  17.  
  18. import javax.swing.*;
  19.  
  20.  
  21. public class P04 {
  22.  
  23. static {
  24. try {
  25. Class.forName("com.ibm.db2.jcc.DB2Driver");
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }
  30.  
  31. //Proverava da li je uneti string broj
  32. public static boolean isInteger(String s){
  33. try{
  34. if(Integer.parseInt(s) < 2005 || Integer.parseInt(s) > 2014)
  35. return false;
  36. }
  37. catch(NumberFormatException e){
  38. return false;
  39. }
  40. return true;
  41. }
  42.  
  43. //Stampa sqlcode, sqlstate i poruku koju try/catch blok uhvati
  44. public static void greska(SQLException e){
  45. if (e.getErrorCode() == -911 || e.getErrorCode() == -913)
  46. System.out.println("Objekat je zakljucan od strane druge transakcije. Sacekajte.\n");
  47. else
  48. System.out.println("SQLCODE: " + e.getErrorCode() + "\nSQLSTATE: " + e.getSQLState() + "\nMessage: " + e.getMessage());
  49. }
  50.  
  51. public static void main(String[] args) {
  52. final JFrame frame = new JFrame();
  53. frame.setSize(300, 300);
  54. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  55. frame.setTitle("P04");
  56.  
  57. final JPanel panel = new JPanel();
  58. final JTextArea rezultat = new JTextArea();
  59. final JTextField godina = new JTextField();
  60. final JButton dugme = new JButton("Potvrdi");
  61.  
  62. List<String> nivoi = new ArrayList<>();
  63.  
  64. final String url = "jdbc:db2://localhost:50001/VSTUD";
  65. final String username = "student";
  66. final String password = "abcdef";
  67. try{
  68. Connection con = DriverManager.getConnection(url, username, password);
  69.  
  70. //Izdvajamo iz baze nivoe kvalifikacije i cuvamo u nizu nivoi
  71. Statement st = con.createStatement();
  72. String sql = "select naziv from nivo_kvalifikacije";
  73. ResultSet rs = st.executeQuery(sql);
  74. while(rs.next()){
  75. nivoi.add(rs.getString(1).trim());
  76. }
  77.  
  78.  
  79. rs.close();
  80. st.close();
  81. con.close();
  82. }
  83. catch (SQLException e){
  84. greska(e);
  85. }
  86.  
  87. final JComboBox<Object> cbNivoi = new JComboBox<Object>(nivoi.toArray());
  88. final JComboBox<Object> cbSmerovi = new JComboBox<Object>();
  89.  
  90. //Postavljamo dimenzije komponenti panela
  91. Dimension dimenzija = new Dimension(200, 25);
  92. godina.setPreferredSize(dimenzija);
  93. cbNivoi.setPreferredSize(dimenzija);
  94. cbSmerovi.setPreferredSize(dimenzija);
  95. dugme.setPreferredSize(dimenzija);
  96.  
  97. //Postavljamo startne indekse za nivo i smer
  98. cbNivoi.setSelectedIndex(-1);
  99. cbSmerovi.setSelectedIndex(-1);
  100.  
  101. //Dodajemo komponente na panel
  102. panel.add(cbNivoi);
  103. panel.add(cbSmerovi);
  104. panel.add(godina);
  105. panel.add(dugme);
  106. panel.add(rezultat);
  107.  
  108. //Smer se ne moze birati dok se ne izabere nivo kvalifikacije
  109. cbSmerovi.setEnabled(false);
  110.  
  111. cbNivoi.addActionListener(new ActionListener() {
  112.  
  113. @Override
  114. public void actionPerformed(ActionEvent e) {
  115. cbSmerovi.setEnabled(true);
  116.  
  117. cbSmerovi.removeAllItems();
  118.  
  119. try {
  120. Connection con = DriverManager.getConnection(url, username, password);
  121.  
  122. String nivo = (String)cbNivoi.getSelectedItem();
  123.  
  124. //Na osnovu izabranog nivoa kvalifikacije izvlacimo smerove iz baze
  125. PreparedStatement prep;
  126. String sql = "select s.naziv " +
  127. "from smer s join nivo_kvalifikacije nk on nk.id_nivoa=s.id_nivoa " +
  128. "where nk.naziv=?";
  129. prep = con.prepareStatement(sql);
  130. prep.setString(1, nivo);
  131. ResultSet rs = prep.executeQuery();
  132. while(rs.next()){
  133. cbSmerovi.addItem(rs.getString(1));
  134. }
  135. cbSmerovi.setSelectedIndex(-1);
  136.  
  137. rs.close();
  138. prep.close();
  139. con.close();
  140. } catch (SQLException e1) {
  141. greska(e1);
  142. }
  143. }
  144. });
  145.  
  146. dugme.addActionListener(new ActionListener() {
  147.  
  148. @Override
  149. public void actionPerformed(ActionEvent event) {
  150. try {
  151. //Konekcija na bazu
  152. Connection con = DriverManager.getConnection(url, username, password);
  153.  
  154. //Izvlacenje unesenih vrednosti
  155. String god = godina.getText();
  156. String nivo = (String)cbNivoi.getSelectedItem();
  157. String smer = (String)cbSmerovi.getSelectedItem();
  158.  
  159. String sql = null;
  160. PreparedStatement prep;
  161.  
  162. ResultSet rs;
  163.  
  164. File text;
  165.  
  166. //Provera da li je umesto broja u polje za godinu uneseno nesto drugo
  167. if(!godina.getText().isEmpty() && !isInteger(god)){
  168. JOptionPane.showMessageDialog(panel, "Unesite godinu od 2005. do 2014. ili nista ne unosite!");
  169. godina.setText("");
  170. godina.requestFocus();
  171. }
  172. //Provera da li je izabran nivo kvalifikacije
  173. else if(cbNivoi.getSelectedIndex() == -1){
  174. JOptionPane.showMessageDialog(panel, "Izaberite nivo studija!");
  175. cbNivoi.requestFocus();
  176. }
  177. else{
  178. boolean b = false; //Tacno je ako je naveden samo nivo kvalifikacije
  179. if(cbSmerovi.getSelectedIndex() == -1){
  180. if(god.isEmpty()){ //Unet samo nivo kvalifikacije
  181. sql = "select s.indeks, s.datum, s.status " +
  182. "from status s join dosije d on s.indeks=d.indeks " +
  183. "join smer sm on sm.id_smera=d.id_smera " +
  184. "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
  185. "where nk.naziv=?";
  186. prep = con.prepareStatement(sql);
  187. prep.setString(1, nivo);
  188. b = true; //kada nisu navedeni ni godina ni smer
  189.  
  190. text = new File("status.zbirno.txt");
  191. }
  192. else{ //Unet nivo kvalifikacije i godina
  193. sql = "select status, count " +
  194. "from status s join dosije d on d.indeks = s.indeks " +
  195. "join upis_godine ug on ug.indeks = d.indeks " +
  196. "join smer sm on sm.id_smera=d.id_smera " +
  197. "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
  198. "where ug.godina = ? and nk.naziv=? " +
  199. "group by status";
  200. prep = con.prepareStatement(sql);
  201. prep.setInt(1, Integer.parseInt(god));
  202. prep.setString(2, nivo);
  203.  
  204. text = new File("status.zbirno.G" + god + ".txt");
  205. }
  206. }
  207. else{
  208. if(god.isEmpty()){ //Unet nivo kvalifikacije i smer
  209. sql = "select status, count " +
  210. "from status s join dosije d on d.indeks = s.indeks " +
  211. "join smer sm on sm.id_smera = d.id_smera " +
  212. "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
  213. "where sm.naziv = ? and nk.naziv=? " +
  214. "group by status";
  215.  
  216. //Izvlacimo oznaku smera kako bismo je upisali u ime datoteke
  217. prep = con.prepareStatement("select oznaka from smer where smer.naziv=?");
  218. prep.setString(1, smer);
  219.  
  220. ResultSet rs1 = prep.executeQuery();
  221.  
  222. String oznaka = "";
  223. while(rs1.next())
  224. oznaka = rs1.getString(1);
  225.  
  226. text = new File("status." + oznaka.trim() + ".zbirno.txt");
  227.  
  228. rs1.close();
  229. prep.close();
  230.  
  231. //Izvrsavamo glavni upit za ovu granu
  232. prep = con.prepareStatement(sql);
  233. prep.setString(1, smer);
  234. prep.setString(2, nivo);
  235. }
  236. else{ //Sva tri polja su popunjena
  237. sql = "select status, count " +
  238. "from status s join dosije d on d.indeks = s.indeks " +
  239. "join upis_godine ug on ug.indeks = d.indeks " +
  240. "join smer sm on sm.id_smera = d.id_smera " +
  241. "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
  242. "where ug.godina = ? and sm.naziv = ? and nk.naziv=? " +
  243. "group by status";
  244.  
  245. //Izvlacimo oznaku smera kako bismo upisaliu naziv datoteke
  246. prep = con.prepareStatement("select oznaka from smer where smer.naziv=?");
  247. prep.setString(1, smer);
  248.  
  249. ResultSet rs1 = prep.executeQuery();
  250.  
  251. String oznaka = "";
  252. while(rs1.next())
  253. oznaka = rs1.getString(1);
  254.  
  255. text = new File("status." + oznaka.trim() + ".G" + god + ".txt");
  256.  
  257. rs1.close();
  258. prep.close();
  259.  
  260. //Izvrsavamo glavni upit za ovu granu
  261. prep = con.prepareStatement(sql);
  262. prep.setInt(1, Integer.parseInt(god));
  263. prep.setString(2, smer);
  264. prep.setString(3, nivo);
  265. }
  266. }
  267.  
  268. //"Cistimo" text okvir za upis novog rezultata
  269. rezultat.setText("");
  270.  
  271. //"Otvaramo" datoteku u koju ce se pisati
  272. FileWriter izvestaj = new FileWriter(text);
  273.  
  274. //Na pocetak izvestaja upisujemo "Matematicki fakultet", datum i vreme kreiranja izvestaja
  275. izvestaj.write("Matematicki fakultet " + Calendar.getInstance().getTime() + "\n");
  276.  
  277. rs = prep.executeQuery();
  278.  
  279. frame.setResizable(true);
  280.  
  281. int i = 1; //i sluzi da bismo znali za koliko treba da povecamo nas panel
  282. while(rs.next()){
  283. if(b){
  284. //Ispisujemo rezultat na panel
  285. rezultat.append(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3) + "\n");
  286. //Ispisujemo rezultat u datoteku
  287. izvestaj.write(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3) + "\n");
  288. }
  289. else{
  290. //Ispisujemo rezultat na panel
  291. rezultat.append(rs.getString(1) + " " + rs.getInt(2) + "\n");
  292. //Ispisujemo rezultat u datoteku
  293. izvestaj.write(rs.getString(1) + " " + rs.getInt(2) + "\n");
  294. }
  295. frame.setSize(900, 40*i);
  296. i++;
  297. }
  298.  
  299. rs.close();
  300. prep.close();
  301. con.close();
  302. izvestaj.close();
  303. }} catch (SQLException e) {
  304. greska(e);
  305. }
  306. catch (Exception e) {
  307. e.printStackTrace();
  308. }
  309. }
  310. });
  311.  
  312. frame.add(panel);
  313. frame.pack();
  314. frame.setVisible(true);
  315. frame.setLocationRelativeTo(null);
  316. }
  317.  
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement