diff --git a/usermanagement171/bin/messages.properties b/usermanagement171/bin/messages.properties
new file mode 100644
index 0000000..002ffa6
--- /dev/null
+++ b/usermanagement171/bin/messages.properties
@@ -0,0 +1,17 @@
+AddPanel.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
+AddPanel.date_of_birth=\u0414\u0430\u0442\u0430 \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u044F
+AddPanel.first_name=\u0418\u043C\u044F
+AddPanel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
+AddPanel.ok=Ok
+BrowsePanel.add=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C
+BrowsePanel.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
+BrowsePanel.details=\u0414\u0435\u0442\u0430\u043B\u0438
+BrowsePanel.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
+MainFrame.user_management=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C\u0438
+DetailsPanel.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
+DetailsPanel.first_name=\u0418\u043C\u044F
+DetailsPanel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
+DetailsPanel.date_of_birth=\u0414\u0430\u0442\u0430 \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u044F
+UserTableModel.id=ID
+UserTableModel.first_name=\u0418\u043C\u044F
+UserTableModel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
\ No newline at end of file
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/User.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/User.class
index 1b46bf7..0290f1c 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/User.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/User.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.class
index 801f460..d6f09d5 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactory.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactory.class
index 62bc8b3..4c69b69 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactory.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactory.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.class
index cafe4e2..4b087a3 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.class
index 1323b87..b085da9 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DatabaseException.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DatabaseException.class
index 27e9c9f..3499819 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DatabaseException.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/DatabaseException.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.class
index 56816e5..e242c4e 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockDaoFactory.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockDaoFactory.class
new file mode 100644
index 0000000..3ff20e0
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockDaoFactory.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockUserDao.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockUserDao.class
new file mode 100644
index 0000000..1a90e9e
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/MockUserDao.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/UserDao.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/UserDao.class
index e25937b..3f9904e 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/UserDao.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/db/UserDao.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/AddPanel.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/AddPanel.class
new file mode 100644
index 0000000..47782d4
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/AddPanel.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/BrowsePanel.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/BrowsePanel.class
index 121728d..3f0ea08 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/BrowsePanel.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/BrowsePanel.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/DetailsPanel.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/DetailsPanel.class
new file mode 100644
index 0000000..76779a1
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/DetailsPanel.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/EditPanel.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/EditPanel.class
new file mode 100644
index 0000000..d4c71d6
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/EditPanel.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrame.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrame.class
index ed311c2..605a0b8 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrame.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrame.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrameTest.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrameTest.class
index 6cbaea0..aed0c68 100644
Binary files a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrameTest.class and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/MainFrameTest.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/UserTableModel.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/UserTableModel.class
new file mode 100644
index 0000000..216f26d
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/gui/UserTableModel.class differ
diff --git a/usermanagement171/bin/ua/nure/kravets/usermanagement171/util/Messages.class b/usermanagement171/bin/ua/nure/kravets/usermanagement171/util/Messages.class
new file mode 100644
index 0000000..11b088e
Binary files /dev/null and b/usermanagement171/bin/ua/nure/kravets/usermanagement171/util/Messages.class differ
diff --git a/usermanagement171/bin/usersDataSet.xml b/usermanagement171/bin/usersDataSet.xml
index c796f32..518ae0b 100644
--- a/usermanagement171/bin/usersDataSet.xml
+++ b/usermanagement171/bin/usersDataSet.xml
@@ -3,7 +3,13 @@
id
FirstName
LastName
- DateOfBirth
+ DateOfBirth
+
+ 3
+ TestFind
+ User
+ 2019-05-11
+
1000
Bill
diff --git a/usermanagement171/db/usermanagement171.lck b/usermanagement171/db/usermanagement171.lck
new file mode 100644
index 0000000..02911f1
Binary files /dev/null and b/usermanagement171/db/usermanagement171.lck differ
diff --git a/usermanagement171/db/usermanagement171.properties b/usermanagement171/db/usermanagement171.properties
new file mode 100644
index 0000000..a0faa51
--- /dev/null
+++ b/usermanagement171/db/usermanagement171.properties
@@ -0,0 +1,17 @@
+#HSQL Database Engine
+#Mon Dec 16 03:42:51 EET 2019
+hsqldb.script_format=0
+runtime.gc_interval=0
+sql.enforce_strict_size=false
+hsqldb.cache_size_scale=8
+readonly=false
+hsqldb.nio_data_file=true
+hsqldb.cache_scale=14
+version=1.8.0
+hsqldb.default_table_type=memory
+hsqldb.cache_file_scale=1
+hsqldb.log_size=200
+modified=yes
+hsqldb.cache_version=1.7.0
+hsqldb.original_version=1.8.0
+hsqldb.compatible_version=1.8.0
diff --git a/usermanagement171/db/usermanagement171.script b/usermanagement171/db/usermanagement171.script
new file mode 100644
index 0000000..7f0596d
--- /dev/null
+++ b/usermanagement171/db/usermanagement171.script
@@ -0,0 +1,4 @@
+CREATE SCHEMA PUBLIC AUTHORIZATION DBA
+CREATE USER SA PASSWORD ""
+GRANT DBA TO SA
+SET WRITE_DELAY 20
diff --git a/usermanagement171/db/usermanegement171.lck b/usermanagement171/db/usermanegement171.lck
index 8b34a50..981849d 100644
Binary files a/usermanagement171/db/usermanegement171.lck and b/usermanagement171/db/usermanegement171.lck differ
diff --git a/usermanagement171/db/usermanegement171.properties b/usermanagement171/db/usermanegement171.properties
index a39091e..efac320 100644
--- a/usermanagement171/db/usermanegement171.properties
+++ b/usermanagement171/db/usermanegement171.properties
@@ -1,5 +1,5 @@
#HSQL Database Engine
-#Tue Dec 10 14:39:34 EET 2019
+#Mon Dec 16 13:53:20 EET 2019
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=false
diff --git a/usermanagement171/src/main/java/messages.properties b/usermanagement171/src/main/java/messages.properties
new file mode 100644
index 0000000..4245dbc
--- /dev/null
+++ b/usermanagement171/src/main/java/messages.properties
@@ -0,0 +1,10 @@
+AddPanel.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
+AddPanel.date_of_birth=\u0414\u0430\u0442\u0430 \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u044F
+AddPanel.first_name=\u0418\u043C\u044F
+AddPanel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
+AddPanel.ok=Ok
+BrowsePanel.add=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C
+BrowsePanel.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
+BrowsePanel.details=\u0414\u0435\u0442\u0430\u043B\u0438
+BrowsePanel.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
+MainFrame.user_management=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C\u0438
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/User.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/User.java
index 0b83e9f..be58ae9 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/User.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/User.java
@@ -1,12 +1,18 @@
package ua.nure.kravets.usermanagement171;
+import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
-public class User {
-private Long id;
-private String firstName;
-private String lastName;
-private Date dateOfBirth;
+import java.util.Objects;
+
+
+
+public class User implements Serializable {
+ private static final long serialVersionUID = -3760492779402022862L;
+ private Long id;
+ private String firstName;
+ private String lastName;
+ private Date dateOfBirth;
public User() {
}
@@ -17,6 +23,12 @@ public User(Long id, String firstName, String lastName, Date dateOfBirth) {
this.lastName = lastName;
this.dateOfBirth = dateOfBirth;
}
+public User(String firstName, String lastName, Date date) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.dateOfBirth = date;
+
+}
public Long getId() {
return id;
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactory.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactory.java
index d054aba..b4721d0 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactory.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactory.java
@@ -3,7 +3,5 @@
import java.sql.Connection;
public interface ConnectionFactory {
-
Connection createConnection() throws DatabaseException;
-
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.java
index cfc761c..5e85789 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/ConnectionFactoryImpl.java
@@ -6,7 +6,6 @@
import java.util.Properties;
public class ConnectionFactoryImpl implements ConnectionFactory {
-
private String driver;
private String url;
private String user;
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactory.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactory.java
index 4e4d161..4f25770 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactory.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactory.java
@@ -3,45 +3,52 @@
import java.io.IOException;
import java.util.Properties;
+import ua.nure.kravets.usermanagement171.User;
+
public abstract class DaoFactory {
protected static final String USER_DAO = "dao.knure.ctde.usermanagement171.db.UserDao";
private static final String DAO_FACTORY ="dao.factory";
- protected static Properties properties;
+protected static Properties properties;
+
private static DaoFactory instance;
- static {
+ static {
properties = new Properties();
- try {
- properties.load(DaoFactory.class.getClassLoader().getResourceAsStream("settings.properties"));
- } catch (IOException e) {
- throw new RuntimeException();
+ try {
+ properties.load(DaoFactory.class.getClassLoader()
+ .getResourceAsStream("settings.properties"));
+ } catch (IOException e) {
+ throw new RuntimeException("incorrect or missing settings");
+ }
}
-}
+
+
+ protected DaoFactory() {
+
+ }
+
public static synchronized DaoFactory getInstance() {
if (instance == null) {
- Class factoryClass;
- try {
- factoryClass = Class.forName(properties.getProperty(DAO_FACTORY));
- instance = (DaoFactory) factoryClass.newInstance();
- } catch (Exception e) {
- throw new RuntimeException(e);
+ Class> factoryClass;
+ try {
+ factoryClass = Class.forName(properties.getProperty(DAO_FACTORY));
+ instance = (DaoFactory) factoryClass.newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException();
+ }
}
- }
return instance;
}
- protected DaoFactory() {
-
-
+ public static void init (Properties p) {
+ properties = p;
+ instance = null;
}
- protected ConnectionFactory getConnectionFactory(){
+
+ protected ConnectionFactory getConnectionFactory() {
return new ConnectionFactoryImpl(properties);
}
- public abstract UserDao getUserDao();
-
-public static void init (Properties prop) {
- properties = prop;
- instance = null;
-}
+
+ public abstract UserDao getUserDao();
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.java
index 21bfe13..4b3980b 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DaoFactoryImpl.java
@@ -1,20 +1,19 @@
package ua.nure.kravets.usermanagement171.db;
+import ua.nure.kravets.usermanagement171.User;
+
public class DaoFactoryImpl extends DaoFactory {
- @Override
- public UserDao getUserDao() {
- {
- UserDao result = null;
+ public UserDao getUserDao() {
+ UserDao result;
try {
- Class clazz = Class.forName(properties.getProperty(USER_DAO));
- result = (UserDao) clazz.newInstance();
+ Class> clazz = Class.forName(properties.getProperty(USER_DAO));
+ result = (UserDao) clazz.newInstance();
result.setConnectionFactory(getConnectionFactory());
} catch (Exception e) {
- throw new RuntimeException (e);
- }
+ throw new RuntimeException(e);
+ }
return result;
}
- }
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DatabaseException.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DatabaseException.java
index ae11db8..446fddf 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DatabaseException.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/DatabaseException.java
@@ -1,29 +1,17 @@
package ua.nure.kravets.usermanagement171.db;
-public class DatabaseException extends Exception {
-
- public DatabaseException() {
- // TODO Auto-generated constructor stub
- }
+import java.sql.SQLException;
- public DatabaseException(String arg0) {
- super(arg0);
- // TODO Auto-generated constructor stub
- }
+public class DatabaseException extends Exception {
- public DatabaseException(Throwable arg0) {
- super(arg0);
- // TODO Auto-generated constructor stub
- }
+ private static final long serialVersionUID = 1L;
- public DatabaseException(String arg0, Throwable arg1) {
- super(arg0, arg1);
- // TODO Auto-generated constructor stub
+ public DatabaseException(SQLException e) {
+ super(e);
}
- public DatabaseException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
- super(arg0, arg1, arg2, arg3);
- // TODO Auto-generated constructor stub
+ public DatabaseException(String string) {
+ super(string);
}
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.java
index cf638b1..9dfa652 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/HsqldbUserDao.java
@@ -12,109 +12,104 @@
import ua.nure.kravets.usermanagement171.User;
-public class HsqldbUserDao implements UserDao {
+public class HsqldbUserDao implements UserDao {
+ private static final String UPDATE_QUERY = "UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ? WHERE id = ?";
+ private static final String DELETE_QUERY = "DELETE FROM users WHERE id = ?";
private static final String FIND_QUERY = "SELECT * FROM users WHERE id = ?";
- private static final String DELETE_QUERY = "DELETE FROM USERS WHERE id = ?";
- private static final String UPDATE_QUERY = "UPDATE USERS SET firstname = ?, lastname = ?, dateofbirth = ? WHERE id = ?";
- private static final String SELECT_ALL_QUERY = "SELECT id, FirstName, LastName, DateOfBirth FROM users";
- private static final String INSERT_QUERY = "INSERT INTO users (firstname, lastname, dateofbirth) VALUES (?, ?, ?)";
- private ConnectionFactory connectionFactory;
-
- public HsqldbUserDao () {
- }
-
- public HsqldbUserDao (ConnectionFactory connectionFactory) {
- this.connectionFactory = connectionFactory;
- }
-
+ private static final String SELECT_QUERY = "SELECT * FROM users";
+ private static final String CALL_IDENTITY = "call IDENTITY()";
+ private static final String INSERT_QUERY = "INSERT INTO users (firstname, lastname, dateofbirth) VALUES(?, ? ,?);";
+ ConnectionFactory connectionFactory;
public ConnectionFactory getConnectionFactory() {
- return connectionFactory;
- }
-
-
-
+ return connectionFactory;
+ }
+
public void setConnectionFactory(ConnectionFactory connectionFactory) {
+ this.connectionFactory = connectionFactory;
+ }
+
+ public HsqldbUserDao(ConnectionFactory connectionFactory) {
this.connectionFactory = connectionFactory;
}
-
-
@Override
- public User create(User user) throws DatabaseException {
+ public User create(User entity) throws DatabaseException {
+ Connection connection = connectionFactory.createConnection();
try {
- Connection connection = connectionFactory.createConnection();
- PreparedStatement statement = connection.prepareStatement(INSERT_QUERY);
- statement.setString(1, user.getFirstName());
- statement.setString(2, user.getLastName());
- statement.setDate(3, new Date(user.getDateOfBirth().getTime()));
- int n = statement.executeUpdate();
- if (n!=1) {
- throw new DatabaseException("Number of the inserted rows: " + n);
+
+ PreparedStatement preparedStatement =
+ connection.prepareStatement(INSERT_QUERY);
+ preparedStatement.setString(1, entity.getFirstName());
+ preparedStatement.setString(2, entity.getLastName());
+ preparedStatement.setDate(3, new Date(entity.getDateOfBirth().getTime()));
+ int numberOfRows = preparedStatement.executeUpdate();
+ if(numberOfRows != 1) {
+ throw new DatabaseException("Number of inserted rows is wrong: " +numberOfRows);
}
- CallableStatement callableStatement = connection.prepareCall("call IDENTITY()");
+ CallableStatement callableStatement =
+ connection.prepareCall(CALL_IDENTITY);
ResultSet keys = callableStatement.executeQuery();
- if (keys.next()) {
- user.setId(new Long(keys.getLong(1)));
+ if(keys.next()) {
+ entity.setId(keys.getLong(1));
}
keys.close();
callableStatement.close();
- statement.close();
+ preparedStatement.close();
connection.close();
- return user;
- }
- catch (DatabaseException e) {
- throw e;
- }
- catch (SQLException e) {
+ return entity;
+
+ } catch (SQLException e) {
throw new DatabaseException(e);
}
-
}
@Override
- public void update(User user) throws DatabaseException {
- try {
- Connection connection = connectionFactory.createConnection();
- PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_QUERY);
- preparedStatement.setString(1, user.getFirstName());
- preparedStatement.setString(2, user.getLastName());
- preparedStatement.setDate(3, new Date(user.getDateOfBirth().getTime()));
- preparedStatement.setLong(4, user.getId());
-
- int insertedRows = preparedStatement.executeUpdate();
-
- if (insertedRows != 1) {
- throw new DatabaseException("Number of inserted rows: " + insertedRows);
- }
-
- connection.close();
- preparedStatement.close();
- } catch (DatabaseException e) {
- throw new DatabaseException(e.toString());
- }catch (SQLException e) {
- throw new DatabaseException(e.toString());
- }
-
-
+ public void update(User entity) throws DatabaseException {
+ try {
+ Connection connection = connectionFactory.createConnection();
+ PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_QUERY);
+ preparedStatement.setString(1, entity.getFirstName());
+ preparedStatement.setString(2, entity.getLastName());
+ preparedStatement.setDate(3, new Date(entity.getDateOfBirth()
+ .getTime()));
+ preparedStatement.setLong(4, entity.getId());
+
+ int changedRows = preparedStatement.executeUpdate();
+
+ if (changedRows != 1) {
+ throw new DatabaseException("Number of inserted rows: " + changedRows);
+ }
+
+ connection.close();
+ preparedStatement.close();
+ } catch (SQLException e) {
+ throw new DatabaseException(e);
+ }//Testing merge git
+
}
@Override
- public void delete(User user) throws DatabaseException {
+ public void delete(User entity) throws DatabaseException {
Connection connection = connectionFactory.createConnection();
try {
- PreparedStatement preparedStatement = connection.prepareStatement(DELETE_QUERY);
- preparedStatement.setLong(1,user.getId());
+ PreparedStatement statement = connection.prepareStatement(DELETE_QUERY);
+ statement.setLong(1, entity.getId());
+ int removedRows = statement.executeUpdate();
+
+ if (removedRows != 1) {
+ throw new DatabaseException("Number of removed rows: " + removedRows);
+ }
- preparedStatement.close();
+ statement.close();
connection.close();
}
- catch (SQLException e){
+ catch (SQLException e) {
throw new DatabaseException(e);
}
+
}
-
@Override
public User find(Long id) throws DatabaseException {
@@ -138,31 +133,31 @@ public User find(Long id) throws DatabaseException {
throw new DatabaseException(e);
}
return user;
-
}
@Override
- public Collection findAll() throws DatabaseException {
- Collection result = new LinkedList();
+ public Collection findAll() throws DatabaseException {
+ Collection result = new LinkedList();
+ Connection connection = connectionFactory.createConnection();
+ Statement statement;
try {
- Connection connection = connectionFactory.createConnection();
- Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery(SELECT_ALL_QUERY);
- while (resultSet.next()) {
- User user = new User ();
- user.setId(new Long(resultSet.getLong(1)));
+
+ statement = connection.createStatement();
+ ResultSet resultSet = statement.executeQuery(SELECT_QUERY);
+
+ while(resultSet.next()) {
+ User user = new User();
+ user.setId(resultSet.getLong(1));
user.setFirstName(resultSet.getString(2));
user.setLastName(resultSet.getString(3));
user.setDateOfBirth(resultSet.getDate(4));
result.add(user);
}
- } catch (DatabaseException e) {
- throw e;
- }
- catch (SQLException e) {
+ } catch (SQLException e) {
throw new DatabaseException(e);
}
+
return result;
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/UserDao.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/UserDao.java
index 0a8ffc9..77befb5 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/UserDao.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/db/UserDao.java
@@ -2,18 +2,22 @@
import java.util.Collection;
-import ua.nure.kravets.usermanagement171.User;
-public interface UserDao {
-User create (User user) throws DatabaseException;
-void update (User user) throws DatabaseException;
-void delete (User user) throws DatabaseException;
+public interface UserDao{
+ T create(T entity) throws DatabaseException;
+
+ void update(T entity) throws DatabaseException;
+
+ void delete(T entity) throws DatabaseException;
+
+ T find(Long id) throws DatabaseException;
+
+ Collection findAll() throws DatabaseException;
-User find (Long id) throws DatabaseException;
-
-Collection findAll() throws DatabaseException;
-
-void setConnectionFactory(ConnectionFactory connectionFactory);
+ public void setConnectionFactory(ConnectionFactory connectionFactory);
+
+
}
+
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/AddPanel.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/AddPanel.java
new file mode 100644
index 0000000..816fced
--- /dev/null
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/AddPanel.java
@@ -0,0 +1,162 @@
+package ua.nure.kravets.usermanagement171.gui;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.DateFormat;
+import java.text.ParseException;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import ua.nure.kravets.usermanagement171.User;
+import ua.nure.kravets.usermanagement171.db.DatabaseException;
+import ua.nure.kravets.usermanagement171.util.Messages;
+
+public class AddPanel extends JPanel implements ActionListener {
+
+ private MainFrame parent;
+ private JPanel buttonPanel;
+ private JPanel fieldPanel;
+ private JButton cancelButton;
+ private JButton okButton;
+ private JTextField dateOfBirthField;
+ private JTextField lastNameField;
+ private JTextField firstNameField;
+ private Color bgColor;
+
+ public AddPanel (MainFrame parent) {
+ this.parent = parent;
+ initialize();
+
+ }
+
+ private void initialize() {
+ this.setName("addPanel"); //$NON-NLS-1$
+ this.setLayout (new BorderLayout());
+ this.add(getFieldPanel(), BorderLayout.NORTH);
+ this.add(getButtonPanel(), BorderLayout.SOUTH);
+
+
+ }
+
+ private JPanel getButtonPanel() {
+ if (buttonPanel == null) {
+ buttonPanel = new JPanel();
+ buttonPanel.add(getOkButton(), null);
+ buttonPanel.add(getCancelButton(), null);
+ }
+ return buttonPanel;
+
+ }
+
+ private JButton getCancelButton() {
+ if (cancelButton == null) {
+ cancelButton = new JButton();
+ cancelButton.setText(Messages.getString("AddPanel.cancel")); //$NON-NLS-1$
+ cancelButton.setName("cancelButton"); //$NON-NLS-1$
+ cancelButton.setActionCommand("cancel"); //$NON-NLS-1$
+ cancelButton.addActionListener(this);
+ }
+ return cancelButton;
+ }
+
+ private JButton getOkButton() {
+ if (okButton == null) {
+ okButton = new JButton();
+ okButton.setText(Messages.getString("AddPanel.ok")); //$NON-NLS-1$
+ okButton.setName("okButton"); //$NON-NLS-1$
+ okButton.setActionCommand("ok"); //$NON-NLS-1$
+ okButton.addActionListener(this);
+
+ }
+ return okButton;
+ }
+
+ private JPanel getFieldPanel() {
+ if (fieldPanel == null) {
+ fieldPanel = new JPanel();
+ fieldPanel.setLayout (new GridLayout (3, 2));
+ addLabeledField (fieldPanel, Messages.getString("AddPanel.first_name"), getFirstNameField()); //$NON-NLS-1$
+ addLabeledField (fieldPanel, Messages.getString("AddPanel.last_name"), getLastNameField()); //$NON-NLS-1$
+ addLabeledField (fieldPanel, Messages.getString("AddPanel.date_of_birth"), getDateOfBirthField()); //$NON-NLS-1$
+
+ }
+ return fieldPanel;
+ }
+
+ private JTextField getDateOfBirthField() {
+ if (dateOfBirthField == null) {
+ dateOfBirthField = new JTextField();
+ dateOfBirthField.setName("dateOfBirthField"); //$NON-NLS-1$
+ }
+ return dateOfBirthField;
+ }
+
+ private JTextField getLastNameField() {
+ if (lastNameField == null) {
+ lastNameField = new JTextField();
+ lastNameField.setName("lastNameField"); //$NON-NLS-1$
+ }
+ return lastNameField;
+ }
+
+ private void addLabeledField(JPanel panel, String labelText, JTextField textField) {
+ JLabel label = new JLabel (labelText);
+ label.setLabelFor(textField);
+ panel.add(label);
+ panel.add(textField);
+
+ }
+
+ private JTextField getFirstNameField() {
+ if (firstNameField == null) {
+ firstNameField = new JTextField();
+ firstNameField.setName("firstNameField"); //$NON-NLS-1$
+ }
+ return firstNameField;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if ("ok".equalsIgnoreCase(e.getActionCommand())) {
+ User user = new User();
+ user.setFirstName(getFirstNameField().getText());
+ user.setLastName(getLastNameField().getText());
+ DateFormat format = DateFormat.getDateInstance();
+ try {
+ user.setDateOfBirth(format.parse (getDateOfBirthField().getText()));
+ } catch (ParseException e1) {
+ getDateOfBirthField().setBackground(Color.RED);
+ return ;
+ }
+ try {
+ parent.getDao().create(user);
+ } catch (DatabaseException e1) {
+ JOptionPane.showMessageDialog(this, e1.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ clearFields();
+ this.setVisible(false);
+ parent.showBrowsePanel();
+ }
+
+ private void clearFields() {
+ getFirstNameField().setText("");
+ getFirstNameField().setBackground(bgColor);
+
+ getLastNameField().setText("");
+ getLastNameField().setBackground(bgColor);
+
+ getDateOfBirthField().setText("");
+ getDateOfBirthField().setBackground(bgColor);
+
+ }
+
+}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/BrowsePanel.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/BrowsePanel.java
index ab60330..669ca3a 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/BrowsePanel.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/BrowsePanel.java
@@ -3,12 +3,17 @@
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.ArrayList;
import javax.swing.JButton;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import ua.nure.kravets.usermanagement171.db.DatabaseException;
+import ua.nure.kravets.usermanagement171.util.Messages;
+
public class BrowsePanel extends JPanel implements ActionListener{
private MainFrame parent;
@@ -26,7 +31,7 @@ public BrowsePanel(MainFrame frame) {
}
private void initialize () {
- this.setName("browsePanel");
+ this.setName("browsePanel"); //$NON-NLS-1$
this.setLayout(new BorderLayout());
this.add(getTablePanel(), BorderLayout.CENTER);
this.add(getButtonsPanel(), BorderLayout.SOUTH);
@@ -48,10 +53,10 @@ private JPanel getButtonsPanel() {
private JButton getDetailsButton() {
if (detailsButton == null) {
detailsButton = new JButton();
- detailsButton.setText("Детали");
- detailsButton.setName("detailsButton");
+ detailsButton.setText(Messages.getString("BrowsePanel.details")); //$NON-NLS-1$
+ detailsButton.setName("detailsButton"); //$NON-NLS-1$
+ detailsButton.setActionCommand("details"); //$NON-NLS-1$
detailsButton.addActionListener(this);
-
}
return detailsButton;
}
@@ -59,8 +64,9 @@ private JButton getDetailsButton() {
private JButton getDeleteButton() {
if (deleteButton == null) {
deleteButton = new JButton();
- deleteButton.setText("Удалить");
- deleteButton.setName("deleteButton");
+ deleteButton.setText(Messages.getString("BrowsePanel.delete")); //$NON-NLS-1$
+ deleteButton.setName("deleteButton"); //$NON-NLS-1$
+ deleteButton.setActionCommand("delete"); //$NON-NLS-1$
deleteButton.addActionListener(this);
}
@@ -70,8 +76,9 @@ private JButton getDeleteButton() {
private JButton getEditButton() {
if (editButton == null) {
editButton = new JButton();
- editButton.setText("Редактировать");
- editButton.setName("editButton");
+ editButton.setText(Messages.getString("BrowsePanel.edit")); //$NON-NLS-1$
+ editButton.setName("editButton"); //$NON-NLS-1$
+ editButton.setActionCommand("edit"); //$NON-NLS-1$
editButton.addActionListener(this);
}
@@ -81,8 +88,9 @@ private JButton getEditButton() {
private JButton getAddButton() {
if (addButton == null) {
addButton = new JButton();
- addButton.setText("Добавить");
- addButton.setName("addButton");
+ addButton.setText(Messages.getString("BrowsePanel.add")); //$NON-NLS-1$
+ addButton.setName("addButton"); //$NON-NLS-1$
+ addButton.setActionCommand("add"); //$NON-NLS-1$
addButton.addActionListener(this);
}
@@ -100,13 +108,31 @@ private JScrollPane getTablePanel() {
private JTable getUserTable() {
if (userTable == null) {
userTable = new JTable();
- userTable.setName("userTable");
+ userTable.setName("userTable"); //$NON-NLS-1$
+
}
return userTable;
}
+ public void initTable() {
+ UserTableModel model;
+ try {
+ model = new UserTableModel (parent.getDao().findAll());
+ } catch (DatabaseException e) {
+ model = new UserTableModel (new ArrayList());
+ JOptionPane.showMessageDialog(this, e.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ userTable.setModel(model);
+ }
+
public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
+ String actionCommand = e.getActionCommand();
+ if ("add".equalsIgnoreCase(actionCommand)) { //$NON-NLS-1$
+ this.setVisible(true);
+ parent.showAddPanel();
+
+ }
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/DetailsPanel.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/DetailsPanel.java
new file mode 100644
index 0000000..95a9aae
--- /dev/null
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/DetailsPanel.java
@@ -0,0 +1,134 @@
+package ua.nure.kravets.usermanagement171.gui;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.DateFormat;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import ua.nure.kravets.usermanagement171.User;
+import ua.nure.kravets.usermanagement171.gui.MainFrame;
+import ua.nure.kravets.usermanagement171.util.Messages;
+import ua.nure.kravets.usermanagement171.db.DaoFactory;
+import ua.nure.kravets.usermanagement171.db.UserDao;
+
+public class DetailsPanel extends JPanel implements ActionListener {
+
+ private static final String CANCEL_BUTTON_COMPONENT_NAME = "cancelButton";
+ private static final String CANCEL_COMMAND = "cancel";
+ private static final long serialVersionUID = 5955495123527812587L;
+ private MainFrame parent;
+ private JPanel buttonPanel;
+ private JButton cancelButton;
+ private User user;
+ protected JPanel fieldPanel;
+ protected JTextField firstNameField;
+ protected JTextField dateOfBirthField;
+ protected JTextField lastNameField;
+ protected Color bgColor;
+
+ public DetailsPanel(MainFrame frame) {
+ parent = frame;
+ initialize();
+ }
+
+ private void initialize() {
+ this.setName("detailsPanel"); //$NON-NLS-1$
+ this.setLayout(new BorderLayout());
+ this.add(getFieldPanel(), BorderLayout.NORTH);
+ this.add(getButtonsPanel(), BorderLayout.SOUTH);
+ }
+
+ protected JPanel getFieldPanel() {
+ if (fieldPanel == null) {
+ fieldPanel = new JPanel();
+ fieldPanel.setLayout(new GridLayout(3, 2));
+ addLabeledField(fieldPanel, Messages.getString("DetailsPanel.first_name"), getFirstNameField()); //$NON-NLS-1$
+ addLabeledField(fieldPanel, Messages.getString("DetailsPanel.last_name"), getLastNameField()); //$NON-NLS-1$
+ addLabeledField(fieldPanel, Messages.getString("DetailsPanel.date_of_birth"), getDateOfBirthField()); //$NON-NLS-1$
+ }
+ return fieldPanel;
+ }
+
+ protected void addLabeledField(JPanel panel, String labelText, JTextField textField) {
+ JLabel label = new JLabel(labelText);
+ label.setLabelFor(textField);
+ panel.add(label);
+ panel.add(textField);
+ }
+
+ private JPanel getButtonsPanel() {
+ if (buttonPanel == null) {
+ buttonPanel = new JPanel();
+ buttonPanel.add(closeButton(), null);
+ }
+ return buttonPanel;
+ }
+
+ private JButton closeButton() {
+ if (cancelButton == null) {
+ cancelButton = new JButton();
+ cancelButton.setText(Messages.getString("DetailsPanel.cancel")); //$NON-NLS-1$
+ cancelButton.setName(CANCEL_BUTTON_COMPONENT_NAME); //$NON-NLS-1$
+ cancelButton.setActionCommand(CANCEL_COMMAND); //$NON-NLS-1$
+ cancelButton.addActionListener(this);
+ }
+ return cancelButton;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ clearFields();
+ this.setVisible(false);
+ parent.showBrowsePanel();
+ }
+
+ protected void clearFields() {
+ getFirstNameField().setText("");
+ getFirstNameField().setBackground(bgColor);
+
+ getLastNameField().setText("");
+ getLastNameField().setBackground(bgColor);
+
+ getDateOfBirthField().setText("");
+ getDateOfBirthField().setBackground(bgColor);
+ }
+
+ protected JTextField getDateOfBirthField() {
+ if (dateOfBirthField == null) {
+ dateOfBirthField = new JTextField();
+ dateOfBirthField.setName("dateOfBirthField"); //$NON-NLS-1$
+ }
+ return dateOfBirthField;
+ }
+
+ protected JTextField getLastNameField() {
+ if (lastNameField == null) {
+ lastNameField = new JTextField();
+ lastNameField.setName("lastNameField"); //$NON-NLS-1$
+ }
+ return lastNameField;
+ }
+
+ protected JTextField getFirstNameField() {
+ if (firstNameField == null) {
+ firstNameField = new JTextField();
+ firstNameField.setName("firstNameField"); //$NON-NLS-1$
+ }
+ return firstNameField;
+ }
+
+ public void setUser(User user) {
+ DateFormat format = DateFormat.getDateInstance();
+ this.user = user;
+ getFirstNameField().setText(user.getFirstName());
+ getLastNameField().setText(user.getLastName());
+ getDateOfBirthField().setText(format.format(user.getDateOfBirth()));
+ }
+
+}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/EditPanel.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/EditPanel.java
new file mode 100644
index 0000000..289c102
--- /dev/null
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/EditPanel.java
@@ -0,0 +1,182 @@
+package ua.nure.kravets.usermanagement171.gui;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import ua.nure.kravets.usermanagement171.User;
+import ua.nure.kravets.usermanagement171.db.DatabaseException;
+import ua.nure.kravets.usermanagement171.util.Messages;
+
+public class EditPanel extends JPanel implements ActionListener {
+
+
+ private static final String CANCEL_BUTTON_COMPONENT_NAME = "cancelButton";
+
+ private static final String CANCEL_COMMAND = "cancel";
+
+ private static final long serialVersionUID = 1L;
+
+ private User user;
+
+ protected MainFrame parent;
+ protected JPanel buttonPanel;
+ protected JPanel fieldPanel;
+ protected JButton cancelButton;
+ protected JButton okButton;
+ protected JTextField firstNameField;
+ protected JTextField dateOfBirthField;
+ protected JTextField lastNameField;
+ protected Color bgColor;
+
+ public EditPanel(MainFrame parent) {
+ this.parent = parent;
+ initialize();
+ }
+
+ protected void initialize() {
+ this.setName("editPanel"); //$NON-NLS-1$
+ this.setLayout(new BorderLayout());
+ this.add(getFieldPanel(), BorderLayout.NORTH);
+ this.add(getButtonPanel(), BorderLayout.SOUTH);
+
+ }
+
+ protected JPanel getButtonPanel() {
+ if (buttonPanel == null) {
+ buttonPanel = new JPanel();
+ buttonPanel.add(getOkButton(), null);
+ buttonPanel.add(getCancelButton(), null);
+ }
+ return buttonPanel;
+ }
+
+ protected JButton getCancelButton() {
+ if (cancelButton == null) {
+ cancelButton = new JButton();
+ cancelButton.setText(Messages.getString("AddPanel.cancel")); //$NON-NLS-1$
+ cancelButton.setName(CANCEL_BUTTON_COMPONENT_NAME); //$NON-NLS-1$
+ cancelButton.setActionCommand(CANCEL_COMMAND); //$NON-NLS-1$
+ cancelButton.addActionListener(this);
+ }
+ return cancelButton;
+ }
+
+ protected JButton getOkButton() {
+ if (okButton == null) {
+ okButton = new JButton();
+ okButton.setText(Messages.getString("AddPanel.ok")); //$NON-NLS-1$
+ okButton.setName("okButton"); //$NON-NLS-1$
+ okButton.setActionCommand("ok"); //$NON-NLS-1$
+ okButton.addActionListener(this);
+ }
+ return okButton;
+ }
+
+ protected JPanel getFieldPanel() {
+ if (fieldPanel == null) {
+ fieldPanel = new JPanel();
+ fieldPanel.setLayout(new GridLayout(3, 2));
+ addLabeledField(fieldPanel, Messages.getString("AddPanel.first_name"), getFirstNameField()); //$NON-NLS-1$
+ addLabeledField(fieldPanel, Messages.getString("AddPanel.last_name"), getLastNameField()); //$NON-NLS-1$
+ addLabeledField(fieldPanel, Messages.getString("AddPanel.date_of_birth"), getDateOfBirthField()); //$NON-NLS-1$
+ }
+ return fieldPanel;
+ }
+
+ protected JTextField getDateOfBirthField() {
+ if (dateOfBirthField == null) {
+ dateOfBirthField = new JTextField();
+ dateOfBirthField.setName("dateOfBirthField"); //$NON-NLS-1$
+ }
+ return dateOfBirthField;
+ }
+
+ protected JTextField getLastNameField() {
+ if (lastNameField == null) {
+ lastNameField = new JTextField();
+ lastNameField.setName("lastNameField"); //$NON-NLS-1$
+ }
+ return lastNameField;
+ }
+
+ protected void addLabeledField(JPanel panel, String labelText, JTextField textField) {
+ JLabel label = new JLabel(labelText);
+ label.setLabelFor(textField);
+ panel.add(label);
+ panel.add(textField);
+ }
+
+ protected JTextField getFirstNameField() {
+ if (firstNameField == null) {
+ firstNameField = new JTextField();
+ firstNameField.setName("firstNameField"); //$NON-NLS-1$
+ }
+ return firstNameField;
+ }
+
+ protected void doAction(ActionEvent e) throws ParseException {
+ if ("ok".equalsIgnoreCase(e.getActionCommand())) {
+ user.setFirstName(getFirstNameField().getText());
+ user.setLastName(getLastNameField().getText());
+ DateFormat format = DateFormat.getDateInstance();
+ try {
+ Date date = format.parse(getDateOfBirthField().getText());
+ user.setDateOfBirth(date);
+ } catch (ParseException e1) {
+ getDateOfBirthField().setBackground(Color.RED);
+ throw e1;
+ }
+ try {
+ parent.getDao().update(user);
+ } catch (DatabaseException e1) {
+ JOptionPane.showMessageDialog(this, e1.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+
+
+ public void setUser(User user) {
+ DateFormat format = DateFormat.getDateInstance();
+ this.user = user;
+ getFirstNameField().setText(user.getFirstName());
+ getLastNameField().setText(user.getLastName());
+ getDateOfBirthField().setText(format.format(user.getDateOfBirth()));
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ try {
+ doAction(e);
+ } catch (ParseException e1) {
+ return;
+ }
+ clearFields();
+ this.setVisible(false);
+ parent.showBrowsePanel();
+
+ }
+
+ protected void clearFields() {
+ getFirstNameField().setText("");
+ getFirstNameField().setBackground(bgColor);
+
+ getLastNameField().setText("");
+ getLastNameField().setBackground(bgColor);
+
+ getDateOfBirthField().setText("");
+ getDateOfBirthField().setBackground(bgColor);
+ }
+}
\ No newline at end of file
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/MainFrame.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/MainFrame.java
index 6a25465..e73acca 100644
--- a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/MainFrame.java
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/MainFrame.java
@@ -1,51 +1,119 @@
package ua.nure.kravets.usermanagement171.gui;
import java.awt.BorderLayout;
-import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
+import ua.nure.kravets.usermanagement171.User;
+import ua.nure.kravets.usermanagement171.db.DaoFactory;
+import ua.nure.kravets.usermanagement171.db.UserDao;
+import ua.nure.kravets.usermanagement171.util.Messages;
+
public class MainFrame extends JFrame {
private static final int FRAME_HEIGHT = 600;
private static final int FRAME_WIDTH = 800;
+ private UserDao dao;
private JPanel contentPanel;
- private JPanel browsePanel;
-
- public MainFrame(){
+ private BrowsePanel browsePanel;
+ private AddPanel addPanel;
+ private DetailsPanel detailsPanel;
+ private EditPanel editPanel;
+
+ public MainFrame() {
super();
+ dao = DaoFactory.getInstance().getUserDao();
initialize();
-
}
- private void initialize () {
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setSize(FRAME_WIDTH, FRAME_HEIGHT);
- this.setTitle("Управление пользователями");
- this.setContentPane(getContentPanel());
+ public UserDao getDao() {
+ return dao;
+ }
+
+ private void initialize() {
+ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ this.setSize(FRAME_WIDTH, FRAME_HEIGHT);
+ this.setTitle(Messages.getString("MainFrame.user_management")); //$NON-NLS-1$
+ this.setContentPane(getContentPanel());
+ }
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ MainFrame frame = new MainFrame();
+ frame.setVisible(true);
+
+ }
+
+ public void showAddPanel() {
+ showPanel(getAddPanel());
}
- private JPanel getContentPanel() {
- if (contentPanel == null) {
- contentPanel = new JPanel();
- contentPanel.setLayout(new BorderLayout());
- contentPanel.add(getBrowsePanel(), BorderLayout.CENTER);
- }
- return contentPanel;
+
+ private void showPanel(JPanel panel) {
+ getContentPane().add(panel, BorderLayout.CENTER);
+ panel.setVisible(true);
+ panel.repaint();
}
- private JPanel getBrowsePanel() {
- if (browsePanel == null) {
- browsePanel = new BrowsePanel (this);
+ private AddPanel getAddPanel() {
+ if(addPanel == null) {
+ addPanel = new AddPanel(this);//Implement Later
}
- return browsePanel;
+ return addPanel;
}
+
+ public void showBrowsePanel() {
+ showPanel(getBrowsePanel());
+
+ }
- public static void main(String[] args) {
- MainFrame frame = new MainFrame();
- frame.setVisible(true);
- }
+
+ public void showEditPanel(User user) {
+
+ getEditPanel().setUser(user);//Impl Later
+ showPanel(getEditPanel());
+ }
+
+
+ private EditPanel getEditPanel() {
+ if (editPanel == null) {
+ editPanel = new EditPanel(this);//Impl Later
+ }
+ return editPanel;
+ }
+
+ public void showDetailsPanel(User user) {
+ getDetailsPanel().setUser(user);//Impl Later
+ showPanel(getDetailsPanel());
+ }
+
+ private DetailsPanel getDetailsPanel() {
+ if (detailsPanel == null) {
+ detailsPanel = new DetailsPanel(this);//Impl Later
+ }
+ return detailsPanel;
+ }
+
+ private JPanel getContentPanel() {
+ if (contentPanel == null) {
+ contentPanel = new JPanel();
+ contentPanel.setLayout(new BorderLayout());
+ contentPanel.add(getBrowsePanel(), BorderLayout.CENTER);
+ }
+ return contentPanel;
+ }
+
+
+ private JPanel getBrowsePanel() {
+ if (browsePanel == null) {
+ browsePanel = new BrowsePanel(this);
+ }
+ ((BrowsePanel) browsePanel).initTable();
+ return browsePanel;
+ }
}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/UserTableModel.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/UserTableModel.java
new file mode 100644
index 0000000..18ad426
--- /dev/null
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/gui/UserTableModel.java
@@ -0,0 +1,71 @@
+package ua.nure.kravets.usermanagement171.gui;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import javax.swing.table.AbstractTableModel;
+import ua.nure.kravets.usermanagement171.util.Messages;
+import ua.nure.kravets.usermanagement171.User;
+
+public class UserTableModel extends AbstractTableModel {
+
+
+ private static final long serialVersionUID = 3066013167660313954L;
+
+ private static final String[] COLUMN_NAMES = {
+ Messages.getString("UserTableModel.id"), Messages.getString("UserTableModel.first_name"), Messages.getString("UserTableModel.last_name") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ private static final Class[] COLUMN_CLASSES = { Long.class, String.class,
+ String.class };
+ private List users = null;
+
+ public UserTableModel(Collection users) {
+ this.users = new ArrayList(users);
+ }
+
+ public int getRowCount() {
+ return users.size();
+ }
+
+ public int getColumnCount() {
+ return COLUMN_NAMES.length;
+ }
+
+ public Class getColumnClass(int columnIndex) {
+ return COLUMN_CLASSES[columnIndex];
+ }
+
+ public String getColumnName(int column) {
+ return COLUMN_NAMES[column];
+ }
+
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ User user = (User) users.get(rowIndex);
+ switch (columnIndex) {
+ case 0:
+ return user.getId();
+ case 1:
+ return user.getFirstName();
+ case 2:
+ return user.getLastName();
+ }
+ return null;
+ }
+
+ public User getUser(int index) {
+ return (User) users.get(index);
+ }
+
+ /**
+ * @param users
+ */
+ public void addUsers(Collection users) {
+ this.users.addAll(users);
+
+ }
+
+
+ public void clearUsers() {
+ this.users = new ArrayList();
+ }
+
+}
diff --git a/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/util/Messages.java b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/util/Messages.java
new file mode 100644
index 0000000..1d3fd83
--- /dev/null
+++ b/usermanagement171/src/main/java/ua/nure/kravets/usermanagement171/util/Messages.java
@@ -0,0 +1,21 @@
+package ua.nure.kravets.usermanagement171.util;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/usermanagement171/src/main/resources/messages.properties b/usermanagement171/src/main/resources/messages.properties
new file mode 100644
index 0000000..002ffa6
--- /dev/null
+++ b/usermanagement171/src/main/resources/messages.properties
@@ -0,0 +1,17 @@
+AddPanel.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
+AddPanel.date_of_birth=\u0414\u0430\u0442\u0430 \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u044F
+AddPanel.first_name=\u0418\u043C\u044F
+AddPanel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
+AddPanel.ok=Ok
+BrowsePanel.add=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C
+BrowsePanel.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
+BrowsePanel.details=\u0414\u0435\u0442\u0430\u043B\u0438
+BrowsePanel.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
+MainFrame.user_management=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C\u0438
+DetailsPanel.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
+DetailsPanel.first_name=\u0418\u043C\u044F
+DetailsPanel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
+DetailsPanel.date_of_birth=\u0414\u0430\u0442\u0430 \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u044F
+UserTableModel.id=ID
+UserTableModel.first_name=\u0418\u043C\u044F
+UserTableModel.last_name=\u0424\u0430\u043C\u0438\u043B\u0438\u044F
\ No newline at end of file
diff --git a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.java b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.java
index a7303c2..c1603cf 100644
--- a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.java
+++ b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/DaoFactoryTest.java
@@ -1,6 +1,7 @@
package ua.nure.kravets.usermanagement171.db;
import junit.framework.TestCase;
+import ua.nure.kravets.usermanagement171.User;
public class DaoFactoryTest extends TestCase {
@@ -8,7 +9,7 @@ public void testGetUserDao() {
try {
DaoFactory daoFactory = DaoFactory.getInstance();
assertNotNull("DaoFactory instance is null", daoFactory);
- UserDao userDao = daoFactory.getUserDao();
+ UserDao userDao = daoFactory.getUserDao();
assertNotNull("UserDao instance is null", userDao);
} catch (RuntimeException e) {
e.printStackTrace();
diff --git a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockDaoFactory.java b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockDaoFactory.java
new file mode 100644
index 0000000..98fdada
--- /dev/null
+++ b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockDaoFactory.java
@@ -0,0 +1,23 @@
+package ua.nure.kravets.usermanagement171.db;
+
+import com.mockobjects.dynamic.Mock;
+
+import ua.nure.kravets.usermanagement171.User;
+
+public class MockDaoFactory extends DaoFactory {
+
+ private Mock mockUserDao;
+
+ public MockDaoFactory() {
+ mockUserDao = new Mock(UserDao.class);
+ }
+
+ public Mock getMockUserDao() {
+ return mockUserDao;
+ }
+
+ public UserDao getUserDao() {
+ return (UserDao) mockUserDao.proxy();
+ }
+
+}
\ No newline at end of file
diff --git a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockUserDao.java b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockUserDao.java
new file mode 100644
index 0000000..8f7d754
--- /dev/null
+++ b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/db/MockUserDao.java
@@ -0,0 +1,41 @@
+package ua.nure.kravets.usermanagement171.db;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import ua.nure.kravets.usermanagement171.User;
+
+public class MockUserDao implements UserDao {
+
+ private long id = 0;
+ private Map users = new HashMap<> ();
+
+ public User create(User user) throws DatabaseException {
+ Long id = new Long(users.size() + 1);
+ users.put(id, user);
+ user.setId(id);
+
+ return user;
+ }
+
+ public void update(User user) throws DatabaseException {
+ users.put(new Long(user.getId()), user);
+ }
+
+ public void delete(User user) throws DatabaseException {
+ users.remove(new Long(user.getId()));
+ }
+
+ public User find(Long id) throws DatabaseException {
+ return users.get(id);
+ }
+
+ public Collection findAll() throws DatabaseException {
+ return users.values();
+ }
+
+ public void setConnectionFactory(ConnectionFactory connectionFactory) {
+ }
+
+}
diff --git a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/gui/MainFrameTest.java b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/gui/MainFrameTest.java
index 5f8d0a4..0468713 100644
--- a/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/gui/MainFrameTest.java
+++ b/usermanagement171/src/test/java/ua/nure/kravets/usermanagement171/gui/MainFrameTest.java
@@ -1,47 +1,343 @@
package ua.nure.kravets.usermanagement171.gui;
-
import java.awt.Component;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
import javax.swing.JButton;
+import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTable;
+import javax.swing.JTextField;
+
+import com.mockobjects.dynamic.Mock;
import junit.extensions.jfcunit.JFCTestCase;
import junit.extensions.jfcunit.JFCTestHelper;
+import junit.extensions.jfcunit.TestHelper;
+import junit.extensions.jfcunit.eventdata.JTableMouseEventData;
+import junit.extensions.jfcunit.eventdata.MouseEventData;
+import junit.extensions.jfcunit.eventdata.StringEventData;
+import junit.extensions.jfcunit.finder.DialogFinder;
import junit.extensions.jfcunit.finder.NamedComponentFinder;
+import ua.nure.kravets.usermanagement171.User;
+import ua.nure.kravets.usermanagement171.db.DaoFactory;
+import ua.nure.kravets.usermanagement171.db.MockDaoFactory;
+
public class MainFrameTest extends JFCTestCase {
+ private static final String DATE_OF_BIRTH_FIELD_COMPONENT_NAME = "dateOfBirthField";
+ private static final String LAST_NAME_FIELD_COMPONENT_NAME = "lastNameField";
+ private static final String FIRST_NAME_FIELD_COMPONENT_NAME = "firstNameField";
+ private static final String BROWSE_PANEL_COMPONENT_NAME = "browsePanel";
+
+ private static final String LAST_NAME = "Doe";
+ private static final String FIRST_NAME = "John";
+ private static final String DELETE_BUTTON_COMPONENT_NAME = "deleteButton";
+ private static final String DETAILS_BUTTON_COMPONENT_NAME = "detailsButton";
+ private static final String EDIT_BUTTON_COMPONENT_NAME = "editButton";
+ private static final String ADD_BUTTON_COMPONENT_NAME = "addButton";
+
+ private ArrayList users;
+ private Mock mockUserDao;
private MainFrame mainFrame;
+ private final Date DATE = new Date();
protected void setUp() throws Exception {
super.setUp();
- setHelper(new JFCTestHelper());
- mainFrame = new MainFrame();
- mainFrame.setVisible(true);
- }
+ try {
+ Properties properties = new Properties();
+ properties.setProperty("dao.Factory", MockDaoFactory.class.getName());
+ DaoFactory.init(properties);
+ mockUserDao = ((MockDaoFactory) DaoFactory.getInstance()).getMockUserDao();
+ User expectedUser = new User(new Long(1001L), FIRST_NAME, LAST_NAME, DATE);
+ users = new ArrayList();
+ users.add(expectedUser);
+ mockUserDao.expectAndReturn("findAll",users);
+ setHelper(new JFCTestHelper());
+ mainFrame = new MainFrame();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ mainFrame.setVisible(true);
+ }
protected void tearDown() throws Exception {
- mainFrame.setVisible(false);
- getHelper().cleanUp(this);
- super.tearDown();
- }
+ try {
+ super.tearDown();
+ mockUserDao.verify();
+ mainFrame.setVisible(false);
+ getHelper();
+ TestHelper.cleanUp(this);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
- private Component find(Class componentClass, String name) {
+ private Component find(Class> componentClass, String name) {
NamedComponentFinder finder;
- finder = new NamedComponentFinder (componentClass, name);
+ finder = new NamedComponentFinder(componentClass, name);
finder.setWait(0);
Component component = finder.find(mainFrame, 0);
- assertNotNull ("Could not find component '" + name + "'", component);
+ assertNotNull("Could not find component '" + name + "'", component);
return component;
}
- public void testBrowseControls() {
- find(JPanel.class, "browsePanel");
- find(JTable.class, "userTable");
- find(JButton.class, "addButton");
- find(JButton.class, "editButton");
- find(JButton.class, "deleteButton");
- find(JButton.class, "detailsButton");
-}
+
+ public void testBrowsePanel() {
+ find(JPanel.class, BROWSE_PANEL_COMPONENT_NAME);
+ JTable table = (JTable) find(JTable.class, "userTable");
+ find(JButton.class, ADD_BUTTON_COMPONENT_NAME);
+ find(JButton.class, EDIT_BUTTON_COMPONENT_NAME);
+ find(JButton.class, DETAILS_BUTTON_COMPONENT_NAME);
+ find(JButton.class, DELETE_BUTTON_COMPONENT_NAME);
+
+ }
+
+ public void testAddUser() {
+ try {
+ String firstName = FIRST_NAME;
+ String lastName = LAST_NAME;
+
+ User user = new User(FIRST_NAME, LAST_NAME, DATE);
+
+ User expectedUser = new User(new Long(1), FIRST_NAME, LAST_NAME, DATE);
+ mockUserDao.expectAndReturn("create", user, expectedUser);
+ System.out.println("1a" + expectedUser + user);
+
+
+ ArrayList users = new ArrayList(this.users);
+ users.add(expectedUser);
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+
+ JButton addButton = (JButton) find(JButton.class, "addButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, addButton));
+
+ find(JPanel.class, "addPanel");
+
+ fillFields(firstName, lastName, DATE);
+
+ JButton okButton = (JButton) find(JButton.class, "okButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, okButton));
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(2, table.getRowCount());
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ public void testCancelAddUser() {
+ try {
+ String firstName = "John";
+ String lastName = "Doe";
+ Date now = new Date();
+
+ ArrayList users = new ArrayList(this.users);
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+
+ JButton addButton = (JButton) find(JButton.class, "addButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, addButton));
+
+ find(JPanel.class, "addPanel");
+
+ fillFields(firstName, lastName, now);
+
+ JButton cancelButton = (JButton) find(JButton.class, "cancelButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, cancelButton));
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ public void testEditUser() {
+ try {
+ find(JPanel.class, "browsePanel");
+
+ User expectedUser = new User(new Long(1001), "George", "Bush", DATE);
+ mockUserDao.expect("update", expectedUser);
+ List users = new ArrayList(this.users);
+ users.add(expectedUser);
+
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+ JButton editButton = (JButton) find(JButton.class, "editButton");
+ getHelper().enterClickAndLeave(new JTableMouseEventData(this, table, 0, 0, 1));
+ getHelper().enterClickAndLeave(new MouseEventData(this, editButton));
+
+ find(JPanel.class, "editPanel");
+
+ JTextField firstNameField = (JTextField) find(JTextField.class,
+ "firstNameField");
+ JTextField lastNameField = (JTextField) find(JTextField.class,
+ "lastNameField");
+
+ getHelper().sendString(
+ new StringEventData(this, firstNameField, "1"));
+ getHelper().sendString(
+ new StringEventData(this, lastNameField, "1"));
+
+ JButton okButton = (JButton) find(JButton.class, "okButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, okButton));
+
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(2, table.getRowCount());
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ public void testCancelEditUser() {
+ try {
+ String firstName = "John";
+ String lastName = "Doe";
+ Date now = new Date();
+
+ User expectedUser = new User(new Long(1), firstName, lastName, now);
+ List users = new ArrayList(this.users);
+ users.add(expectedUser);
+
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+
+ JButton editButton = (JButton) find(JButton.class, "editButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, editButton));
+
+ String title = "Edit user";
+ findDialog(title);
+
+ getHelper().enterClickAndLeave(new JTableMouseEventData(this, table, 0, 0, 1));
+ getHelper().enterClickAndLeave(new MouseEventData(this, editButton));
+
+ find(JPanel.class, "editPanel");
+
+ JTextField firstNameField = (JTextField) find(JTextField.class,
+ "firstNameField");
+ JTextField lastNameField = (JTextField) find(JTextField.class,
+ "lastNameField");
+ JTextField dateOfBirthField = (JTextField) find(JTextField.class,
+ "dateOfBirthField");
+
+ assertEquals("George", firstNameField.getText());
+ assertEquals("Bush", lastNameField.getText());
+
+ getHelper().sendString(
+ new StringEventData(this, firstNameField, firstName));
+ getHelper().sendString(
+ new StringEventData(this, lastNameField, lastName));
+ DateFormat formatter = DateFormat.getDateInstance();
+ String date = formatter.format(now);
+ getHelper().sendString(
+ new StringEventData(this, dateOfBirthField, date));
+
+ JButton cancelButton = (JButton) find(JButton.class, "cancelButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, cancelButton));
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(2, table.getRowCount());
+
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ public void testDeleteUser() {
+ try {
+
+ User expectedUser = new User(new Long(1001), "George", "Bush", DATE);
+ mockUserDao.expect("delete", expectedUser);
+ List users = new ArrayList();
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+ JButton deleteButton = (JButton) find(JButton.class, "deleteButton");
+ getHelper().enterClickAndLeave(new JTableMouseEventData(this, table, 0, 0, 1));
+ getHelper().enterClickAndLeave(new MouseEventData(this, deleteButton));
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(0, table.getRowCount());
+
+
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ public void testCancelDetailedPanel() {
+ try {
+ ArrayList users = new ArrayList(this.users);
+ mockUserDao.expectAndReturn("findAll", users);
+
+ JTable table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+
+ JButton detailsButton = (JButton) find(JButton.class, "detailsButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, detailsButton));
+
+ String title = "Details user";
+ findDialog(title);
+
+ getHelper().enterClickAndLeave(new JTableMouseEventData(this, table, 0, 0, 1));
+ getHelper().enterClickAndLeave(new MouseEventData(this, detailsButton));
+
+
+ find(JPanel.class, "detailsPanel");
+
+ JButton cancelButton = (JButton) find(JButton.class, "cancelButton");
+ getHelper().enterClickAndLeave(new MouseEventData(this, cancelButton));
+
+ find(JPanel.class, "browsePanel");
+ table = (JTable) find(JTable.class, "userTable");
+ assertEquals(1, table.getRowCount());
+ } catch (Exception e) {
+ fail(e.toString());
+ }
+ }
+
+ private void findDialog(String title) {
+ JDialog dialog;
+ DialogFinder dFinder = new DialogFinder(title);
+ dialog = (JDialog) dFinder.find();
+ assertNotNull("Could not find dialog '" + title + "'", dialog);
+ getHelper();
+ TestHelper.disposeWindow( dialog, this );
+ }
+
+
+
+ private void fillFields(String firstName, String lastName, Date dateOfBirth) {
+ JTextField firtNameField = (JTextField) find(JTextField.class, FIRST_NAME_FIELD_COMPONENT_NAME);
+ JTextField lastNameField = (JTextField) find(JTextField.class, LAST_NAME_FIELD_COMPONENT_NAME);
+ JTextField dateOfBirthField = (JTextField) find(JTextField.class, DATE_OF_BIRTH_FIELD_COMPONENT_NAME);
+
+ getHelper().sendString(new StringEventData(this, firtNameField, firstName));
+ getHelper().sendString(new StringEventData(this, lastNameField, lastName));
+ DateFormat formatter = DateFormat.getDateInstance();
+ String date = formatter.format(dateOfBirth);
+ getHelper().sendString(new StringEventData(this, dateOfBirthField, date));
+ }
+
}
diff --git a/usermanagement171/src/test/resources/usersDataSet.xml b/usermanagement171/src/test/resources/usersDataSet.xml
index c796f32..518ae0b 100644
--- a/usermanagement171/src/test/resources/usersDataSet.xml
+++ b/usermanagement171/src/test/resources/usersDataSet.xml
@@ -3,7 +3,13 @@
id
FirstName
LastName
- DateOfBirth
+ DateOfBirth
+
+ 3
+ TestFind
+ User
+ 2019-05-11
+
1000
Bill