deleted aplicationFacade and imported it's functions to specific business logics.
[RRRRHHHH_Code] / ruralHouses / src / gui / QueryAvailabilityGUI.java
1 package gui;
2
3 import businessLogic.HouseManager;
4
5 import com.toedter.calendar.JCalendar;
6
7 import domain.Offer;
8 import domain.RuralHouse;
9
10 import javax.swing.*;
11
12 import java.awt.*;
13 import java.awt.event.*;
14 import java.beans.*;
15 import java.sql.Date;
16 import java.text.DateFormat;
17 import java.util.*;
18
19 import javax.swing.table.DefaultTableModel;
20
21
22
23
24
25 public class QueryAvailabilityGUI extends JFrame {
26 private static final long serialVersionUID = 1L;
27
28   private JLabel jLabel1 = new JLabel();
29   private JLabel jLabel2 = new JLabel();
30   private JTextField jTextField2 = new JTextField();
31   private JLabel jLabel3 = new JLabel();
32   private JTextField jTextField3 = new JTextField();
33   private JButton jButton1 = new JButton();
34   private JButton jButton2 = new JButton();
35   
36   // Code for JCalendar
37   private JCalendar jCalendar1 = new JCalendar();
38   private Calendar calendarMio = null;
39   private JLabel jLabel4 = new JLabel();
40   private JScrollPane scrollPane = new JScrollPane();
41   private JComboBox comboBox ;
42   private JTable table;
43   private DefaultTableModel tableModel;
44   private final JLabel labelNoOffers = new JLabel("");
45   private String[] columnNames = new String[] {
46                 "Offer#", "Rural House", "First Day", "Last Day", "Price"
47         };
48
49
50                                                                                                                                                                         
51   public QueryAvailabilityGUI()
52   {
53         
54     try
55     {
56       jbInit();
57     }
58     catch(Exception e)
59     {
60       e.printStackTrace();
61     }
62
63   }
64
65   private void jbInit() throws Exception
66   {
67         HouseManager houseM = new HouseManager();
68                 
69         Vector<RuralHouse> rhs=houseM.getAllRuralHouses();
70         
71         comboBox = new JComboBox(rhs);
72         //comboBox.setModel(new DefaultComboBoxModel(rhs));
73
74         
75     this.getContentPane().setLayout(null);
76     this.setSize(new Dimension(433, 548));
77     this.setTitle("Query availability");
78     jLabel1.setText("Rural house code:");
79     jLabel1.setBounds(new Rectangle(40, 20, 105, 25));
80     jLabel2.setText("First day:");
81     jLabel2.setBounds(new Rectangle(40, 55, 75, 25));
82     jTextField2.setBounds(new Rectangle(190, 210, 155, 25));
83     jTextField2.setEditable(false);
84     jLabel3.setText("Number of nights:");
85     jLabel3.setBounds(new Rectangle(40, 250, 115, 25));
86     jTextField3.setBounds(new Rectangle(190, 250, 155, 25));
87     jTextField3.setText("0");
88     jButton1.setText("Accept");
89     jButton1.setBounds(new Rectangle(55, 455, 130, 30));
90     jButton1.addActionListener(new ActionListener()
91               {
92                 public void actionPerformed(ActionEvent e)
93                 {
94                   jButton1_actionPerformed(e);
95                 }
96               });
97     jButton2.setText("Close");
98     jButton2.setBounds(new Rectangle(230, 455, 130, 30));
99     
100    
101     jTextField3.addFocusListener(new FocusListener()
102       {
103           public void focusGained(FocusEvent e)
104           {
105           }
106   
107           public void focusLost(FocusEvent e)
108           {
109             jTextField3_focusLost();
110           }
111       });
112     jButton2.addActionListener(new ActionListener()
113       {
114         public void actionPerformed(ActionEvent e)
115         {
116           jButton2_actionPerformed(e);
117         }
118       });
119     jLabel4.setBounds(new Rectangle(55, 300, 305, 30));
120     jLabel4.setForeground(Color.red);
121     jCalendar1.setBounds(new Rectangle(190, 60, 225, 150));
122     scrollPane.setBounds(new Rectangle(45, 305, 320, 116));
123     
124     this.getContentPane().add(scrollPane, null);
125     
126     table = new JTable();
127     table.addMouseListener(new MouseAdapter() {
128         @Override
129         public void mouseClicked(MouseEvent e) {
130                 int i=table.getSelectedRow();
131                 int houseNumber = (Integer) tableModel.getValueAt(i,1);
132                 Date firstDate=new Date(((java.util.Date)tableModel.getValueAt(i,2)).getTime());
133                 Date lastDate=new Date(((java.util.Date)tableModel.getValueAt(i,3)).getTime());
134         
135                         BookRuralHouseGUI b=new BookRuralHouseGUI(houseNumber,firstDate,lastDate);
136                         b.setVisible(true);}
137     });
138
139     scrollPane.setViewportView(table);
140     tableModel = new DefaultTableModel(
141                         null,
142                 columnNames);
143                 
144     table.setModel(tableModel);
145     this.getContentPane().add(jCalendar1, null);
146     this.getContentPane().add(jLabel4, null);
147     this.getContentPane().add(jButton2, null);
148     this.getContentPane().add(jButton1, null);
149     this.getContentPane().add(jTextField3, null);
150     this.getContentPane().add(jLabel3, null);
151     this.getContentPane().add(jTextField2, null);
152     this.getContentPane().add(jLabel2, null);
153     this.getContentPane().add(jLabel1, null);
154     comboBox.setBounds(new Rectangle(245, 22, 115, 20));
155     comboBox.setBounds(189, 22, 115, 20);
156     
157     getContentPane().add(comboBox);
158     labelNoOffers.setBounds(73, 432, 265, 14);
159     
160     getContentPane().add(labelNoOffers);
161     
162     // Codigo para el JCalendar
163     this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener()
164     {
165       public void propertyChange(PropertyChangeEvent propertychangeevent)
166       {
167         if (propertychangeevent.getPropertyName().equals("locale"))
168         {
169           jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
170           DateFormat dateformat = DateFormat.getDateInstance(1, jCalendar1.getLocale());
171           jTextField2.setText(dateformat.format(calendarMio.getTime()));
172         }
173         else if (propertychangeevent.getPropertyName().equals("calendar"))
174         {
175           calendarMio = (Calendar) propertychangeevent.getNewValue();
176           DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
177           jTextField2.setText(dateformat1.format(calendarMio.getTime()));
178           jCalendar1.setCalendar(calendarMio);
179         }
180       } 
181     });
182     
183
184   }
185
186   private void jButton2_actionPerformed(ActionEvent e)
187   {
188     this.setVisible(false);
189   }
190   
191   
192  private void jTextField3_focusLost()
193  {
194    try
195   {
196     new Integer (jTextField3.getText());
197     jLabel4.setText("");
198   }
199   catch (NumberFormatException ex)
200   {
201     jLabel4.setText("Error: Introduce a number");
202   }
203  }
204
205  private void jButton1_actionPerformed(ActionEvent e)
206  {              
207                 // House object
208                 RuralHouse rh=(RuralHouse)comboBox.getSelectedItem();
209                 // First day
210                 Date firstDay=new Date(jCalendar1.getCalendar().getTime().getTime());
211             //Remove the hour:minute:second:ms from the date 
212                 firstDay=Date.valueOf(firstDay.toString());
213                 final long diams=1000*60*60*24;
214                 long nights= diams * Integer.parseInt(jTextField3.getText());
215                 // Last day
216         Date lastDay= new Date((long)(firstDay.getTime()+nights));
217         
218         try {
219                 
220
221                 Vector<Offer> v=rh.getOffers(firstDay, lastDay);
222   
223                         Enumeration<Offer> en=v.elements();
224                         Offer of;
225                         tableModel.setDataVector(null, columnNames);
226                         if (!en.hasMoreElements())
227                                 labelNoOffers.setText("There are no offers at these dates");
228                         else {
229                                 labelNoOffers.setText("Select an offer if you want to book");
230
231                                 while (en.hasMoreElements()) {
232                                         of=en.nextElement();
233                                         System.out.println("Offer retrieved: "+of.toString());
234                                         Vector<Object> row = new Vector<Object>();
235                                         row.add(of.getOfferNumber());
236                                         row.add(of.getRuralHouse().getHouseNumber());
237
238                                         // Dates are stored in db4o as java.util.Date objects instead of java.sql.Date objects
239                                         // They have to be converted into java.sql.Date objects before
240                                         Date firstDaySqlDate = new Date(of.getFirstDay().getTime());
241                                         Date lastDaySqlDate = new Date(of.getLastDay().getTime());
242                                         row.add(firstDaySqlDate);
243                                         row.add(lastDaySqlDate);
244                                         row.add(of.getPrice());
245
246                                         
247                                         tableModel.addRow(row);                                         
248                                 }
249                         }
250
251                 
252        } catch (Exception e1) {
253
254            labelNoOffers.setText(e1.getMessage());
255         }}      
256 }