Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sax_demo;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Set;
- import javax.swing.JOptionPane;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.transform.OutputKeys;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- /**
- *
- * @author profesor
- */
- public class App extends javax.swing.JFrame {
- DocumentBuilderFactory dbFactory;
- DocumentBuilder dBuilder;
- Document doc;
- /**
- * Creates new form App
- */
- public App() {
- initComponents();
- prikaziXML("automobili.xml");
- }
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
- private void initComponents() {
- jLabel1 = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- jLabel4 = new javax.swing.JLabel();
- jLabel5 = new javax.swing.JLabel();
- jTextField1 = new javax.swing.JTextField();
- jTextField2 = new javax.swing.JTextField();
- jTextField3 = new javax.swing.JTextField();
- jLabel6 = new javax.swing.JLabel();
- jButton1 = new javax.swing.JButton();
- jLabel7 = new javax.swing.JLabel();
- jComboBox1 = new javax.swing.JComboBox();
- jLabel8 = new javax.swing.JLabel();
- jTextField4 = new javax.swing.JTextField();
- jButton2 = new javax.swing.JButton();
- jScrollPane1 = new javax.swing.JScrollPane();
- jTextArea1 = new javax.swing.JTextArea();
- jLabel9 = new javax.swing.JLabel();
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- setTitle("XML VJEŽBA");
- jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
- jLabel1.setText("XML - DOM PRIMJER");
- jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
- jLabel2.setForeground(new java.awt.Color(249, 0, 0));
- jLabel2.setText("Podaci o automobilu:");
- jLabel3.setText("NAZIV:");
- jLabel4.setText("GODINA:");
- jLabel5.setText("CIJENA:");
- jLabel6.setText("EUR");
- jButton1.setText("UPIŠI NOVI PODATAK");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
- jLabel7.setText("TRAŽI PODATAK:");
- jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "-", "NAJSKUPLJI AUTO", "NAJSTARIJI AUTO", "PRIKAZ PO NAZIVU", "OBRIŠI PO NAZIVU" }));
- jComboBox1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jComboBox1ActionPerformed(evt);
- }
- });
- jLabel8.setText("NOVA DATOTEKA:");
- jButton2.setText("KREIRAJ");
- jButton2.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton2ActionPerformed(evt);
- }
- });
- jTextArea1.setColumns(20);
- jTextArea1.setRows(5);
- jScrollPane1.setViewportView(jTextArea1);
- jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
- jLabel9.setForeground(new java.awt.Color(171, 0, 0));
- jLabel9.setText("SADRŽAJ XML DOKUMENTA");
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(jLabel1)
- .addComponent(jLabel2)
- .addGroup(layout.createSequentialGroup()
- .addGap(10, 10, 10)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(jLabel3)
- .addGap(18, 18, 18)
- .addComponent(jTextField1))
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel9)
- .addGroup(layout.createSequentialGroup()
- .addComponent(jLabel4)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(jLabel5)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jLabel6))
- .addGroup(layout.createSequentialGroup()
- .addComponent(jLabel7)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(jLabel8)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 352, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(0, 0, Short.MAX_VALUE)))))
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton1))
- .addGroup(layout.createSequentialGroup()
- .addGap(26, 26, 26)
- .addComponent(jButton2)))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(jLabel1)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jLabel2)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel3)
- .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jButton1))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel4)
- .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel5)
- .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel6))
- .addGap(18, 18, 18)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel7)
- .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(18, 18, 18)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel8)
- .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jButton2))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jLabel9)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE)
- .addContainerGap())
- );
- pack();
- }// </editor-fold>
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
- // upis novih podataka u stablo
- Element root = doc.getDocumentElement();
- Element autoNovi = doc.createElement("auto");
- root.appendChild(autoNovi);
- // upisivanje podataka o autu
- Element node = doc.createElement("naziv");
- node.setTextContent(jTextField1.getText());
- autoNovi.appendChild(node);
- node = doc.createElement("godina");
- node.setTextContent(jTextField2.getText());
- autoNovi.appendChild(node);
- node = doc.createElement("cijena");
- node.setTextContent(jTextField3.getText());
- autoNovi.appendChild(node);
- ispisTemp(); // ispis privremenog DOM-a
- }
- private void ispisTemp() {
- try {
- jTextArea1.setText("Popis automobila\n");
- NodeList nList = doc.getElementsByTagName("auto");
- jTextArea1.append("----------------------------\n");
- int rb = 1;
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- jTextArea1.append(rb + "\n");
- rb++;
- jTextArea1.append("NAZIV: ");
- jTextArea1.append(eElement
- .getElementsByTagName("naziv")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("GODINA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("godina")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("CIJENA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("cijena")
- .item(0)
- .getTextContent() + "\n");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- switch (jComboBox1.getSelectedIndex()) {
- case 1:
- ispisElementa(najSkuplji());
- break;
- case 2:
- ispisElementa(najStariji());
- break;
- case 3:
- traziPoImenu();
- break;
- case 4:
- obrisiAuto();
- break;
- default:
- ispisTemp();
- }
- }
- void traziPoImenu(){
- try {
- ArrayList polje = new ArrayList();
- String ime;
- String naziv="";
- if(jTextField1.getText().compareToIgnoreCase("")!=0){
- ime=jTextField1.getText();
- Element eElementNaziv = null;
- NodeList nList = doc.getElementsByTagName("auto");
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if(nNode.getNodeType()==Node.ELEMENT_NODE){
- Element eElement = (Element) nNode;
- naziv=eElement.getElementsByTagName("naziv").item(0).getTextContent();
- if (naziv.compareToIgnoreCase(ime)==0) {
- polje.add(eElement);
- }
- }
- }
- jTextArea1.setText("");
- for(int i=0;i<polje.size();i++){
- ispisElementa((Element)polje.get(i));
- }
- }
- else{
- JOptionPane.showMessageDialog(null, "Morate imati upisano ime auta!");
- jComboBox1.setSelectedIndex(0);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- void obrisiAuto(){
- try {
- Set<Element> polje = new HashSet<Element>();
- String ime;
- String naziv="";
- if(jTextField1.getText().compareToIgnoreCase("")!=0){
- ime=jTextField1.getText();
- Element eElementNaziv = null;
- NodeList nList = doc.getElementsByTagName("auto");
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- if (temp == 0) {
- naziv=eElement.getElementsByTagName("naziv").item(temp).getTextContent();
- eElementNaziv = eElement;
- if (naziv.compareToIgnoreCase(ime)==0) {
- polje.add(eElement);
- }
- } else {
- naziv=eElement.getElementsByTagName("naziv").item(0).getTextContent();
- if (naziv.compareToIgnoreCase(ime)==0) {
- polje.add(eElement);
- }
- }
- }
- }
- for (Element e: polje) {
- e.getParentNode().removeChild(e);
- }
- ispisTemp();
- }
- else{
- JOptionPane.showMessageDialog(null, "Morate imati upisano ime auta!");
- jComboBox1.setSelectedIndex(0);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
- // kreiranje novog dokumenta
- try{
- // zapisivanje DOM objekta u xml datoteku
- String currentDir = new File(".").getAbsolutePath();
- String datotekaNaziv=currentDir+"\\Datoteke\\"+jTextField4.getText();
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- doc.getDocumentElement().normalize();
- DOMSource source = new DOMSource(doc);
- StreamResult result = new StreamResult(new File(datotekaNaziv));
- transformer.transform(source, result);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- void prikaziXML(String naziv) {
- try {
- String currentDir = new File(".").getAbsolutePath();
- File inputFile = new java.io.File(currentDir + "\\" + "Datoteke\\" + naziv);
- dbFactory
- = DocumentBuilderFactory.newInstance();
- dBuilder = dbFactory.newDocumentBuilder();
- doc = dBuilder.parse(inputFile);
- doc.getDocumentElement().normalize();
- jTextArea1.setText("Popis automobila\n");
- NodeList nList = doc.getElementsByTagName("auto");
- jTextArea1.append("----------------------------\n");
- int rb = 1;
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- jTextArea1.append(rb + "\n");
- rb++;
- jTextArea1.append("NAZIV: ");
- jTextArea1.append(eElement
- .getElementsByTagName("naziv")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("GODINA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("godina")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("CIJENA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("cijena")
- .item(0)
- .getTextContent() + "\n");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- Element najStariji() {
- try {
- int godina = 0;
- Element eElementGodina = null;
- NodeList nList = doc.getElementsByTagName("auto");
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- if (temp == 0) {
- godina = Integer.parseInt(eElement
- .getElementsByTagName("godina")
- .item(0)
- .getTextContent());
- eElementGodina = eElement;
- } else {
- int temGod = Integer.parseInt(eElement
- .getElementsByTagName("godina")
- .item(0)
- .getTextContent());
- if (temGod < godina) {
- godina = temGod;
- eElementGodina = eElement;
- }
- }
- }
- }
- return eElementGodina;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- Element najSkuplji() {
- try {
- int cijena = 0;
- Element eElementGodina = null;
- NodeList nList = doc.getElementsByTagName("auto");
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- if (temp == 0) {
- cijena = Integer.parseInt(eElement
- .getElementsByTagName("cijena")
- .item(0)
- .getTextContent());
- eElementGodina = eElement;
- } else {
- int tem = Integer.parseInt(eElement
- .getElementsByTagName("cijena")
- .item(0)
- .getTextContent());
- if (tem > cijena) {
- cijena = tem;
- eElementGodina = eElement;
- }
- }
- }
- }
- return eElementGodina;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- void ispisElementa(Element eElement) {
- jTextArea1.append("NAZIV: ");
- jTextArea1.append(eElement
- .getElementsByTagName("naziv")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("GODINA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("godina")
- .item(0)
- .getTextContent() + "\n");
- jTextArea1.append("CIJENA: ");
- jTextArea1.append(eElement
- .getElementsByTagName("cijena")
- .item(0)
- .getTextContent() + "\n");
- }
- /**
- * @param args the command line arguments
- */
- public static void main(String args[]) {
- /* Set the Nimbus look and feel */
- //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
- /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
- * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- //</editor-fold>
- /* Create and display the form */
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- new App().setVisible(true);
- }
- });
- }
- // Variables declaration - do not modify
- private javax.swing.JButton jButton1;
- private javax.swing.JButton jButton2;
- private javax.swing.JComboBox jComboBox1;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JLabel jLabel4;
- private javax.swing.JLabel jLabel5;
- private javax.swing.JLabel jLabel6;
- private javax.swing.JLabel jLabel7;
- private javax.swing.JLabel jLabel8;
- private javax.swing.JLabel jLabel9;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JTextArea jTextArea1;
- private javax.swing.JTextField jTextField1;
- private javax.swing.JTextField jTextField2;
- private javax.swing.JTextField jTextField3;
- private javax.swing.JTextField jTextField4;
- // End of variables declaration
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement