Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package p04;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.FileWriter;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.List;
- import javax.swing.*;
- public class P04 {
- static {
- try {
- Class.forName("com.ibm.db2.jcc.DB2Driver");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- //Proverava da li je uneti string broj
- public static boolean isInteger(String s){
- try{
- if(Integer.parseInt(s) < 2005 || Integer.parseInt(s) > 2014)
- return false;
- }
- catch(NumberFormatException e){
- return false;
- }
- return true;
- }
- //Stampa sqlcode, sqlstate i poruku koju try/catch blok uhvati
- public static void greska(SQLException e){
- if (e.getErrorCode() == -911 || e.getErrorCode() == -913)
- System.out.println("Objekat je zakljucan od strane druge transakcije. Sacekajte.\n");
- else
- System.out.println("SQLCODE: " + e.getErrorCode() + "\nSQLSTATE: " + e.getSQLState() + "\nMessage: " + e.getMessage());
- }
- public static void main(String[] args) {
- final JFrame frame = new JFrame();
- frame.setSize(300, 300);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setTitle("P04");
- final JPanel panel = new JPanel();
- final JTextArea rezultat = new JTextArea();
- final JTextField godina = new JTextField();
- final JButton dugme = new JButton("Potvrdi");
- List<String> nivoi = new ArrayList<>();
- final String url = "jdbc:db2://localhost:50001/VSTUD";
- final String username = "student";
- final String password = "abcdef";
- try{
- Connection con = DriverManager.getConnection(url, username, password);
- //Izdvajamo iz baze nivoe kvalifikacije i cuvamo u nizu nivoi
- Statement st = con.createStatement();
- String sql = "select naziv from nivo_kvalifikacije";
- ResultSet rs = st.executeQuery(sql);
- while(rs.next()){
- nivoi.add(rs.getString(1).trim());
- }
- rs.close();
- st.close();
- con.close();
- }
- catch (SQLException e){
- greska(e);
- }
- final JComboBox<Object> cbNivoi = new JComboBox<Object>(nivoi.toArray());
- final JComboBox<Object> cbSmerovi = new JComboBox<Object>();
- //Postavljamo dimenzije komponenti panela
- Dimension dimenzija = new Dimension(200, 25);
- godina.setPreferredSize(dimenzija);
- cbNivoi.setPreferredSize(dimenzija);
- cbSmerovi.setPreferredSize(dimenzija);
- dugme.setPreferredSize(dimenzija);
- //Postavljamo startne indekse za nivo i smer
- cbNivoi.setSelectedIndex(-1);
- cbSmerovi.setSelectedIndex(-1);
- //Dodajemo komponente na panel
- panel.add(cbNivoi);
- panel.add(cbSmerovi);
- panel.add(godina);
- panel.add(dugme);
- panel.add(rezultat);
- //Smer se ne moze birati dok se ne izabere nivo kvalifikacije
- cbSmerovi.setEnabled(false);
- cbNivoi.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- cbSmerovi.setEnabled(true);
- cbSmerovi.removeAllItems();
- try {
- Connection con = DriverManager.getConnection(url, username, password);
- String nivo = (String)cbNivoi.getSelectedItem();
- //Na osnovu izabranog nivoa kvalifikacije izvlacimo smerove iz baze
- PreparedStatement prep;
- String sql = "select s.naziv " +
- "from smer s join nivo_kvalifikacije nk on nk.id_nivoa=s.id_nivoa " +
- "where nk.naziv=?";
- prep = con.prepareStatement(sql);
- prep.setString(1, nivo);
- ResultSet rs = prep.executeQuery();
- while(rs.next()){
- cbSmerovi.addItem(rs.getString(1));
- }
- cbSmerovi.setSelectedIndex(-1);
- rs.close();
- prep.close();
- con.close();
- } catch (SQLException e1) {
- greska(e1);
- }
- }
- });
- dugme.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent event) {
- try {
- //Konekcija na bazu
- Connection con = DriverManager.getConnection(url, username, password);
- //Izvlacenje unesenih vrednosti
- String god = godina.getText();
- String nivo = (String)cbNivoi.getSelectedItem();
- String smer = (String)cbSmerovi.getSelectedItem();
- String sql = null;
- PreparedStatement prep;
- ResultSet rs;
- File text;
- //Provera da li je umesto broja u polje za godinu uneseno nesto drugo
- if(!godina.getText().isEmpty() && !isInteger(god)){
- JOptionPane.showMessageDialog(panel, "Unesite godinu od 2005. do 2014. ili nista ne unosite!");
- godina.setText("");
- godina.requestFocus();
- }
- //Provera da li je izabran nivo kvalifikacije
- else if(cbNivoi.getSelectedIndex() == -1){
- JOptionPane.showMessageDialog(panel, "Izaberite nivo studija!");
- cbNivoi.requestFocus();
- }
- else{
- boolean b = false; //Tacno je ako je naveden samo nivo kvalifikacije
- if(cbSmerovi.getSelectedIndex() == -1){
- if(god.isEmpty()){ //Unet samo nivo kvalifikacije
- sql = "select s.indeks, s.datum, s.status " +
- "from status s join dosije d on s.indeks=d.indeks " +
- "join smer sm on sm.id_smera=d.id_smera " +
- "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
- "where nk.naziv=?";
- prep = con.prepareStatement(sql);
- prep.setString(1, nivo);
- b = true; //kada nisu navedeni ni godina ni smer
- text = new File("status.zbirno.txt");
- }
- else{ //Unet nivo kvalifikacije i godina
- sql = "select status, count " +
- "from status s join dosije d on d.indeks = s.indeks " +
- "join upis_godine ug on ug.indeks = d.indeks " +
- "join smer sm on sm.id_smera=d.id_smera " +
- "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
- "where ug.godina = ? and nk.naziv=? " +
- "group by status";
- prep = con.prepareStatement(sql);
- prep.setInt(1, Integer.parseInt(god));
- prep.setString(2, nivo);
- text = new File("status.zbirno.G" + god + ".txt");
- }
- }
- else{
- if(god.isEmpty()){ //Unet nivo kvalifikacije i smer
- sql = "select status, count " +
- "from status s join dosije d on d.indeks = s.indeks " +
- "join smer sm on sm.id_smera = d.id_smera " +
- "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
- "where sm.naziv = ? and nk.naziv=? " +
- "group by status";
- //Izvlacimo oznaku smera kako bismo je upisali u ime datoteke
- prep = con.prepareStatement("select oznaka from smer where smer.naziv=?");
- prep.setString(1, smer);
- ResultSet rs1 = prep.executeQuery();
- String oznaka = "";
- while(rs1.next())
- oznaka = rs1.getString(1);
- text = new File("status." + oznaka.trim() + ".zbirno.txt");
- rs1.close();
- prep.close();
- //Izvrsavamo glavni upit za ovu granu
- prep = con.prepareStatement(sql);
- prep.setString(1, smer);
- prep.setString(2, nivo);
- }
- else{ //Sva tri polja su popunjena
- sql = "select status, count " +
- "from status s join dosije d on d.indeks = s.indeks " +
- "join upis_godine ug on ug.indeks = d.indeks " +
- "join smer sm on sm.id_smera = d.id_smera " +
- "join nivo_kvalifikacije nk on nk.id_nivoa=sm.id_nivoa " +
- "where ug.godina = ? and sm.naziv = ? and nk.naziv=? " +
- "group by status";
- //Izvlacimo oznaku smera kako bismo upisaliu naziv datoteke
- prep = con.prepareStatement("select oznaka from smer where smer.naziv=?");
- prep.setString(1, smer);
- ResultSet rs1 = prep.executeQuery();
- String oznaka = "";
- while(rs1.next())
- oznaka = rs1.getString(1);
- text = new File("status." + oznaka.trim() + ".G" + god + ".txt");
- rs1.close();
- prep.close();
- //Izvrsavamo glavni upit za ovu granu
- prep = con.prepareStatement(sql);
- prep.setInt(1, Integer.parseInt(god));
- prep.setString(2, smer);
- prep.setString(3, nivo);
- }
- }
- //"Cistimo" text okvir za upis novog rezultata
- rezultat.setText("");
- //"Otvaramo" datoteku u koju ce se pisati
- FileWriter izvestaj = new FileWriter(text);
- //Na pocetak izvestaja upisujemo "Matematicki fakultet", datum i vreme kreiranja izvestaja
- izvestaj.write("Matematicki fakultet " + Calendar.getInstance().getTime() + "\n");
- rs = prep.executeQuery();
- frame.setResizable(true);
- int i = 1; //i sluzi da bismo znali za koliko treba da povecamo nas panel
- while(rs.next()){
- if(b){
- //Ispisujemo rezultat na panel
- rezultat.append(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3) + "\n");
- //Ispisujemo rezultat u datoteku
- izvestaj.write(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3) + "\n");
- }
- else{
- //Ispisujemo rezultat na panel
- rezultat.append(rs.getString(1) + " " + rs.getInt(2) + "\n");
- //Ispisujemo rezultat u datoteku
- izvestaj.write(rs.getString(1) + " " + rs.getInt(2) + "\n");
- }
- frame.setSize(900, 40*i);
- i++;
- }
- rs.close();
- prep.close();
- con.close();
- izvestaj.close();
- }} catch (SQLException e) {
- greska(e);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- frame.add(panel);
- frame.pack();
- frame.setVisible(true);
- frame.setLocationRelativeTo(null);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement