diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/App.java b/data-mapper/src/main/java/com/iluwatar/datamapper/App.java
index 6345b5a4c..8b5853609 100644
--- a/data-mapper/src/main/java/com/iluwatar/datamapper/App.java
+++ b/data-mapper/src/main/java/com/iluwatar/datamapper/App.java
@@ -1,105 +1,104 @@
-/**
- * The MIT License Copyright (c) 2014 Ilkka Seppälä
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package com.iluwatar.datamapper;
-
-import java.util.Optional;
-import java.util.UUID;
-
-import org.apache.log4j.Logger;
-
-/**
- *
- * The Data Mapper (DM) is a layer of software that separates the in-memory objects from the
- * database. Its responsibility is to transfer data between the two and also to isolate them from
- * each other. With Data Mapper the in-memory objects needn't know even that there's a database
- * present; they need no SQL interface code, and certainly no knowledge of the database schema. (The
- * database schema is always ignorant of the objects that use it.) Since it's a form of Mapper ,
- * Data Mapper itself is even unknown to the domain layer.
- *
- * The below example demonstrates basic CRUD operations: select, add, update, and delete.
- *
- */
-public final class App {
-
- private static Logger log = Logger.getLogger(App.class);
-
-
- private static final String DB_TYPE_ORACLE = "Oracle";
- private static final String DB_TYPE_MYSQL = "MySQL";
-
-
- /**
- * Program entry point.
- *
- * @param args command line args.
- */
- public static final void main(final String... args) {
-
- if (log.isInfoEnabled() & args.length > 0) {
- log.debug("App.main(), db type: " + args[0]);
- }
-
- StudentDataMapper mapper = null;
-
- /* Check the desired db type from runtime arguments */
- if (args.length == 0) {
-
- /* Create default data mapper for mysql */
- mapper = new StudentMySQLDataMapper();
-
- } else if (args.length > 0 && DB_TYPE_ORACLE.equalsIgnoreCase(args[0])) {
-
- /* Create new data mapper for mysql */
- mapper = new StudentMySQLDataMapper();
-
- } else if (args.length > 0 && DB_TYPE_MYSQL.equalsIgnoreCase(args[0])) {
-
- /* Create new data mapper for oracle */
- mapper = new StudentMySQLDataMapper();
- } else {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Following data source(" + args[0] + ") is not supported");
- }
-
- /* Create new student */
- Student student = new Student(UUID.randomUUID(), 1, "Adam", 'A');
-
- /* Add student in respectibe db */
- mapper.insert(student);
-
- /* Find this student */
- final Optional studentToBeFound = mapper.find(student.getGuId());
-
- if (log.isDebugEnabled()) {
- log.debug("App.main(), db find returned : " + studentToBeFound);
- }
-
- /* Update existing student object */
- student = new Student(student.getGuId(), 1, "AdamUpdated", 'A');
-
- /* Update student in respectibe db */
- mapper.update(student);
-
- /* Delete student in db */
- mapper.delete(student);
- }
-
- private App() {}
-}
+/**
+ * The MIT License Copyright (c) 2014 Ilkka Seppälä
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+import java.util.Optional;
+
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * The Data Mapper (DM) is a layer of software that separates the in-memory objects from the
+ * database. Its responsibility is to transfer data between the two and also to isolate them from
+ * each other. With Data Mapper the in-memory objects needn't know even that there's a database
+ * present; they need no SQL interface code, and certainly no knowledge of the database schema. (The
+ * database schema is always ignorant of the objects that use it.) Since it's a form of Mapper ,
+ * Data Mapper itself is even unknown to the domain layer.
+ *
+ * The below example demonstrates basic CRUD operations: Create, Read, Update, and Delete.
+ *
+ */
+public final class App {
+
+ private static Logger log = Logger.getLogger(App.class);
+
+
+ private static final String DB_TYPE_ORACLE = "Oracle";
+ private static final String DB_TYPE_MYSQL = "MySQL";
+
+
+ /**
+ * Program entry point.
+ *
+ * @param args command line args.
+ */
+ public static final void main(final String... args) {
+
+ if (log.isInfoEnabled() & args.length > 0) {
+ log.debug("App.main(), db type: " + args[0]);
+ }
+
+ StudentDataMapper mapper = null;
+
+ /* Check the desired db type from runtime arguments */
+ if (args.length == 0) {
+
+ /* Create default data mapper for mysql */
+ mapper = new StudentMySQLDataMapper();
+
+ } else if (args.length > 0 && DB_TYPE_ORACLE.equalsIgnoreCase(args[0])) {
+
+ /* Create new data mapper for mysql */
+ mapper = new StudentMySQLDataMapper();
+
+ } else if (args.length > 0 && DB_TYPE_MYSQL.equalsIgnoreCase(args[0])) {
+
+ /* Create new data mapper for oracle */
+ mapper = new StudentMySQLDataMapper();
+ } else {
+
+ /* Don't couple any Data Mapper to java.sql.SQLException */
+ throw new DataMapperException("Following data mapping type(" + args[0] + ") is not supported");
+ }
+
+ /* Create new student */
+ Student student = new Student(1, "Adam", 'A');
+
+ /* Add student in respectibe db */
+ mapper.insert(student);
+
+ /* Find this student */
+ final Optional studentToBeFound = mapper.find(student.getStudentId());
+
+ if (log.isDebugEnabled()) {
+ log.debug("App.main(), db find returned : " + studentToBeFound);
+ }
+
+ /* Update existing student object */
+ student = new Student(student.getStudentId(), "AdamUpdated", 'A');
+
+ /* Update student in respectibe db */
+ mapper.update(student);
+
+ /* Delete student in db */
+ mapper.delete(student);
+ }
+
+ private App() {}
+}
diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/Student.java b/data-mapper/src/main/java/com/iluwatar/datamapper/Student.java
index 920d4d9ee..2f0c6d0a6 100644
--- a/data-mapper/src/main/java/com/iluwatar/datamapper/Student.java
+++ b/data-mapper/src/main/java/com/iluwatar/datamapper/Student.java
@@ -1,83 +1,103 @@
-/**
- * The MIT License Copyright (c) 2016 Amit Dixit
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package com.iluwatar.datamapper;
-
-import java.io.Serializable;
-import java.util.UUID;
-
-public final class Student implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private UUID guid;
- private int studentID;
- private String name;
- private char grade;
-
- public Student() {
- this.guid = UUID.randomUUID();
- }
-
- public Student(final UUID guid, final int studentID, final String name, final char grade) {
- super();
-
- this.guid = guid;
- this.studentID = studentID;
- this.name = name;
- this.grade = grade;
- }
-
-
- public Student(final UUID guid) {
- this.guid = guid;
- }
-
- public final int getStudentId() {
- return studentID;
- }
-
- public final void setStudentId(final int studentID) {
- this.studentID = studentID;
- }
-
- public final String getName() {
- return name;
- }
-
- public final void setName(final String name) {
- this.name = name;
- }
-
- public final char getGrade() {
- return grade;
- }
-
- public final void setGrade(final char grade) {
- this.grade = grade;
- }
-
- public final UUID getGuId() {
- return guid;
- }
-
- @Override
- public final String toString() {
- return "Student [guid=" + guid + ", studentID=" + studentID + ", name=" + name + ", grade=" + grade + "]";
- }
-}
+/**
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+
+import java.io.Serializable;
+
+public final class Student implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private int studentId;
+ private String name;
+ private char grade;
+
+ public Student() {
+
+ }
+
+ public Student(final int studentId, final String name, final char grade) {
+ super();
+
+ this.studentId = studentId;
+ this.name = name;
+ this.grade = grade;
+ }
+
+ public final int getStudentId() {
+ return studentId;
+ }
+
+ public final void setStudentId(final int studentId) {
+ this.studentId = studentId;
+ }
+
+ public final String getName() {
+ return name;
+ }
+
+ public final void setName(final String name) {
+ this.name = name;
+ }
+
+ public final char getGrade() {
+ return grade;
+ }
+
+ public final void setGrade(final char grade) {
+ this.grade = grade;
+ }
+
+ @Override
+ public boolean equals(final Object inputObject) {
+
+ boolean isEqual = false;
+
+ /* Check if both objects are same */
+ if (this == inputObject) {
+
+ isEqual = true;
+ }
+ /* Check if objects belong to same class */
+ else if (inputObject != null && getClass() == inputObject.getClass()) {
+
+ final Student student = (Student) inputObject;
+
+ /* If student id matched */
+ if (this.getStudentId() == student.getStudentId()) {
+
+ isEqual = true;
+ }
+ }
+ return isEqual;
+ }
+
+ @Override
+ public int hashCode() {
+
+ /* Student id is assumed to be unique */
+ return this.getStudentId();
+ }
+
+ @Override
+ public final String toString() {
+ return "Student [studentId=" + studentId + ", name=" + name + ", grade=" + grade + "]";
+ }
+}
diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentDataMapper.java b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentDataMapper.java
index 2493a9478..1fa33e067 100644
--- a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentDataMapper.java
+++ b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentDataMapper.java
@@ -1,33 +1,32 @@
-/**
- * The MIT License Copyright (c) 2016 Amit Dixit
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package com.iluwatar.datamapper;
-
-import java.util.Optional;
-import java.util.UUID;
-
-public interface StudentDataMapper {
-
- public Optional find(final UUID uniqueID) throws DataMapperException;
-
- public void insert(final Student student) throws DataMapperException;
-
- public void update(final Student student) throws DataMapperException;
-
- public void delete(final Student student) throws DataMapperException;
-}
+/**
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+import java.util.Optional;
+
+public interface StudentDataMapper {
+
+ public Optional find(final int studentId);
+
+ public void insert(final Student student) throws DataMapperException;
+
+ public void update(final Student student) throws DataMapperException;
+
+ public void delete(final Student student) throws DataMapperException;
+}
diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentMySQLDataMapper.java b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentMySQLDataMapper.java
index 7520bc923..cbb97bfa9 100644
--- a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentMySQLDataMapper.java
+++ b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentMySQLDataMapper.java
@@ -1,160 +1,97 @@
-/**
- * The MIT License Copyright (c) 2016 Amit Dixit
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package com.iluwatar.datamapper;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Optional;
-import java.util.UUID;
-
-public final class StudentMySQLDataMapper implements StudentDataMapper {
-
- @Override
- public final Optional find(final UUID uniqueID) throws DataMapperException {
-
- try {
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/MySQL", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "SELECT `guid`, `grade`, `studentID`, `name` FROM `students` where `guid`=?";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set unique id in sql statement */
- dbStatement.setString(1, uniqueID.toString());
-
- /* Execute the sql query */
- final ResultSet rs = dbStatement.executeQuery();
-
- while (rs.next()) {
-
- /* Create new student */
- final Student student = new Student(UUID.fromString(rs.getString("guid")));
-
- /* Set all values from database in java object */
- student.setName(rs.getString("name"));
- student.setGrade(rs.getString("grade").charAt(0));
- student.setStudentId(rs.getInt("studentID"));
-
- return Optional.of(student);
- }
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from MySQL data source.", e);
- }
-
- /* Return empty value */
- return Optional.empty();
- }
-
- @Override
- public final void update(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/MySQL", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "UPDATE `students` SET `grade`=?, `studentID`=?, `name`=? where `guid`=?";
-
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, Character.toString(student.getGrade()));
- dbStatement.setInt(2, student.getStudentId());
- dbStatement.setString(3, student.getName());
- dbStatement.setString(4, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from MySQL data source.", e);
- }
- }
-
- @Override
- public final void insert(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/MySQL", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "INSERT INTO `students` (`grade`, `studentID`, `name`, `guid`) VALUES (?, ?, ?, ?)";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, Character.toString(student.getGrade()));
- dbStatement.setInt(2, student.getStudentId());
- dbStatement.setString(3, student.getName());
- dbStatement.setString(4, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from MySQL data source.", e);
- }
- }
-
- @Override
- public final void delete(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/MySQL", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "DELETE FROM `students` where `guid`=?";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from MySQL data source.", e);
- }
- }
-}
+/**
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+import java.util.List;
+import java.util.Optional;
+
+public final class StudentMySQLDataMapper implements StudentDataMapper {
+
+ /* Note: Normally this would be in the form of an actual database */
+ private List students;
+
+ @Override
+ public final Optional find(final int studentId) {
+
+ /* Compare with existing students */
+ for (final Student student : this.students) {
+
+ /* Check if student is found */
+ if (student.getStudentId() == studentId) {
+
+ return Optional.of(student);
+ }
+ }
+
+ /* Return empty value */
+ return Optional.empty();
+ }
+
+ @Override
+ public final void update(final Student studentToBeUpdated) throws DataMapperException {
+
+
+ /* Check with existing students */
+ if (this.students.contains(studentToBeUpdated)) {
+
+ /* Get the index of student in list */
+ final int index = this.students.indexOf(studentToBeUpdated);
+
+ /* Update the student in list */
+ this.students.set(index, studentToBeUpdated);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student [" + studentToBeUpdated.getName() + "] is not found");
+ }
+ }
+
+ @Override
+ public final void insert(final Student studentToBeInserted) throws DataMapperException {
+
+ /* Check with existing students */
+ if (!this.students.contains(studentToBeInserted)) {
+
+ /* Add student in list */
+ this.students.add(studentToBeInserted);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student already [" + studentToBeInserted.getName() + "] exists");
+ }
+ }
+
+ @Override
+ public final void delete(final Student studentToBeDeleted) throws DataMapperException {
+
+ /* Check with existing students */
+ if (this.students.contains(studentToBeDeleted)) {
+
+ /* Delete the student from list */
+ this.students.remove(studentToBeDeleted);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student [" + studentToBeDeleted.getName() + "] is not found");
+ }
+ }
+}
diff --git a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentOracleDataMapper.java b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentOracleDataMapper.java
index 0b6b7ebbf..6abf1c55a 100644
--- a/data-mapper/src/main/java/com/iluwatar/datamapper/StudentOracleDataMapper.java
+++ b/data-mapper/src/main/java/com/iluwatar/datamapper/StudentOracleDataMapper.java
@@ -1,160 +1,97 @@
-/**
- * The MIT License Copyright (c) 2016 Amit Dixit
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
- * associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package com.iluwatar.datamapper;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Optional;
-import java.util.UUID;
-
-public final class StudentOracleDataMapper implements StudentDataMapper {
-
- @Override
- public final Optional find(final UUID uniqueID) throws DataMapperException {
-
- try {
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Oracle", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "SELECT `guid`, `grade`, `studentID`, `name` FROM `students` where `guid`=?";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set unique id in sql statement */
- dbStatement.setString(1, uniqueID.toString());
-
- /* Execute the sql query */
- final ResultSet rs = dbStatement.executeQuery();
-
- while (rs.next()) {
-
- /* Create new student */
- final Student student = new Student(UUID.fromString(rs.getString("guid")));
-
- /* Set all values from database in java object */
- student.setName(rs.getString("name"));
- student.setGrade(rs.getString("grade").charAt(0));
- student.setStudentId(rs.getInt("studentID"));
-
- return Optional.of(student);
- }
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from Oracle data source.", e);
- }
-
- /* Return empty value */
- return Optional.empty();
- }
-
- @Override
- public final void update(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Oracle", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "UPDATE `students` SET `grade`=?, `studentID`=?, `name`=? where `guid`=?";
-
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, Character.toString(student.getGrade()));
- dbStatement.setInt(2, student.getStudentId());
- dbStatement.setString(3, student.getName());
- dbStatement.setString(4, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from Oracle data source.", e);
- }
- }
-
- @Override
- public final void insert(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Oracle", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "INSERT INTO `students` (`grade`, `studentID`, `name`, `guid`) VALUES (?, ?, ?, ?)";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, Character.toString(student.getGrade()));
- dbStatement.setInt(2, student.getStudentId());
- dbStatement.setString(3, student.getName());
- dbStatement.setString(4, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from Oracle data source.", e);
- }
- }
-
- @Override
- public final void delete(final Student student) throws DataMapperException {
- try {
-
- /* OracleDriver class cant be initilized directly */
- Class.forName("oracle.jdbc.driver.OracleDriver");
-
- /* Create new connection */
- final Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Oracle", "username", "password");
-
- /* Create new Oracle compliant sql statement */
- final String statement = "DELETE FROM `students` where `guid`=?";
- final PreparedStatement dbStatement = connection.prepareStatement(statement);
-
- /* Set java object values in sql statement */
- dbStatement.setString(1, student.getGuId().toString());
-
- /* Execute the sql query */
- dbStatement.executeUpdate();
-
- } catch (final SQLException | ClassNotFoundException e) {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Error occured reading Students from Oracle data source.", e);
- }
- }
-}
+/**
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+import java.util.List;
+import java.util.Optional;
+
+public final class StudentOracleDataMapper implements StudentDataMapper {
+
+ /* Note: Normally this would be in the form of an actual database */
+ private List students;
+
+ @Override
+ public final Optional find(final int studentId) {
+
+ /* Compare with existing students */
+ for (final Student student : this.students) {
+
+ /* Check if student is found */
+ if (student.getStudentId() == studentId) {
+
+ return Optional.of(student);
+ }
+ }
+
+ /* Return empty value */
+ return Optional.empty();
+ }
+
+ @Override
+ public final void update(final Student studentToBeUpdated) throws DataMapperException {
+
+
+ /* Check with existing students */
+ if (this.students.contains(studentToBeUpdated)) {
+
+ /* Get the index of student in list */
+ final int index = this.students.indexOf(studentToBeUpdated);
+
+ /* Update the student in list */
+ this.students.set(index, studentToBeUpdated);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student [" + studentToBeUpdated.getName() + "] is not found");
+ }
+ }
+
+ @Override
+ public final void insert(final Student studentToBeInserted) throws DataMapperException {
+
+ /* Check with existing students */
+ if (!this.students.contains(studentToBeInserted)) {
+
+ /* Add student in list */
+ this.students.add(studentToBeInserted);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student already [" + studentToBeInserted.getName() + "] exists");
+ }
+ }
+
+ @Override
+ public final void delete(final Student studentToBeDeleted) throws DataMapperException {
+
+ /* Check with existing students */
+ if (this.students.contains(studentToBeDeleted)) {
+
+ /* Delete the student from list */
+ this.students.remove(studentToBeDeleted);
+
+ } else {
+
+ /* Throw user error */
+ throw new DataMapperException("Student [" + studentToBeDeleted.getName() + "] is not found");
+ }
+ }
+}