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