From b83f830a6c038117d2a7cbea27cb5e7b7b2fe02e Mon Sep 17 00:00:00 2001 From: Sanjay Shiwakoti Date: Mon, 22 Aug 2016 17:52:59 +0545 Subject: [PATCH] Initial commit. --- .../phpjava/assignment/configs/db.properties | 4 + .../assignment/constant/DBConstant.java | 15 ++ .../assignment/constant/EmployeeConstant.java | 16 ++ .../assignment/constant/UserConstant.java | 14 ++ .../controller/LoginController.java | 63 +++++++ .../assignment/dao/DataAccessInterface.java | 17 ++ .../assignment/dao/EmployeeDAOImpl.java | 162 ++++++++++++++++++ .../phpjava/assignment/dao/UserDaoImpl.java | 68 ++++++++ .../phpjava/assignment/entity/Employee.java | 84 +++++++++ .../phpjava/assignment/entity/User.java | 56 ++++++ .../phpjava/assignment/enums/Roles.java | 20 +++ .../assignment/library/ConsoleUtil.java | 27 +++ .../assignment/library/DBConnection.java | 59 +++++++ .../assignment/services/EmployeeServices.java | 53 ++++++ 14 files changed, 658 insertions(+) create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/configs/db.properties create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/DBConstant.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/EmployeeConstant.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/UserConstant.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/controller/LoginController.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/DataAccessInterface.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/EmployeeDAOImpl.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/UserDaoImpl.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/Employee.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/User.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/enums/Roles.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/ConsoleUtil.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/DBConnection.java create mode 100644 sanjay/src/main/java/com/lftechnology/phpjava/assignment/services/EmployeeServices.java diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/configs/db.properties b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/configs/db.properties new file mode 100644 index 0000000..fc5ba35 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/configs/db.properties @@ -0,0 +1,4 @@ +url = jdbc:mysql://localhost/javaclass +driver = com.mysql.jdbc.Driver +username = root +password = root diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/DBConstant.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/DBConstant.java new file mode 100644 index 0000000..ec04c89 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/constant/DBConstant.java @@ -0,0 +1,15 @@ +package com.lftechnology.phpjava.assignment.constant; + +/** + * Constant + * + * @author Sanjay Shiwakoti { + + List findAll() throws SQLException; + + int insert(T t) throws SQLException; + + int update(T t) throws SQLException; + + int delete(T t) throws SQLException; + +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/EmployeeDAOImpl.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/EmployeeDAOImpl.java new file mode 100644 index 0000000..3226bf2 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/EmployeeDAOImpl.java @@ -0,0 +1,162 @@ +package com.lftechnology.phpjava.assignment.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.lftechnology.phpjava.assignment.entity.Employee; +import com.lftechnology.phpjava.assignment.enums.Roles; +import com.lftechnology.phpjava.assignment.library.DBConnection; +import com.mysql.jdbc.Statement; + +/** + * EmployeeDaoImpl + * + * @author Sanjay Shiwakoti + * @since August, 08 2016 + */ +public class EmployeeDAOImpl implements DataAccessInterface { + + protected Connection conn = DBConnection.getConnection(); + protected PreparedStatement stmt = null; + + @Override + public List findAll() throws SQLException { + return null; + } + + @Override + public int insert(Employee employee) throws SQLException { + String sql = "INSERT INTO employee (fullname, address, department, role) VALUES ( ?, ? , ?, ?);"; + stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); + stmt.setString(1, employee.getFullname()); + stmt.setString(2, employee.getAddress()); + stmt.setString(3, employee.getDepartment()); + stmt.setString(4, employee.getRole().toString()); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + if (rs.next()){ + return rs.getInt(1); + } + return 0; + } + + + @Override + public int update(Employee employee) throws SQLException { + String sql = "UPDATE employee set" + + "fullname = ?," + + " address = ?," + + " department = ?," + + " role=?" + + "where idemployee =?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, employee.getFullname()); + stmt.setString(2, employee.getAddress()); + stmt.setString(3, employee.getDepartment()); + stmt.setString(4, employee.getRole().toString()); + stmt.setInt(5, employee.getEmployeeID()); + return stmt.executeUpdate(); + } + + /** + * Map Employee Data from the result set + * + * @author Sanjay Shiwakoti + * @param resultSet + * @return Employee + */ + private List mapEmployeeData(ResultSet resultSet){ + List employees = new ArrayList<>(); + try { + if (resultSet.next()) { + Employee employee = new Employee(); + employee.setAddress(resultSet.getString("address")); + employee.setDepartment(resultSet.getString("department")); + employee.setFullname(resultSet.getString("fullname")); + employee.setRole(resultSet.getString("role").toLowerCase().equals(Roles.ADMIN.toString().toLowerCase()) ? Roles.ADMIN.toString() : Roles.USER.toString()); + employees.add(employee); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return employees; + } + + @SuppressWarnings("unused") + private List find(HashMap filter) throws SQLException { + String sql = "select * from employee where 1=1 "; + if(filter.containsKey("role")) { + sql += " and role = ?"; + } + if(filter.containsKey("department")) { + sql += " and department = ?"; + } + if(filter.containsKey("address")) { + sql += " and address = ?"; + } + if(filter.containsKey("fullname")) { + sql += " and fullname = ?"; + } + stmt = conn.prepareStatement(sql); + if(filter.containsKey("role")) { + stmt.setString(1, (String) filter.get("role")); + } + if(filter.containsKey("department")) { + sql += " and department = :department"; + stmt.setString(2, (String) filter.get("department")); + } + if(filter.containsKey("address")) { + sql += " and address = :address"; + stmt.setString(3, (String) filter.get("address")); + } + if(filter.containsKey("fullname")) { + sql += " and fullname = :fullname"; + stmt.setString(4, (String) filter.get("address")); + } + + ResultSet resultSet = stmt.executeQuery(); + List employee = mapEmployeeData(resultSet); + return employee; + } + + @Override + public int delete(Employee employee) throws SQLException { + String sql = "delete from where idemployee=?"; + stmt = conn.prepareStatement(sql); + stmt.setInt(1, employee.getEmployeeID()); + return stmt.executeUpdate(); + } + + /** + * Delete employee by fullname + * @param employee + * @return + * @throws SQLException + */ + public int deleteEmployeeByFullName(Employee employee) throws SQLException { + String sql = "delete from where fullname=?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, employee.getFullname()); + return stmt.executeUpdate(); + } + + /** + * Terminate employee By Full Name + * @param employee + * @return + * @throws SQLException + */ + public int terminateByFullName(Employee employee) throws SQLException { + String sql = "UPDATE employee set" + + "is_terminated = 1," + + "where fullname =?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, employee.getFullname()); + return stmt.executeUpdate(); + } +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/UserDaoImpl.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/UserDaoImpl.java new file mode 100644 index 0000000..58e4602 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/dao/UserDaoImpl.java @@ -0,0 +1,68 @@ +package com.lftechnology.phpjava.assignment.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import com.lftechnology.phpjava.assignment.entity.User; +import com.lftechnology.phpjava.assignment.library.DBConnection; +import com.mysql.jdbc.Statement; + +public class UserDaoImpl implements DataAccessInterface { + + protected Connection conn = DBConnection.getConnection(); + protected PreparedStatement stmt = null; + + @Override + public List findAll() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public int insert(User user) throws SQLException { + String sql = "INSERT INTO user (username, password, is_terminated) VALUES ( ?, ? , 0);"; + stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); + stmt.setString(1, user.getUsername()); + stmt.setString(2, user.getPassword()); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + if (rs.next()){ + return rs.getInt(1); + } + return 0; + } + + @Override + public int update(User user) throws SQLException { + String sql = "UPDATE user set" + + "is_terminate = 1," + + "where user_id =?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, user.getUsername()); + return stmt.executeUpdate(); + } + + @Override + public int delete(User user) throws SQLException { + String sql = "delete from user where employee_id =?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, user.getUsername()); + return stmt.executeUpdate(); + } + + public int findValidUser(User user) throws SQLException { + + String sql = "SELECT * FROM user WHERE is_terminated = 0 AND username = ? and password = ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, user.getUsername()); + ResultSet rs = stmt.executeQuery(sql); + if(rs.next()) { + int idUser = rs.getInt("iduser"); + return idUser; + } + return 0; + } + +} diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/Employee.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/Employee.java new file mode 100644 index 0000000..b319f1e --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/Employee.java @@ -0,0 +1,84 @@ +package com.lftechnology.phpjava.assignment.entity; + +/** + * Employee + * + * @author Sanjay Shiwakoti + * @since August, 12 2016 + */ +public class Employee extends User { + protected Integer employeeid; + protected String fullname; + protected String address; + protected String department; + protected String role; + protected Integer userId; + + public Employee() { + super(); + } + + public Employee(String fullname, String address, String department,String role) { + super(); + this.fullname = fullname; + this.address = address; + this.department = department; + this.role = role; + } + + + public Employee setEmployeeId(Integer employeeid) { + this.employeeid = employeeid; + return this; + } + + public Integer getEmployeeID() { + return employeeid; + } + + public String getFullname() { + return fullname; + } + + public Employee setFullname(String fullname) { + this.fullname = fullname; + return this; + } + + public String getAddress() { + return address; + } + + public Employee setAddress(String address) { + this.address = address; + return this; + } + + public String getDepartment() { + return department; + } + + public Employee setDepartment(String department) { + this.department = department; + return this; + } + + + public String getRole() { + return role; + } + + public Employee setRole(String role) { + this.role = role; + return this; + } + + public int getUserId() { + return userId; + } + + public User setEmployeeId(int userId) { + this.userId = userId; + return this; + } +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/User.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/User.java new file mode 100644 index 0000000..ba91671 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/entity/User.java @@ -0,0 +1,56 @@ +package com.lftechnology.phpjava.assignment.entity; + +/** + * Employee + * + * @author Sanjay Shiwakoti + * @since August, 12 2016 + */ +public class User { + protected int id; + protected String username; + protected String password; + protected boolean isTerminated; + protected int employeeId; + + public User() { + + } + + public User(String username, String password, boolean isTerminated) { + this.username = username; + this.password = password; + this.isTerminated = isTerminated; + } + + public int getId() { + return id; + } + + public String getUsername() { + return username; + } + + public User setUsername(String username) { + this.username = username; + return this; + } + + public String getPassword() { + return password; + } + + public User setPassword(String password) { + this.password = password; + return this; + } + + public boolean isTerminated() { + return isTerminated; + } + + public User setTerminated(boolean terminated) { + isTerminated = terminated; + return this; + } +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/enums/Roles.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/enums/Roles.java new file mode 100644 index 0000000..73afd25 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/enums/Roles.java @@ -0,0 +1,20 @@ +package com.lftechnology.phpjava.assignment.enums; +/** + * Role + * + * @author Sanjay Shiwakoti + * @since August, 12 2016 + */ +public enum Roles { + ADMIN("admin"), USER("user"); + private final String role; + + private Roles(String role) { + this.role = role; + } + + public String getRole() { + return this.role; + } + +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/ConsoleUtil.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/ConsoleUtil.java new file mode 100644 index 0000000..4037713 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/ConsoleUtil.java @@ -0,0 +1,27 @@ +package com.lftechnology.phpjava.assignment.library; + +import java.util.Scanner; + +public class ConsoleUtil { + public static void consoleWrite(String message){ + System.out.print(message); + } + + public static String gerUserInput() { + Scanner scanner = new Scanner(System.in); + String userInput = ""; + while (true) { + if (!scanner.hasNextLine()) { + scanner.nextLine(); + } else { + userInput = scanner.nextLine(); + if (userInput.isEmpty()) { + continue; + } else { + break; + } + } + } + return userInput; + } +} diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/DBConnection.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/DBConnection.java new file mode 100644 index 0000000..d381862 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/library/DBConnection.java @@ -0,0 +1,59 @@ +package com.lftechnology.phpjava.assignment.library; +import com.lftechnology.phpjava.assignment.constant.DBConstant; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + +/** + * DbConnection + * + * @author Sanjay Shiwakoti + * @since August, 12 2016 + */ +public class DBConnection { + private static Properties properties = new Properties(); + private static Connection connection = null; + + public DBConnection() { + try { + properties.load(getInputProperty()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public InputStream getInputProperty() throws FileNotFoundException { + String filePath = System.getProperty("user.dir") + DBConstant.DB_CONFIG_PATH +"db.properties"; + InputStream inputProperty = new FileInputStream(filePath); + return inputProperty; + } + + /** + * Connect the database and connect Mysql Database and return + * Connection + * + * @author Sanjay Shiwakoti + * @return Connection Mysql Connection + */ + public static Connection getConnection() { + + try { + Class.forName(properties.getProperty(DBConstant.DB_DRIVER)); + connection = DriverManager.getConnection( + properties.getProperty(DBConstant.DB_URL), + properties.getProperty(DBConstant.DB_USERNAME), + properties.getProperty(DBConstant.DB_PASSWORD) + ); + } catch (SQLException | ClassNotFoundException e) { + e.printStackTrace(); + } + return connection; + } +} \ No newline at end of file diff --git a/sanjay/src/main/java/com/lftechnology/phpjava/assignment/services/EmployeeServices.java b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/services/EmployeeServices.java new file mode 100644 index 0000000..bfbfcf1 --- /dev/null +++ b/sanjay/src/main/java/com/lftechnology/phpjava/assignment/services/EmployeeServices.java @@ -0,0 +1,53 @@ +package com.lftechnology.phpjava.assignment.services; + +import java.sql.SQLException; +import java.util.HashMap; + +import com.lftechnology.phpjava.assignment.constant.EmployeeConstant; +import com.lftechnology.phpjava.assignment.constant.UserConstant; +import com.lftechnology.phpjava.assignment.dao.EmployeeDAOImpl; +import com.lftechnology.phpjava.assignment.dao.UserDaoImpl; +import com.lftechnology.phpjava.assignment.entity.Employee; +import com.lftechnology.phpjava.assignment.entity.User; + +public class EmployeeServices { + + public boolean createEmployeeRecord(HashMap empl) { + Employee employee = new Employee(); + employee.setFullname(empl.get(EmployeeConstant.EMP_FULLNAME).toString()); + employee.setAddress(empl.get(EmployeeConstant.EMP_ADDRESS).toString()); + employee.setRole(empl.get(EmployeeConstant.EMP_ROLE).toString()); + employee.setDepartment(empl.get(EmployeeConstant.EMP_DEPARTMENT).toString()); + + User user = new User(); + user.setTerminated((boolean) empl.get(UserConstant.USR_TERMINATED)); + user.setUsername(empl.get(UserConstant.USR_NAME).toString()); + user.setPassword(empl.get(UserConstant.USR_PASSWORD).toString()); + + try { + UserDaoImpl userDao = new UserDaoImpl(); + EmployeeDAOImpl employeeDao = new EmployeeDAOImpl(); + employeeDao.insert(employee); + userDao.insert(user); + return true; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public boolean checkUserExists(String username, String password) { + User user = new User(); + user.setUsername(username); + user.setPassword(password); + try { + UserDaoImpl userDao = new UserDaoImpl(); + userDao.findValidUser(user); + + return true; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } +}