15
 package domain; import java.io.Serializable; public class Masina implements Serializable { private String Marca; private String NrMatr; private boolean Inchiriata ; public Masina(String Marca, String NrMatr, boolean Inchiriata) { this.Marca = Marca; this.NrMatr = NrMatr; this.Inchiriata = Inchiriata; } public String getMarca() { return Marca; } public String getNrMatr() { return NrMatr; } public boolean getInchiriata() { return Inchiriata ; } public void SetMarca(String Marca) { this.Marca = Marca; } public void SetNrMatr(String NrMatr) { this.NrMatr = NrMatr; } public void SetInchiriere( boolean Inchiriata) { this.Inchiriata = Inchiriata; } public boolean equals(Masina m) { if( this.NrMatr.equals(m. NrMatr) ) // String-urile se compara cu: s1.equals(s2)  if( this.Marca.equals(m. Marca) ) if( this.Inchiriata == m.Inchiriata ) // boolean (tipurile primitive) se compara cu: ==  return true; return false; } public String toString() { return Marca+" "+NrMatr+" "+Inchiriata +" "; } } package repository; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import domain.Masina; public class Repository

Firma de leasing - implementare Java (cod sursa)

Embed Size (px)

Citation preview

Page 1: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 1/15

 

package domain;import java.io.Serializable;

public class Masina implements Serializable

{

private String Marca;private String NrMatr;

private boolean Inchiriata;

public Masina(String Marca, String NrMatr, boolean Inchiriata){

this.Marca = Marca;this.NrMatr = NrMatr;

this.Inchiriata = Inchiriata;

}

public String getMarca() { return Marca; }

public String getNrMatr() { return NrMatr; }

public boolean getInchiriata() { return Inchiriata; }

public void SetMarca(String Marca) { this.Marca = Marca; }

public void SetNrMatr(String NrMatr) { this.NrMatr = NrMatr; }

public void SetInchiriere(boolean Inchiriata) { this.Inchiriata = Inchiriata;}

public boolean equals(Masina m){

if( this.NrMatr.equals(m.NrMatr) ) // String-urile se compara

cu: s1.equals(s2) 

if( this.Marca.equals(m.Marca) )if( this.Inchiriata == m.Inchiriata ) // boolean

(tipurile primitive) se compara cu: == return true;

return false;}

public String toString() { return Marca+" "+NrMatr+" "+Inchiriata+" "; }}

package repository;

import java.io.BufferedReader;import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;import java.io.IOException;

import domain.Masina;

public class Repository

Page 2: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 2/15

{

private FileReader fileReader; // this is theinput 

private FileWriter fileWriter; // this is theoutput 

private BufferedReader bufferedReader; // this is the

buffered reader private BufferedWriter bufferedWriter; // this is the

buffered writer private String file;private int Capacitate = 100;private Masina[] masini;

private int Dimensiune; //dimensiunea vectorului, adica cate pozitii dinvector sunt ocupate 

public Repository(){

this.Dimensiune = 0;masini = new Masina[Capacitate];

readFile(file);}

public Repository(String file){

this.file = file;this.Dimensiune = 0;

masini = new Masina[Capacitate];readFile(file);

}

public int getDimensiune() { return this.Dimensiune; }

public String getFile() { return this.file; }

public boolean EImprumutata(Masina m) { return m.getInchiriata(); }

public void clear() { Dimensiune = 0; }

public String toString(){

String s="";

for(int i=0; i<Dimensiune; i++){

s = s + masini[i].toString() + "\n";}

return s;}

public Masina[] getMasini(){

Masina[] masini = new Masina[Dimensiune];

for(int i=0; i<Dimensiune; i++)masini[i] = this.masini[i];

Page 3: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 3/15

  return masini;

}

public void Dublare(){

Capacitate = Capacitate*2;

Masina[] nou = new Masina[Capacitate];for(int i=0; i<Dimensiune; i++)

{nou[i] = masini[i];

}masini = nou;

}

public void Adaugare(Masina m) throws RepositoryException

{if(Dimensiune > Capacitate) // daca nu mai avem capacitate,

o dublamDublare();

for(int i=0; i<Dimensiune; i++) // cautam daca exista duplicat(sa aiba acelasi nr de inmatriculare) 

if(masini[i].getNrMatr().equals(m.getNrMatr()))

throw new RepositoryException("Eroare: NumarMatricol " +m.getNrMatr() + " duplicat!");

masini[Dimensiune] = m; // adaugam masina Dimensiune = Dimensiune + 1; // crestem dimensiunea repositoriului 

writeFile(file); // actualizam fisierul }

public void Modificare(String nr, Masina m){

for(int i = 0; i < Dimensiune; i++)

if(masini[i].getNrMatr().equals(nr) )

masini[i] = m;

writeFile(file); // actualizamfisierul 

}

public void Sterge(String NrMatr){

for(int i =0; i < Dimensiune; i++)

if ( masini[i].getNrMatr().equals(NrMatr)){

for(int j = i ; j < Dimensiune-1 ; j++) // stergemelementul de la pozitia i 

masini[j] = masini [j+1]; //aducem elementele cu o pozitie mai la stanga 

Dimensiune = Dimensiune - 1; //

actualizam dimensiunea }

writeFile(file); // actualizamsi fisierul 

}

public void writeFile(String filename)

Page 4: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 4/15

{

try {

fileWriter = new FileWriter(filename);bufferedWriter = new BufferedWriter(fileWriter);

bufferedWriter.write(new Integer(Dimensiune).toString()+"\n");for(int i=0; i < Dimensiune; i++)

{bufferedWriter.write(masini[i].toString()+"\n");

}bufferedWriter.close();

fileWriter.close();}

catch (IOException e) { System.out.println(e); }

}

public void readFile(String filename){

try {fileReader = new FileReader(filename);

bufferedReader = new BufferedReader(fileReader);

clear();int dim = Integer. parseInt(bufferedReader.readLine());

Masina m;String line;String str[] = new String[3];

boolean Da;

for(int i=0; i<dim; i++){

line = bufferedReader.readLine();

str = line.split(" ");

if( str[2].equals("true") )Da = true;

else Da = false;

m = new Masina(str[0], str[1], Da);try 

{Adaugare(m);

}catch (RepositoryException e){} // daca a fost

vreun duplicat il ignora 

}

bufferedReader.close();fileReader.close();

}//try catch (IOException e) { System.out.println(e); }

}

Page 5: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 5/15

}

package repository;

public class RepositoryException extends Exception{

String error;public RepositoryException(String error) { this.error = error; }

public String getError() { return error;}}

package controller;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;import javax.swing.JOptionPane;

import model.ModelException;

import model.Model;import view.View;

public class Controller{

private Model model;

private View view;

public Controller(View view, Model model){

this.view = view;

this.model = model;this.view.addAddListener(new addListener());

this.view.addDelListener(new delListener());this.view.addModListener(new modListener());

}

class modListener implements ActionListener

{public void actionPerformed(ActionEvent e){

String s_vechi_nr;

String s_nr;String s_marca;

boolean b_inchiriat;

try {s_vechi_nr = view.getNrMatVechi();

if ( s_vechi_nr.equals("") )throw new Exception(); // daca e vid

arunca exceptie 

}catch (Exception ex){ // daca a fost o exceptie afiseaza eroare 

Page 6: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 6/15

JOptionPane.showMessageDialog(view, "Dati vechiul numar de

inmatriculare!", "Error", JOptionPane.ERROR_MESSAGE );return; //

sari peste restul validarilor }

try {

s_nr = view.getNrMat();if ( s_nr.equals("") )

throw new Exception(); // daca e vidarunca exceptie 

}catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare 

JOptionPane.showMessageDialog(view, "Dati noul numar deinmatriculare!", "Error", JOptionPane.ERROR_MESSAGE );

return; //sari peste restul validarilor 

}

try 

{s_marca = view.getMarca();

if ( s_marca.equals("") )throw new Exception(); // daca e vid

arunca exceptie }catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare JOptionPane.showMessageDialog(view, "Dati noua marca!",

"Error", JOptionPane.ERROR_MESSAGE );

return; //

sari peste restul validarilor 

}

try {

b_inchiriat = view.getInchiriata();}

catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare JOptionPane.showMessageDialog(view, "Setati Inchiriata!",

"Error", JOptionPane.ERROR_MESSAGE );return; //

sari peste restul validarilor }

// daca ajunge aici atunci toate sunt valide 

model.Modificare(s_vechi_nr, s_marca, s_nr, b_inchiriat);// modifica masina 

model.setValue(model.toVector());// actualizez lista 

}

Page 7: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 7/15

}

class addListener implements ActionListener{

public void actionPerformed(ActionEvent e)

{

String s_nr;String s_marca;

boolean b_inchiriat;

try {

s_nr = view.getNrMat();if ( s_nr.equals("") )

throw new Exception(); // daca e vid

arunca exceptie }

catch (Exception ex){ // daca a fost o exceptie afiseaza eroare 

JOptionPane.showMessageDialog(view, "Dati numar deinmatriculare!", "Error", JOptionPane.ERROR_MESSAGE );

return; //

sari peste restul validarilor }

try 

{s_marca = view.getMarca();if ( s_marca.equals("") )

throw new Exception(); // daca e vidarunca exceptie 

}

catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare 

JOptionPane.showMessageDialog(view, "Dati marca!","Error", JOptionPane.ERROR_MESSAGE );

return; //sari peste restul validarilor 

}

try 

{b_inchiriat = view.getInchiriata();

}catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare JOptionPane.showMessageDialog(view, "Setati Inchiriata!",

"Error", JOptionPane.ERROR_MESSAGE );

return;// sari peste restul validarilor 

}

// daca ajunge aici atunci toate sunt valide 

try {

Page 8: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 8/15

  model.AddMasina(s_marca, s_nr, b_inchiriat);

// adauga masina } catch (ModelException e1) {

JOptionPane.showMessageDialog(view, e1.getError(),"Error", JOptionPane.ERROR_MESSAGE );

}

model.setValue(model.toVector()); // actualizezlista 

}}

class delListener implements ActionListener

{public void actionPerformed(ActionEvent e)

{

String s_nr; // numar de inmatriculare try {

s_nr = view.getNrMat();

if ( s_nr.equals("") )throw new Exception(); // daca e vidarunca exceptie 

model.DeleteMasina(s_nr); // altfel sterge masina model.setValue(model.toVector()); // actualizez lista 

}catch (Exception ex)

{ // daca a fost o exceptie afiseaza eroare JOptionPane.showMessageDialog(view, "Dati numar de

inmatriculare!", "Error", JOptionPane.ERROR_MESSAGE );

}}

}

}

package model;

import java.util.Observable;import java.util.Vector;

import domain.Masina;

import repository.Repository;

import repository.RepositoryException;

public class Model extends Observable{private Repository repo;private Vector list;

public Model(Repository r) { this.repo = r; reset(); }

public Masina[] getMasini() { return this.repo.getMasini(); }

public Vector toVector() // returneaza un vector de elemente generice E 

Page 9: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 9/15

{

Vector masini = new Vector();Masina[] toate = getMasini();for(int i=0; i<toate.length; i++ )

masini.add(toate[i]);

return masini;

}

public void DeleteMasina(String NrMatr) { repo.Sterge(NrMatr); }

public void AddMasina (String marca,String NrMatr, boolean Inchiriata) throws ModelException

{Masina m = new Masina (marca, NrMatr, Inchiriata);

try 

{repo.Adaugare(m);

}catch (RepositoryException e) { throw new ModelException(e.getError());

} }

public void Modificare (String NrVechi, String MarcaNou, String NrNou, boolean InchiriataNou)

{Masina m = new Masina (MarcaNou, NrNou, InchiriataNou);

repo.Modificare(NrVechi, m);}

public void Clear() { repo.clear(); }

/** Reset to initial value. */ 

public void reset() {

setValue(this.toVector());

}

public void setValue(Vector vec){

list = vec;setChanged();//!!!!!!!!!!!!!!!!! 

notifyObservers();

}

public Vector getValue(){

return list;}

}

package model;

public class ModelException extends Exception{

String error;public ModelException(String error) { this.error = error; }

public String getError() { return error;}

Page 10: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 10/15

}

package view;

import java.awt.Color;

import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Window;

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;import java.util.Observable;

import java.util.Observer;import java.util.Vector;

import javax.swing.DefaultListModel;import javax.swing.JButton;

import javax.swing.JCheckBox;import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;import javax.swing.JOptionPane;

import javax.swing.JPanel;import javax.swing.JScrollPane;

import javax.swing.JTextField;import javax.swing.ListSelectionModel;

import javax.swing.UIManager;

import model.ModelException;

import model.Model;

import controller.Controller;

public class View extends JFrame implements Observer{

private Model model;private JLabel label_NrInmat;

private JLabel label_NrInmatVechi;private JLabel label_Marca;

private JLabel label_Masini;private JTextField nrInmat_vechi;

private JTextField nrInmat;

private JTextField Marca;private JButton btn_add;

private JButton btn_mod;private JButton btn_del;private JCheckBox checkBox_Inchiriata;private JList lista;

private DefaultListModel listModel;

public View(Model model)

{this.model = model;

model.addObserver(this);

Page 11: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 11/15

 

try {UIManager.setLookAndFeel(

UIManager.getSystemLookAndFeelClassName () ); // pune tema sistemului(iconite, bare, culori) 

}

catch (Exception e){e.printStackTrace();

}

this.setTitle("Masini Application");this.setLayout( new GridLayout(1,2,10,10) ); // linii, coloane,

spatiere_orizontala, spatiere_verticala this.addWindowListener(new WindowCloser());

this.setSize(this.getPreferredSize());this.pack();//frame.setVisible(true); 

initComponents(); // adaugacomponentele reset();

}

public Dimension getPreferredSize() { return new Dimension(600, 300); } //pixeli orizontala, pixeli verticala 

public DefaultListModel getListModel() { return listModel; }// returnam modelul listei ca sa il putem accesa din afara clasei 

public String getNrMat() { return nrInmat.getText(); }// returnam continutul fieldului nrInmat 

public String getNrMatVechi() { return nrInmat_vechi.getText(); } //

returnam continutul fieldului nrInmat_vechi 

public String getMarca() { return Marca.getText(); }// returnam continutul fieldului Marca 

public boolean getInchiriata() // returnam daca e

inchiriata sau nu 

{boolean da = false; // nu e selectata 

if (checkBox_Inchiriata.isSelected()) // daca e selectata ii dam true da = true;

return da; // returnamcum e 

}

public void addAddListener(ActionListener add) {btn_add.addActionListener(add); }

public void addModListener(ActionListener mod) {btn_mod.addActionListener(mod); }

Page 12: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 12/15

  public void addDelListener(ActionListener del) {

btn_del.addActionListener(del); }

private JPanel addCheckBox(){

JPanel subPanel = new JPanel(); //

creez un nou panel checkBox_Inchiriata = new JCheckBox("Inchiriata"); // creez checkbox 

// checkBox_Inchiriata.addActionListener(this); // ii adaug unlistener 

subPanel.add(checkBox_Inchiriata); //adaug checkboxul la panel 

return subPanel;// returnez panelul 

}

private JPanel addButonAdd(){

JPanel subPanel = new JPanel();

btn_add = new JButton("Adauga");subPanel.add(btn_add);

return subPanel;

}

private JPanel addButonModifica(){

JPanel subPanel = new JPanel();btn_mod = new JButton("Modifica");subPanel.add(btn_mod);

return subPanel;}

private JPanel addButonSterge()

{

JPanel subPanel=new JPanel();btn_del = new JButton("Sterge");

subPanel.add(btn_del);return subPanel;

}

private JPanel addInmatVechi()

{JPanel subPanel = new JPanel();

label_NrInmatVechi = new JLabel("Numar Inmat Pt Modif:");subPanel.add(label_NrInmatVechi);

nrInmat_vechi = new JTextField(10);label_NrInmatVechi.setLabelFor(nrInmat_vechi);

subPanel.add(nrInmat_vechi);

return subPanel;}

private JPanel addInmat()

{JPanel subPanel = new JPanel();

label_NrInmat = new JLabel("Numar Inmatriculare:");

Page 13: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 13/15

subPanel.add(label_NrInmat);

nrInmat = new JTextField(10);label_NrInmat.setLabelFor(nrInmat);subPanel.add(nrInmat);return subPanel;

}

private JPanel addMarca(){

JPanel subPanel = new JPanel();label_Marca = new JLabel("Marca:");subPanel.add(label_Marca);Marca = new JTextField(10);

label_Marca.setLabelFor(Marca);subPanel.add(Marca);

return subPanel;

}

private JPanel addList(){

JPanel subPanel = new JPanel();label_Masini = new JLabel("Masini"); // creez unnou label 

listModel = new DefaultListModel(); //creez un nou model pt lista (ca sa pot face actualizari) 

lista = new JList(listModel); // creez o lista cuvalorile initiale 

lista.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); // faclista sa suporte selectie simpla (cea multipla e implicita) 

lista.setSelectedIndex(0);// selectez primul index 

JScrollPane listScrollPane = new JScrollPane(lista); // pun

lista intr-un scrollPane(in caz ca elementele nu incap, vor aparea bare de scroll) 

label_Masini.setLabelFor(listScrollPane);// setez labelul la lista 

subPanel.add(label_Masini);// adaug label la panel 

subPanel.add(listScrollPane); //

adaug scrollPane la panel 

return subPanel;// returnez panelul 

}

