Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package roomBooking;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.util.Vector;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- public class Scheme extends JPanel implements MouseListener
- {
- private int days = 7;
- private Vector<bookPic> schemePics = new Vector<bookPic>();
- public Scheme(int week,int year, int roomNumber)
- {
- this.addMouseListener(this);
- // skapar ett vecko object så att jag enkelt kan få ut start och slut datum på veckan och använda dessa i sql frågan.
- Week w = new Week(week,year);
- String weekStartDate = w.getStartDate();
- String weekEndDate = w.getStopDate();
- String SQL =
- " SELECT"
- +" ((EXTRACT(MINUTE FROM TIMEDIFF(endtime,starttime))) + (EXTRACT(HOUR FROM TIMEDIFF(endtime,starttime))*60)) as minutes,"
- +" starttime AS start,"
- +" endtime AS end,"
- +" (SELECT name FROM users WHERE idnumber=booker) AS bookername,"
- +" reason AS reason,"
- +" WEEKDAY(starttime) AS dayInWeek,"
- +" CONCAT(EXTRACT(HOUR FROM starttime), ':', EXTRACT(MINUTE FROM starttime)) AS timeStart,"
- +" CONCAT(EXTRACT(HOUR FROM endtime), ':', EXTRACT(MINUTE FROM endtime)) AS timeEnd"
- +" FROM"
- +" booking"
- +" WHERE"
- +" room = ? AND starttime >= ? AND starttime <= ?"
- +" ORDER BY minutes DESC"
- ;
- try
- {
- Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/"+RoomConDet.getName(),RoomConDet.getUsername(),RoomConDet.getPassword());
- PreparedStatement pr = con.prepareStatement(SQL);
- pr.setInt(1, roomNumber);
- pr.setString(2, weekStartDate);
- pr.setString(3, weekEndDate);
- ResultSet rs = pr.executeQuery();
- while(rs.next())
- {
- String start = (rs.getString(7).substring(1, 2).equals(":")) ? "0"+rs.getString(7): rs.getString(7);
- start = (start.length() == 5) ? start : start+"0";
- String end = (rs.getString(8).substring(1, 2).equals(":")) ? "0"+rs.getString(8): rs.getString(8);
- end = (end.length() == 5) ? end : end+"0";
- // Lägger till bookPic object i vectorn som hållar alla bokningar
- schemePics.add(new bookPic(rs.getInt(6),start,end,rs.getInt(1),rs.getString(5),rs.getString(4)));
- }
- }
- catch (Exception e)
- {
- JOptionPane.showMessageDialog(null,"Säkerställ att mysql är igång och att databasen existerar","ERROR",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- // En överskuggad paintmetod så jag målar om alla bilder och anpassar stolekar och fonts efter det och anropar
- // i sin tur varje boknings interna ritmetod
- public void paint(Graphics g)
- {
- double minsPerDay = 600;
- int height = this.getHeight();
- int width = this.getWidth();
- int dayWidth = width/days;
- int fontSize = height/30;
- double minuteHeigt = (height-50)/minsPerDay;
- g.setColor(new Color(180,180,180));
- g.fillRect (0,0,width,height);
- drawDays(g, height, width);
- for(bookPic b:schemePics)
- {
- b.drawPic(g, fontSize, dayWidth, minuteHeigt);
- }
- }
- // Måla ut dagar och linjer för schemat
- private void drawDays(Graphics g, int height, int width)
- {
- String[] dayNames = {"Mån","Tis","Ons","Tor","Fre","Lör","Sön"};
- g.setFont(new Font("Arial", Font.PLAIN, 30));
- g.setColor(new Color(0,0,0));
- g.drawLine(0,49,width,49);
- for(int i=0;i<width;i+=width/days)
- {
- g.drawLine(i,0,i,height);
- int day = (i/(width/days) > 6) ? 6 : i/(width/days);
- g.drawString(dayNames[day], i + 10, 35);
- }
- }
- public void mouseClicked(MouseEvent e){}
- public void mouseEntered(MouseEvent e){}
- public void mouseExited(MouseEvent e){}
- public void mouseReleased(MouseEvent e){}
- public void mousePressed(MouseEvent e)
- {
- int x = e.getX();
- int y = e.getY();
- for(bookPic b:schemePics)
- {
- if(b.isInBox(x,y))
- {
- JOptionPane.showMessageDialog(null,
- "Start-tid: " +b.getStartTime() +"\n"
- +"Slut-tid: " +b.getEndTime() +"\n"
- +"Bokad av: " +b.getBooker() +"\n"
- +"Anledning: "+b.getReason(),
- "Information om bokning",JOptionPane.INFORMATION_MESSAGE
- );
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement