Selaa lähdekoodia

Added SQL and Network

Kenneth van Ewijk 10 vuotta sitten
vanhempi
commit
3dba4b6b92

+ 5 - 0
audio/Song.java

@@ -138,6 +138,11 @@ public class Song implements Comparable<Song>{
 	public File getFile() {
 		return file;
 	}
+	
+	public String getFolder()
+	{
+		return file.getParentFile().getName();
+	}
 
 	public void setFile(File file) {
 		this.file = file;

+ 183 - 0
data/io/SQLConnector.java

@@ -0,0 +1,183 @@
+package data.io;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.List;
+
+import model.objects.Highscore;
+import audio.Song;
+import audio.SongInstance;
+
+public class SQLConnector
+{
+
+    private Connection myConn = null;
+    
+    public SQLConnector()
+    {
+        this("178.62.254.153", "3306","colorstrike","csadmin","aardbei123");
+    }
+
+    //Start connection with Databse
+    public SQLConnector(String host, String port, String dbName, String userName, String password)
+    {
+        try
+        {
+            String url = "jdbc:mysql://" + host + ":" + port + "/"+ dbName + "?user="
+            + userName
+            + "&password="
+            + password;
+            Class.forName("com.mysql.jdbc.Driver").newInstance ();
+            myConn = DriverManager.getConnection(url);
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch(Exception ex)
+        {
+            System.out.println("Error : " + ex.getMessage());
+        }
+    }
+    
+    public List<Highscore> getHighscore(String song)
+    {
+    	Statement st = executeResultQuery("SELECT * FROM highscore");
+    	ResultSet result = null;
+		try {
+			result = st.getResultSet();
+		} catch (SQLException e1) {
+			e1.printStackTrace();
+		}
+    	try {
+			while(result.next())
+			{
+				
+			}
+		} catch (SQLException e) {
+		}
+    	
+    	return  null;
+    }
+    
+    public void update(List<Song> songs)
+    {
+    	for(Song s : songs)
+    	{
+    		executeInsertQuery("INSERT INTO song (folder, title, author) VALUES ('" + s.getFolder() + "', '" + s.getTitle() + "', '" + s.getAuthor() + "');");
+    		
+    		Statement st = executeResultQuery("SELECT id FROM song WHERE folder='" + s.getFolder() + "'");
+    		
+    		ResultSet rs = null;
+    		int id = -1;
+    		
+			try {
+				rs = st.getResultSet();
+				rs.next();
+				id = rs.getInt(1);
+				System.out.println("Song " + id + " added to database");
+				rs.close();
+				st.close();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+    	
+    		if(id != -1)
+    		{
+    			for(SongInstance si : s.getSongs())
+    			{
+	    			Statement st2 = executeResultQuery("SELECT id FROM songinstance WHERE song=" + id + " AND difficulty='" + si.getDifficulty() + "'");
+	        		
+	        		ResultSet rs2 = null;
+	        		
+	    			try {
+	    				rs2 = st2.getResultSet();
+	    				if(rs2.first())
+	    				{
+	    					System.err.println("SongInstance Already Exists ");
+	    				}
+	    				else
+	    				{
+	    					executeInsertQuery("INSERT INTO songinstance (song, enemies, difficulty) VALUES (" + id + ", " + si.getObjects().size() + ", '" + si.getDifficulty() + "');");
+	    					System.out.println("Songinstance Added");
+	    				}
+	    				rs.close();
+	    				st.close();
+	    			} catch (SQLException e) {
+	    				e.printStackTrace();
+	    			}
+    			}
+    		}
+    		else
+    			System.err.println("Insert Failed");
+ 
+    	}
+    }
+    
+    private void executeInsertQuery(String query)
+    {
+        try{
+            Statement s = myConn.createStatement();
+            s.execute(query);
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+            System.out.println("SQLException: " + ex.getMessage());
+            System.out.println("SQLState: " + ex.getSQLState());
+            System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+           System.out.println("getMeasurement: " + ex.getMessage());
+        }
+    }
+
+    //Execute a custom query
+    private Statement executeResultQuery(String query)
+    {   
+        Statement s = null;
+        
+        try{
+            s = myConn.createStatement();
+            s.executeQuery(query);
+            
+        }
+        catch( SQLException ex)
+        {
+            System.out.println("SQLException: " + ex.getMessage());
+            System.out.println("SQLState: " + ex.getSQLState());
+            System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+           System.out.println("getMeasurement: " + ex.getMessage());
+        }
+        
+        return s;
+    }
+    
+    //Close connection with Database
+    @Override
+    public void finalize() throws Throwable
+    {
+        // Close database connection
+        if( myConn != null )
+        {
+            try
+            {
+                myConn.close();
+                System.out.println("Database connection terminated");
+            }
+            catch( Exception e ) {}
+        }
+
+        super.finalize();
+    }
+
+}

+ 10 - 6
main/Window.java

@@ -17,10 +17,10 @@ import model.SongHandler;
 import view.GameView;
 import control.GameControl;
 import control.GameStateManager;
-import control.LedHandler;
 import control.NetworkHandler;
 import control.button.ButtonHandler;
 import control.joystick.JoystickHandler;
+import data.io.SQLConnector;
 
 public class Window extends JFrame {	
 	private static final long serialVersionUID = -9222956702898533696L;
@@ -37,9 +37,7 @@ public class Window extends JFrame {
 		
 		//Create Events
 		Window.ON_RASP = ON_RASP;
-		LedHandler led = null;
 		if(ON_RASP){ //Only on the raspberry pi
-			led = new LedHandler();
 			GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
 			GraphicsDevice[] devices =  graphicsEnvironment.getScreenDevices();
 
@@ -57,15 +55,16 @@ public class Window extends JFrame {
 		ButtonHandler bth = new ButtonHandler();
 		JoystickHandler jsh = new JoystickHandler();
 		
+		SQLConnector sql = new SQLConnector();
 		NetworkHandler ntw = new NetworkHandler("192.168.1.6", 1113, bth, jsh);
 		
 		bth.setNetwork(ntw);
 		
 		//Create Instances
-		final SongHandler sh = new SongHandler();
+		final SongHandler sh = new SongHandler(sql);
 		GameStateManager gsm = new GameStateManager(sh);
-		GameView view = new GameView(led,gsm);
-		GameModel model = new GameModel(sh, gsm, led);
+		GameView view = new GameView(gsm);
+		GameModel model = new GameModel(sh, gsm, ntw);
 		GameControl control = new GameControl(model, view,gsm);
 		setContentPane(view);
 		
@@ -74,6 +73,11 @@ public class Window extends JFrame {
 		addWindowListener(new WindowAdapter(){
 			public void windowClosing(WindowEvent e) {
 				sh.close();
+				try {
+					sql.finalize();
+				} catch (Throwable e1) {
+					e1.printStackTrace();
+				}
 				System.exit(0);
 			}
 		});

+ 6 - 6
model/GameModel.java

@@ -4,19 +4,19 @@ import java.awt.Color;
 
 import main.Window;
 import control.GameStateManager;
-import control.LedHandler;
+import control.NetworkHandler;
 import control.button.ButtonHandler;
 
 public class GameModel {
 
 	public static Color[] colors = { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.CYAN, Color.ORANGE };
 	private GameStateManager gsm;
-	private LedHandler led;
+	private NetworkHandler ntw;
 	private int count = 0;
 
-	public GameModel(SongHandler sh, GameStateManager gsm, LedHandler led) {
+	public GameModel(SongHandler sh, GameStateManager gsm, NetworkHandler ntw) {
 		this.gsm = gsm;
-		this.led = led;
+		this.ntw = ntw;
 
 		for (int i = 1; i < ButtonHandler.getButtons().size(); i++) {
 			ButtonHandler.getButtons().get(i).setColor(colors[i - 1]);
@@ -34,9 +34,9 @@ public class GameModel {
 			if(count>15)
 			{
 				for (int i = 7; i < 54; i++) {
-					led.setLed(i, c.getRed(), c.getGreen(), c.getBlue());
+					ntw.setLed(i, c.getRed(), c.getGreen(), c.getBlue());
 				}
-				led.show();
+				ntw.show();
 				count = 0;
 			}
 		}

+ 7 - 1
model/SongHandler.java

@@ -12,6 +12,7 @@ import audio.Song;
 import audio.SongInstance;
 import audio.io.DirScanner;
 import audio.sorting.SortALPHA;
+import data.io.SQLConnector;
 
 public class SongHandler {
 	
@@ -20,13 +21,16 @@ public class SongHandler {
 	private Song currentSong;
 	private SongInstance currentSongInstance;
 	private int currentIndex;
+	SQLConnector sql;
 	
 	private File dir;
 	
 	private AudioPlayer p;
 
-	public SongHandler()
+	public SongHandler(SQLConnector sql)
 	{
+		this.sql = sql;
+		
 		songs = new ArrayList<Song>();
 		
 		currentSong = null;
@@ -44,6 +48,8 @@ public class SongHandler {
 		
 		Collections.sort(songs, new SortALPHA());
 		
+		sql.update(songs);
+		
 		updatePlayer();
 	}
 	

+ 17 - 0
model/objects/Highscore.java

@@ -0,0 +1,17 @@
+package model.objects;
+
+import audio.SongInstance;
+
+public class Highscore {
+	public SongInstance si;
+	public String name;
+	public int score;
+	public long time;
+	
+	public Highscore(SongInstance si, String name, int score, long time) {
+		this.si = si;
+		this.name = name;
+		this.score = score;
+		this.time = time;
+	}
+}

BIN
mysql-connector-java-5.1.32-bin.jar


+ 1 - 3
view/GameView.java

@@ -20,13 +20,11 @@ public class GameView extends JPanel {
 	 */
 	private static final long serialVersionUID = 1939480784205689618L;
 
-	LedHandler led;
 	GameStateManager gsm;
 
 	// Font fpsfont = new Font("OCR A Extended", Font.BOLD, 60);
 
-	public GameView(LedHandler led, GameStateManager gsm) {
-		this.led = led;
+	public GameView(GameStateManager gsm) {
 		this.gsm = gsm;
 		this.setPreferredSize(new Dimension(1280, 1024));
 	}