añadido sistema de auto actualizacion a travez de scripts sql numerados los cuales son almacenados en un simple archivo zip para evitar editarlos por error por un usuario comun )yn (ya si alguien los edita no es mi problema)
This commit is contained in:
@@ -26,6 +26,7 @@ package danielcortes.xyz;
|
||||
|
||||
import danielcortes.xyz.controllers.BaseLayoutController;
|
||||
import danielcortes.xyz.data.Configuration;
|
||||
import danielcortes.xyz.data.DAOManager;
|
||||
import danielcortes.xyz.views.BaseLayout;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -35,9 +36,11 @@ import java.util.Locale;
|
||||
import java.util.logging.LogManager;
|
||||
|
||||
public class Main {
|
||||
private static final int DATABASE_VERSION = 2;
|
||||
static {
|
||||
setUpLogger();
|
||||
setUpSystemProperties();
|
||||
updateDatabase();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
@@ -45,14 +48,15 @@ public class Main {
|
||||
}
|
||||
|
||||
private static void run() {
|
||||
//MainSideBar view = new MainSideBar();
|
||||
//MainSideBarController mainController = new MainSideBarController(view);
|
||||
|
||||
BaseLayout view = new BaseLayout();
|
||||
BaseLayoutController controller = new BaseLayoutController(view);
|
||||
executeView(view.getContentPanel());
|
||||
}
|
||||
|
||||
private static void updateDatabase(){
|
||||
DAOManager.getVersionDAO().updateTo(DATABASE_VERSION);
|
||||
}
|
||||
|
||||
private static void executeView(JComponent view) {
|
||||
JFrame frame = new JFrame(Configuration.get("nombre_caja"));
|
||||
frame.setContentPane(view);
|
||||
|
||||
@@ -46,6 +46,8 @@ import danielcortes.xyz.models.tipo_egreso.SQLiteTipoEgresoDAO;
|
||||
import danielcortes.xyz.models.tipo_egreso.TipoEgresoDAO;
|
||||
import danielcortes.xyz.models.tipo_ingreso.SQLiteTipoIngresoDAO;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO;
|
||||
import danielcortes.xyz.models.version.SQLiteVersionDAO;
|
||||
import danielcortes.xyz.models.version.VersionDAO;
|
||||
|
||||
public class DAOManager {
|
||||
private static final CajaDAO cajaDAO;
|
||||
@@ -59,6 +61,7 @@ public class DAOManager {
|
||||
private static final TipoEgresoDAO tipoEgresoDAO;
|
||||
private static final TipoIngresoDAO tipoIngresoDAO;
|
||||
private static final EstadoResultadoDAO estadoResultadoDAO;
|
||||
private static final VersionDAO versionDAO;
|
||||
|
||||
static {
|
||||
cajaDAO = new SQLiteCajaDAO();
|
||||
@@ -72,6 +75,7 @@ public class DAOManager {
|
||||
tipoEgresoDAO = new SQLiteTipoEgresoDAO();
|
||||
tipoIngresoDAO = new SQLiteTipoIngresoDAO();
|
||||
estadoResultadoDAO = new SQLiteEstadoResultadoDAO();
|
||||
versionDAO = new SQLiteVersionDAO();
|
||||
}
|
||||
|
||||
public static CajaDAO getCajaDAO() {
|
||||
@@ -117,4 +121,8 @@ public class DAOManager {
|
||||
public static EstadoResultadoDAO getEstadoResultadoDAO() {
|
||||
return estadoResultadoDAO;
|
||||
}
|
||||
|
||||
public static VersionDAO getVersionDAO() {
|
||||
return versionDAO;
|
||||
}
|
||||
}
|
||||
|
||||
99
src/danielcortes/xyz/models/version/SQLiteVersionDAO.java
Normal file
99
src/danielcortes/xyz/models/version/SQLiteVersionDAO.java
Normal file
@@ -0,0 +1,99 @@
|
||||
package danielcortes.xyz.models.version;
|
||||
|
||||
import danielcortes.xyz.data.SQLiteConnectionHolder;
|
||||
|
||||
import java.io.*;
|
||||
import java.sql.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
public class SQLiteVersionDAO extends VersionDAO {
|
||||
private static final Logger LOGGER = Logger.getLogger(SQLiteVersionDAO.class.getName());
|
||||
|
||||
public SQLiteVersionDAO() {
|
||||
this.connectionHolder = new SQLiteConnectionHolder();
|
||||
}
|
||||
|
||||
private boolean tableVersionsExists() {
|
||||
try {
|
||||
DatabaseMetaData md = this.connectionHolder.getConnection().getMetaData();
|
||||
ResultSet rs = md.getTables(null, null, "version", null);
|
||||
boolean exists = rs.next();
|
||||
rs.close();
|
||||
|
||||
return exists;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private int getCurrentVersion() {
|
||||
if (tableVersionsExists()) {
|
||||
try (Connection conn = this.connectionHolder.getConnection()) {
|
||||
String query = "SELECT version FROM version LIMIT 1";
|
||||
PreparedStatement ps = conn.prepareStatement(query);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
|
||||
rs.next();
|
||||
int version = rs.getInt(1);
|
||||
|
||||
rs.close();
|
||||
ps.close();
|
||||
return version;
|
||||
} catch (SQLException e) {
|
||||
LOGGER.log(Level.SEVERE, e.toString(), e);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private InputStream getVersionScript(int version){
|
||||
try {
|
||||
ZipFile zipFile = new ZipFile(new File("data/version_scripts"));
|
||||
ZipEntry zipEntry = zipFile.getEntry(version + ".sql");
|
||||
return zipFile.getInputStream(zipEntry);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new InputStream() {
|
||||
@Override
|
||||
public int read(){
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void executeVersionScript(int version){
|
||||
try (Connection conn = this.connectionHolder.getConnection()) {
|
||||
Statement statement = conn.createStatement();
|
||||
InputStream inputStream = getVersionScript(version);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
statement.addBatch(line);
|
||||
}
|
||||
reader.close();
|
||||
|
||||
statement.executeBatch();
|
||||
statement.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
LOGGER.log(Level.SEVERE, e.toString(), e);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTo(int version) {
|
||||
int currentVersion = this.getCurrentVersion();
|
||||
while (currentVersion < version) {
|
||||
currentVersion++;
|
||||
executeVersionScript(currentVersion);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
8
src/danielcortes/xyz/models/version/VersionDAO.java
Normal file
8
src/danielcortes/xyz/models/version/VersionDAO.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package danielcortes.xyz.models.version;
|
||||
|
||||
import danielcortes.xyz.data.ConnectionHolder;
|
||||
|
||||
public abstract class VersionDAO {
|
||||
protected ConnectionHolder connectionHolder;
|
||||
public abstract void updateTo(int version);
|
||||
}
|
||||
Reference in New Issue
Block a user