diff --git a/CHANGELOG.txt b/CHANGELOG.txt index cd92b94b74c73c34496d21d9baa40058d80b19cc..4bea62191b4053c210949b9994bf7620aac3c742 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,14 +5,22 @@ SMARTTIME ========= >>> start-date: 09.01.15 ->>> status-date: 10.07.16 +>>> status-date: 27.05.17 ____________________________________________________ +v.5.1-0 - (30) +=============== + +-make resizeable +-save last used project and task and restore on startup +-bugfixes +>>> end-work: 27.05.17 + v.5.0.3 - (29) =============== -Fixed issue where user have to press enter button in projectWindow (otherwise dropDown values would have been null) ->>> end-work: 04.02.16 +>>> end-work: 10.07.16 v.5.0.2 - (28) =============== diff --git a/README.md b/README.md index 30b0874a0dd944b211574071aa4d375bffa4699f..c6798180f51849579185bb17cce739b552de75b5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # SmartTime - startdate: 09.01.15 -- current version: 5.0.3 (29) - 10.07.16 +- current version: 5.1.0 (30) - 27.05.17 ### Description diff --git a/build/Icon.ico b/build/Icon.ico index 0dcdf4925f3d61fcac6b83930a051e66f1533680..f019748afbd971143be45367935e34c188b44b6f 100644 Binary files a/build/Icon.ico and b/build/Icon.ico differ diff --git a/build/SmartTime.exe b/build/SmartTime.exe index 0b5936eea06e5abe0f4805936154ddc0cd44302a..2a9e160a3e51f345989dbf368892c27fc7e44f12 100644 Binary files a/build/SmartTime.exe and b/build/SmartTime.exe differ diff --git a/build/SmartTime.jar b/build/SmartTime.jar new file mode 100644 index 0000000000000000000000000000000000000000..949d1710d47486171bf10d92cd4aeeef85e3e67e Binary files /dev/null and b/build/SmartTime.jar differ diff --git a/build/SmartTime.xml b/build/SmartTime.xml index 023469c01ba75405d9729896e07a67f6a2e833bf..c89fe260e41ff577123c1d7b2031b89d433fb92c 100644 --- a/build/SmartTime.xml +++ b/build/SmartTime.xml @@ -2,8 +2,8 @@ <launch4jConfig> <dontWrapJar>false</dontWrapJar> <headerType>gui</headerType> - <jar>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime-v.5.0.3.jar</jar> - <outfile>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.exe</outfile> + <jar>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.jar</jar> + <outfile>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.exe</outfile> <errTitle></errTitle> <cmdLine></cmdLine> <chdir>.</chdir> @@ -13,7 +13,7 @@ <stayAlive>false</stayAlive> <restartOnCrash>false</restartOnCrash> <manifest></manifest> - <icon>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\Icon.ico</icon> + <icon>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\Icon.ico</icon> <classPath> <mainClass>userInterface.Main</mainClass> <cp>.</cp> diff --git a/build/icon.png b/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..45639952c2ec3c2b747ab89de90023d2af40bb76 Binary files /dev/null and b/build/icon.png differ diff --git a/build/icon_old.png b/build/icon_old.png new file mode 100644 index 0000000000000000000000000000000000000000..adda60842424d26b524d45e0e0b169cddb0855bc Binary files /dev/null and b/build/icon_old.png differ diff --git a/src/core/SQL.java b/src/core/SQL.java index eb0304a0bac16a33238ebce61e095d319e91389f..f42367342f15d502332361b232ff9411281619b4 100644 --- a/src/core/SQL.java +++ b/src/core/SQL.java @@ -2,6 +2,7 @@ package core; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; @@ -9,12 +10,12 @@ import java.util.HashSet; public class SQL { - private String path; + private String path; public SQL(String path) { this.path = path; - } + } public void createDB() throws Exception { @@ -31,7 +32,7 @@ public class SQL c.close(); } - + public void deleteDB() throws Exception { Connection c = null; @@ -45,27 +46,33 @@ public class SQL stmt.close(); c.close(); - } + } public void insert(LogObject log) throws Exception { - Connection c = null; - Statement stmt = null; + Connection c = null; Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("jdbc:sqlite:" + path); - - stmt = c.createStatement(); - String sql = "INSERT INTO SMARTTIME VALUES(" + log.getYear() + "," + log.getMonth() + "," + log.getDay() + "," + "'" + log.getStartTime() + "'," + "'" + log.getEndTime() + "'," - + log.getDuration() + "," + "'" + log.getProject() + "'," + "'" + log.getTask() + "')"; - stmt.executeUpdate(sql); + + String sql = "INSERT INTO SMARTTIME VALUES(?, ?, ?, ?, ?, ?, ?, ?)"; + PreparedStatement stmt = c.prepareStatement(sql); + stmt.setInt(1, log.getYear()); + stmt.setInt(2, log.getMonth()); + stmt.setInt(3, log.getDay()); + stmt.setString(4, log.getStartTime()); + stmt.setString(5, log.getEndTime()); + stmt.setLong(6, log.getDuration()); + stmt.setString(7, log.getProject()); + stmt.setString(8, log.getTask()); + + stmt.executeUpdate(); stmt.close(); - c.close(); } - + private ArrayList<LogObject> extractLogObjects(ResultSet rs) throws Exception { - ArrayList<LogObject> logObjects = new ArrayList<LogObject>(); + ArrayList<LogObject> logObjects = new ArrayList<LogObject>(); while(rs.next()) { int year = rs.getInt("YEAR"); @@ -82,11 +89,11 @@ public class SQL } return logObjects; } - + public ArrayList<LogObject> getLogObjects() throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("jdbc:sqlite:" + path); @@ -94,27 +101,27 @@ public class SQL stmt = c.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;"); - + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByProject(String projectName) throws Exception { Connection c = null; - Statement stmt = null; Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("jdbc:sqlite:" + path); - c.setAutoCommit(false); - - stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName +"'ORDER BY TASK, YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;"); + c.setAutoCommit(false); + + PreparedStatement stmt = c.prepareStatement("SELECT * FROM SMARTTIME WHERE PROJECT=? ORDER BY TASK, YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;"); + stmt.setString(1, projectName); + ResultSet rs = stmt.executeQuery(); ArrayList<LogObject> logObjects = extractLogObjects(rs); @@ -124,205 +131,206 @@ public class SQL return logObjects; } - + public ArrayList<LogObject> getByProjectAndTask(String projectName, String taskName) throws Exception { Connection c = null; - Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); - stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;"); - + PreparedStatement stmt = c.prepareStatement("SELECT * FROM SMARTTIME WHERE PROJECT=? AND TASK=? ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;"); + stmt.setString(1, projectName); + stmt.setString(2, taskName); + ResultSet rs = stmt.executeQuery(); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByProjectAndTaskAndYear(String projectName, String taskName, int year) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' AND YEAR='"+ year +"'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByProjectAndTaskAndYearAndMonth(String projectName, String taskName, int year, int month) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' AND YEAR='"+ year +"' AND MONTH='"+ month +"'ORDER BY DAY DESC, STARTTIME DESC;"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByProjectAndYear(String projectName, int year) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND YEAR='"+ year +"'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByProjectAndYearAndMonth(String projectName, int year, int month) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND YEAR='"+ year +"' AND MONTH='"+ month +"'ORDER BY DAY DESC, STARTTIME DESC;"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByYear(int year) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='"+ year +"' ORDER BY PROJECT, TASK"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' ORDER BY PROJECT, TASK"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<LogObject> getByYearAndMonth(int year, int month) throws Exception { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='"+ year + "' AND MONTH='"+ month +"'ORDER BY PROJECT, TASK;"); - + ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY PROJECT, TASK;"); + ArrayList<LogObject> logObjects = extractLogObjects(rs); - + rs.close(); stmt.close(); c.close(); return logObjects; } - + public ArrayList<String> getProjectNames() throws Exception - { + { Connection c = null; - Statement stmt = null; + Statement stmt = null; Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:"+path); + c = DriverManager.getConnection("jdbc:sqlite:" + path); c.setAutoCommit(false); stmt = c.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME ORDER BY PROJECT;"); - - ArrayList<LogObject> objects= extractLogObjects(rs); - + + ArrayList<LogObject> objects = extractLogObjects(rs); + rs.close(); stmt.close(); - c.close(); - + c.close(); + HashSet<String> names = new HashSet<String>(); for(LogObject current : objects) { names.add(current.getProject()); } - + return new ArrayList<String>(names); } - + public ArrayList<String> getTaskNamesByProject(String projectName) throws Exception - { + { ArrayList<LogObject> objects = getByProject(projectName); HashSet<String> names = new HashSet<String>(); for(LogObject current : objects) { names.add(current.getTask()); } - + return new ArrayList<String>(names); } - + public ArrayList<String> getYears() throws Exception - { + { ArrayList<LogObject> objects = getLogObjects(); HashSet<String> names = new HashSet<String>(); for(LogObject current : objects) { names.add(String.valueOf(current.getYear())); } - + return new ArrayList<String>(names); } - + public void update(LogObject oldLog, LogObject newLog) throws Exception { Connection c = null; @@ -331,21 +339,14 @@ public class SQL c = DriverManager.getConnection("jdbc:sqlite:" + path); stmt = c.createStatement(); - String sql = "UPDATE SMARTTIME SET PROJECT='" + newLog.getProject() + "' , TASK='" + newLog.getTask() + "' " - + "WHERE YEAR='" + oldLog.getYear() - + "' AND MONTH='" + oldLog.getMonth() - + "' AND DAY='" + oldLog.getDay() - + "' AND STARTTIME='" + oldLog.getStartTime() - + "' AND ENDTIME='" + oldLog.getEndTime() - + "' AND DURATION='" + oldLog.getDuration() - + "' AND PROJECT='" + oldLog.getProject() - + "' AND TASK='" + oldLog.getTask() + "';"; + String sql = "UPDATE SMARTTIME SET PROJECT='" + newLog.getProject() + "' , TASK='" + newLog.getTask() + "' " + "WHERE YEAR='" + oldLog.getYear() + "' AND MONTH='" + oldLog.getMonth() + "' AND DAY='" + oldLog.getDay() + "' AND STARTTIME='" + oldLog.getStartTime() + "' AND ENDTIME='" + + oldLog.getEndTime() + "' AND DURATION='" + oldLog.getDuration() + "' AND PROJECT='" + oldLog.getProject() + "' AND TASK='" + oldLog.getTask() + "';"; stmt.executeUpdate(sql); stmt.close(); c.close(); } - + public void delete(LogObject log) throws Exception { Connection c = null; @@ -354,15 +355,8 @@ public class SQL c = DriverManager.getConnection("jdbc:sqlite:" + path); stmt = c.createStatement(); - String sql = "DELETE FROM SMARTTIME " - + "WHERE YEAR='" + log.getYear() - + "' AND MONTH='" + log.getMonth() - + "' AND DAY='" + log.getDay() - + "' AND STARTTIME='" + log.getStartTime() - + "' AND ENDTIME='" + log.getEndTime() - + "' AND DURATION='" + log.getDuration() - + "' AND PROJECT='" + log.getProject() - + "' AND TASK='" + log.getTask() + "';"; + String sql = "DELETE FROM SMARTTIME " + "WHERE YEAR='" + log.getYear() + "' AND MONTH='" + log.getMonth() + "' AND DAY='" + log.getDay() + "' AND STARTTIME='" + log.getStartTime() + "' AND ENDTIME='" + log.getEndTime() + "' AND DURATION='" + log.getDuration() + "' AND PROJECT='" + + log.getProject() + "' AND TASK='" + log.getTask() + "';"; stmt.executeUpdate(sql); stmt.close(); diff --git a/src/userInterface/UserInterfaceController.java b/src/userInterface/UserInterfaceController.java index ae1a027dcc5f416ed80cb67f5bda832d7deb6384..4a13eafe15d05b8b008d03db80b2915134242ddd 100644 --- a/src/userInterface/UserInterfaceController.java +++ b/src/userInterface/UserInterfaceController.java @@ -821,6 +821,8 @@ public class UserInterfaceController public void about() { - AlertGenerator.showAboutAlert(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", icon, stage, null, false); + ArrayList<String> creditLines = new ArrayList<>(); + creditLines.add(bundle.getString("credits")); + AlertGenerator.showAboutAlertWithCredits(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", creditLines, icon, stage, null, false); } } \ No newline at end of file diff --git a/src/userInterface/_de.properties b/src/userInterface/_de.properties index f9bf1ec8d8b36e621257eeec65ee4da8b40a0b39..038537ad5224ca84f66af2971887373661b6f1ad 100644 --- a/src/userInterface/_de.properties +++ b/src/userInterface/_de.properties @@ -1,6 +1,7 @@ app.name=SmartTime -version.code=29 -version.name=5.0.3 -version.date=10.07.16 +version.code=30 +version.name=5.1.0 +version.date=27.05.17 -folder=Deadlocker/SmartTime \ No newline at end of file +folder=Deadlocker/SmartTime +credits=Icon made by Vectors Market from www.flaticon.com (licensed by CC 3.0 BY) \ No newline at end of file diff --git a/src/userInterface/icon.png b/src/userInterface/icon.png index adda60842424d26b524d45e0e0b169cddb0855bc..45639952c2ec3c2b747ab89de90023d2af40bb76 100644 Binary files a/src/userInterface/icon.png and b/src/userInterface/icon.png differ