private void actualizareLista(DefaultListModel model, Vector v) // functionto reload the list 

{

int size = v.size();model.clear(); // golesc modelul model.setSize(size); // ii pun noua dimensiune 

for(int i=0; i<size; i++)model.set(i, v.get(i)); // ii setez fiecare element 

}

Page 14: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 14/15

 

private void initComponents(){

JPanel subPanel = new JPanel(); // creeazapanel 

JPanel subPanel_stanga = new JPanel();

JPanel subPanel_dreapta = new JPanel();JPanel subPanel_dreapta_sus = new JPanel();

JPanel subPanel_dreapta_jos = new JPanel();

subPanel_stanga.add( addList() ); // adaugalista 

actualizareLista(listModel, model.toVector()); // actualizez lista 

subPanel_dreapta_sus.add( addInmatVechi() ); // adauga camp nr vechi 

subPanel_dreapta_sus.add( addInmat() ); // adauga camp nrnou 

subPanel_dreapta_sus.add( addMarca() ); // adauga campmarca 

subPanel_dreapta_sus.add( addCheckBox() ); // adauga campinchiriata 

subPanel_dreapta_jos.add( addButonAdd() ); // adauga butonadaugare 

subPanel_dreapta_jos.add( addButonModifica() ); // adauga butonmodifica 

subPanel_dreapta_jos.add( addButonSterge() ); // adauga buton stergere 

subPanel_dreapta.setLayout( new GridLayout(2,1) ); // 2 linii, 1

coloana subPanel_dreapta.add(subPanel_dreapta_sus); // adaug

partea de sus subPanel_dreapta.add(subPanel_dreapta_jos); // adaug

partea de jos 

add(subPanel_stanga); // adauga stanga 

add(subPanel_dreapta); // adauga dreapta }

private void reset()

{

model.reset();actualizareLista(listModel, model.getValue());

}

public void update(Observable a, Object b){

actualizareLista(listModel, model.getValue());

}

public class WindowCloser<E> extends WindowAdapter // ca sa se poatainchide aplicatia de la x 

{public void windowClosing(WindowEvent e)

{

Page 15: Firma de leasing - implementare Java (cod sursa)

7/30/2019 Firma de leasing - implementare Java (cod sursa)

http://slidepdf.com/reader/full/firma-de-leasing-implementare-java-cod-sursa 15/15

Window win = e.getWindow();

// recomandat win.setVisible(false);System.exit(0);

// necesar 

}

}

}

APPlication:

import repository.Repository;

import controller.Controller;

import view.View;import model.Model;

public class App{

public static void main( String [ ] args ){

Repository repo = new Repository("repository");Model model = new Model(repo);

View view = new View(model);Controller controller = new Controller(view, model);

view.setVisible(true);}

}