package com.qksnap.www.snap.settings;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import javax.imageio.ImageIO;
import com.qksnap.www.snap.gui.MainFrame;
import com.qksnap.www.snap.gui.SplashScreen;
import com.qksnap.www.snap.gui.tabpane.data.ImageLink;
/** This class will store our sqlite database values and initalize us **/
public class UserSettings {
private String snapHK = "";
private String selHK = "";
private String selsnapHK = "";
private Connection con;
public UserSettings() {
setup();
SplashScreen.getSingleton().drawText(50, "Loading User settings - 50%");
loadHotKeys();
SplashScreen.getSingleton().drawText(100, "Loading User settings - 100%");
}
public void loadHotKeys() {
try {
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:sqlite:settings.db");
Statement stat = con.createStatement();
ResultSet res = stat.executeQuery("select * from hotkeys");
while (res.next()) {
snapHK = res.getString("ss");
selsnapHK = res.getString("cs");
selHK = res.getString("selss");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setup() {
File file = new File("settings.db");
if (file.exists()) {
// if(file.delete());
return;
} else {
try {
Class.forName("org.sqlite.JDBC");
// database path, if it's new database,
// it will be created in the project folder
con = DriverManager.getConnection("jdbc:sqlite:settings.db");
Statement stat = con.createStatement();
stat.executeUpdate("create table links(id INT,"
+ "link varchar(255)," + "date varchar(30), size varchar(30), name varchar(30),imgloc varchar(30),"
+ "primary key (id));");
stat.executeUpdate("create table hotkeys(id INT,"
+ "ss varchar(30)," + "cs varchar(30),"
+ "selss varchar(30)," + "primary key (id));");
//stat.executeUpdate("create table settings(id INT, value INT, primary key(id));");
stat.executeUpdate("create table imagesaved(id INT, img blob, date varchar(30), primary key(id));");
PreparedStatement prep = con
.prepareStatement("insert into hotkeys values(?,?,?,?);");
// default hot keys
prep.setString(3, "ctrl shift 1");
prep.setString(2, "ctrl shift 3");
prep.setString(4, "ctrl shift 2");
prep.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String getSnapHK() {
return snapHK;
}
public String getSelHK() {
return selHK;
}
public String getSelsnapHK() {
return selsnapHK;
}
public void insertLink(String link, String time, String size,String name,String imgloc) {
try {
PreparedStatement prep = con
.prepareStatement("insert into links values(?,?,?,?,?,?);");
// default hot keys
prep.setString(2, link);
prep.setString(3, time);
prep.setString(4, size);
prep.setString(5, name);
prep.setString(6, imgloc);
prep.execute();
SplashScreen.getSingleton().getMainFrame().getLinks().addScreenshot();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ArrayList<ImageLink> getLinks() {
ArrayList<ImageLink> links = new ArrayList<ImageLink>();
try {
con = DriverManager.getConnection("jdbc:sqlite:settings.db");
Statement stat = con.createStatement();
ResultSet res = stat.executeQuery("select * from links");
while (res.next()) {
links.add(new ImageLink(res.getString("link"), res
.getString("date"), res.getString("size"),res.getString("name"),res.getString("imgloc")));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return links;
}
public void update(String selHKK, String snapHKK, String selsnapHKK,int i) {
try {
Statement stat = con.createStatement();
stat.executeUpdate("update hotkeys set ss='" + snapHKK + "';");
stat.executeUpdate("update hotkeys set selss='" + selHKK + "';");
stat.executeUpdate("update hotkeys set cs='" + selsnapHKK + "';");
ResultSet res = stat.executeQuery("select * from hotkeys");
while (res.next()) {
this.snapHK = res.getString("ss");
this.selsnapHK = res.getString("cs");
this.selHK = res.getString("selss");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void delLink(String link) {
try {
Statement stat = con.createStatement();
stat.executeUpdate("delete from links where link='"+link+"'");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean autoStartEnabled() {
try {
Statement stat = con.createStatement();
ResultSet res = stat.executeQuery("select * from settings");
while (res.next()) {
if(res.getInt("value") == 1){
res.close();
return true;
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}