Advertisement
Guest User

Untitled

a guest
May 2nd, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.28 KB | None | 0 0
  1. package roomBooking;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.PreparedStatement;
  11. import java.sql.ResultSet;
  12. import java.util.Vector;
  13.  
  14. import javax.swing.JOptionPane;
  15. import javax.swing.JPanel;
  16.  
  17. public class Scheme extends JPanel implements MouseListener
  18. {
  19.     private int days = 7;  
  20.     private Vector<bookPic> schemePics = new Vector<bookPic>();
  21.    
  22.     public Scheme(int week,int year, int roomNumber)
  23.     {
  24.         this.addMouseListener(this);
  25.        
  26.         // 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.
  27.         Week w = new Week(week,year);      
  28.         String weekStartDate = w.getStartDate();
  29.         String weekEndDate   = w.getStopDate();
  30.  
  31.         String SQL =
  32.          "  SELECT"
  33.         +"      ((EXTRACT(MINUTE FROM TIMEDIFF(endtime,starttime))) + (EXTRACT(HOUR FROM TIMEDIFF(endtime,starttime))*60)) as minutes,"
  34.         +"      starttime AS start,"
  35.         +"      endtime AS end,"
  36.         +"      (SELECT name FROM users WHERE idnumber=booker) AS bookername,"
  37.         +"      reason AS reason,"
  38.         +"      WEEKDAY(starttime) AS dayInWeek,"
  39.         +"      CONCAT(EXTRACT(HOUR FROM starttime), ':', EXTRACT(MINUTE FROM starttime)) AS timeStart,"
  40.         +"      CONCAT(EXTRACT(HOUR FROM endtime), ':', EXTRACT(MINUTE FROM endtime)) AS timeEnd"
  41.         +"  FROM"
  42.         +"      booking"
  43.         +"  WHERE"
  44.         +"      room = ? AND starttime >= ? AND starttime <= ?"
  45.         +"  ORDER BY minutes DESC"
  46.         ;
  47.  
  48.         try
  49.         {
  50.             Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/"+RoomConDet.getName(),RoomConDet.getUsername(),RoomConDet.getPassword());
  51.             PreparedStatement pr = con.prepareStatement(SQL);
  52.             pr.setInt(1, roomNumber);
  53.             pr.setString(2, weekStartDate);
  54.             pr.setString(3, weekEndDate);
  55.            
  56.             ResultSet rs = pr.executeQuery();
  57.             while(rs.next())
  58.             {
  59.                
  60.                 String start = (rs.getString(7).substring(1, 2).equals(":")) ? "0"+rs.getString(7): rs.getString(7);
  61.                 start        = (start.length() == 5) ? start : start+"0";
  62.                 String end   = (rs.getString(8).substring(1, 2).equals(":")) ? "0"+rs.getString(8): rs.getString(8);
  63.                 end          = (end.length() == 5) ? end : end+"0";
  64.                
  65.                 // Lägger till bookPic object i vectorn som hållar alla bokningar
  66.                 schemePics.add(new bookPic(rs.getInt(6),start,end,rs.getInt(1),rs.getString(5),rs.getString(4)));
  67.             }
  68.         }
  69.         catch (Exception e)
  70.         {
  71.             JOptionPane.showMessageDialog(null,"Säkerställ att mysql är igång och att databasen existerar","ERROR",JOptionPane.INFORMATION_MESSAGE);
  72.         }
  73.     }
  74.    
  75.     // En överskuggad paintmetod så jag målar om alla bilder och anpassar stolekar och fonts efter det och anropar
  76.     // i sin tur varje boknings interna ritmetod
  77.     public void paint(Graphics g)
  78.     {      
  79.         double minsPerDay   = 600;
  80.         int height          = this.getHeight();
  81.         int width           = this.getWidth();
  82.         int dayWidth        = width/days;
  83.         int fontSize        = height/30;
  84.         double minuteHeigt  = (height-50)/minsPerDay;
  85.        
  86.         g.setColor(new Color(180,180,180));
  87.         g.fillRect (0,0,width,height);     
  88.  
  89.         drawDays(g, height, width);
  90.         for(bookPic b:schemePics)
  91.         {
  92.             b.drawPic(g, fontSize, dayWidth, minuteHeigt);
  93.         }
  94.     }
  95.    
  96.     // Måla ut dagar och linjer för schemat
  97.     private void drawDays(Graphics g, int height, int width)
  98.     {
  99.         String[] dayNames = {"Mån","Tis","Ons","Tor","Fre","Lör","Sön"};
  100.        
  101.         g.setFont(new Font("Arial", Font.PLAIN, 30));
  102.         g.setColor(new Color(0,0,0));
  103.        
  104.         g.drawLine(0,49,width,49);
  105.         for(int i=0;i<width;i+=width/days)
  106.         {
  107.             g.drawLine(i,0,i,height);
  108.             int day = (i/(width/days) > 6) ? 6 : i/(width/days);
  109.             g.drawString(dayNames[day], i + 10, 35);           
  110.         }  
  111.     }
  112.    
  113.     public void mouseClicked(MouseEvent e){}
  114.     public void mouseEntered(MouseEvent e){}
  115.     public void mouseExited(MouseEvent e){}
  116.     public void mouseReleased(MouseEvent e){}
  117.  
  118.     public void mousePressed(MouseEvent e)
  119.     {
  120.         int x = e.getX();
  121.         int y = e.getY();
  122.         for(bookPic b:schemePics)
  123.         {
  124.             if(b.isInBox(x,y))
  125.             {
  126.                 JOptionPane.showMessageDialog(null,
  127.                     "Start-tid: " +b.getStartTime() +"\n"
  128.                     +"Slut-tid: " +b.getEndTime()   +"\n"
  129.                     +"Bokad av: " +b.getBooker()    +"\n"
  130.                     +"Anledning: "+b.getReason(),
  131.                     "Information om bokning",JOptionPane.INFORMATION_MESSAGE
  132.                 );
  133.                 break;
  134.             }
  135.         }
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement