Initial version
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..3814708
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,35 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.craftedsw</groupId>
+ <artifactId>socrates2012</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>socrates2012</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <version>1.3.RC2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>1.3.RC2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.0-rc1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/src/main/java/org/craftedsw/TripService_Original.java b/src/main/java/org/craftedsw/TripService_Original.java
new file mode 100644
index 0000000..406fa39
--- /dev/null
+++ b/src/main/java/org/craftedsw/TripService_Original.java
@@ -0,0 +1,36 @@
+package org.craftedsw;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.craftedsw.exceptions.UserNotLoggedInException;
+import org.craftedsw.trip.Trip;
+import org.craftedsw.trip.TripDAO;
+import org.craftedsw.user.User;
+import org.craftedsw.user.UserSession;
+
+
+
+public class TripService_Original {
+
+ public List<Trip> getTripsByUser(User user) throws UserNotLoggedInException {
+ List<Trip> tripList = new ArrayList<Trip>();
+ User loggedUser = UserSession.getInstance().getLoggedUser();
+ boolean isFriend = false;
+ if (loggedUser != null) {
+ for (User friend : user.getFriends()) {
+ if (friend.equals(loggedUser)) {
+ isFriend = true;
+ break;
+ }
+ }
+ if (isFriend) {
+ tripList = TripDAO.findTripsByUser(user);
+ }
+ return tripList;
+ } else {
+ throw new UserNotLoggedInException();
+ }
+ }
+
+}
diff --git a/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java b/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java
new file mode 100644
index 0000000..9d2f03b
--- /dev/null
+++ b/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java
@@ -0,0 +1,25 @@
+package org.craftedsw.exceptions;
+
+public class DependendClassCallDuringUnitTestException extends RuntimeException {
+
+ private static final long serialVersionUID = -4584041339906109902L;
+
+ public DependendClassCallDuringUnitTestException() {
+ super();
+ }
+
+ public DependendClassCallDuringUnitTestException(String message,
+ Throwable cause) {
+ super(message, cause);
+ }
+
+ public DependendClassCallDuringUnitTestException(String message) {
+ super(message);
+ }
+
+ public DependendClassCallDuringUnitTestException(Throwable cause) {
+ super(cause);
+ }
+
+
+}
diff --git a/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java b/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java
new file mode 100644
index 0000000..a163064
--- /dev/null
+++ b/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java
@@ -0,0 +1,7 @@
+package org.craftedsw.exceptions;
+
+public class UserNotLoggedInException extends Exception {
+
+ private static final long serialVersionUID = 8959479918185637340L;
+
+}
diff --git a/src/main/java/org/craftedsw/trip/Trip.java b/src/main/java/org/craftedsw/trip/Trip.java
new file mode 100644
index 0000000..b689af4
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/Trip.java
@@ -0,0 +1,5 @@
+package org.craftedsw.trip;
+
+public class Trip {
+
+}
diff --git a/src/main/java/org/craftedsw/trip/TripDAO.java b/src/main/java/org/craftedsw/trip/TripDAO.java
new file mode 100644
index 0000000..7992033
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/TripDAO.java
@@ -0,0 +1,21 @@
+package org.craftedsw.trip;
+
+import java.util.List;
+
+import org.craftedsw.exceptions.DependendClassCallDuringUnitTestException;
+import org.craftedsw.user.User;
+
+
+
+public class TripDAO {
+
+ public static List<Trip> findTripsByUser(User user) {
+ throw new DependendClassCallDuringUnitTestException(
+ "TripDAO should not be invoked on an unit test.");
+ }
+
+ public List<Trip> findTripsBy(User user) {
+ return TripDAO.findTripsByUser(user);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/craftedsw/trip/TripService.java b/src/main/java/org/craftedsw/trip/TripService.java
new file mode 100644
index 0000000..664ae84
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/TripService.java
@@ -0,0 +1,32 @@
+package org.craftedsw.trip;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.craftedsw.exceptions.UserNotLoggedInException;
+import org.craftedsw.user.User;
+import org.craftedsw.user.UserSession;
+
+
+public class TripService {
+
+ public List<Trip> getTripsByUser(User user) throws UserNotLoggedInException {
+ List<Trip> tripList = new ArrayList<Trip>();
+ User loggedUser = UserSession.getInstance().getLoggedUser();
+ boolean isFriend = false;
+ if (loggedUser != null) {
+ for (User friend : user.getFriends()) {
+ if (friend.equals(loggedUser)) {
+ isFriend = true;
+ break;
+ }
+ }
+ if (isFriend) {
+ tripList = TripDAO.findTripsByUser(user);
+ }
+ return tripList;
+ } else {
+ throw new UserNotLoggedInException();
+ }
+ }
+}
diff --git a/src/main/java/org/craftedsw/user/User.java b/src/main/java/org/craftedsw/user/User.java
new file mode 100644
index 0000000..f1749c3
--- /dev/null
+++ b/src/main/java/org/craftedsw/user/User.java
@@ -0,0 +1,30 @@
+package org.craftedsw.user;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.craftedsw.trip.Trip;
+
+
+public class User {
+
+ private List<Trip> trips = new ArrayList<Trip>();
+ private List<User> friends = new ArrayList<User>();
+
+ public List<User> getFriends() {
+ return friends;
+ }
+
+ public void addFriend(User user) {
+ friends.add(user);
+ }
+
+ public void addTrip(Trip trip) {
+ trips.add(trip);
+ }
+
+ public List<Trip> trips() {
+ return trips;
+ }
+
+}
diff --git a/src/main/java/org/craftedsw/user/UserSession.java b/src/main/java/org/craftedsw/user/UserSession.java
new file mode 100644
index 0000000..4a229d5
--- /dev/null
+++ b/src/main/java/org/craftedsw/user/UserSession.java
@@ -0,0 +1,26 @@
+package org.craftedsw.user;
+
+import org.craftedsw.exceptions.DependendClassCallDuringUnitTestException;
+
+public class UserSession {
+
+ private static final UserSession userSession = new UserSession();
+
+ private UserSession() {
+ }
+
+ public static UserSession getInstance() {
+ return userSession;
+ }
+
+ public boolean isUserLoggedIn(User user) {
+ throw new DependendClassCallDuringUnitTestException(
+ "UserSession.isUserLoggedIn() should not be called in an unit test");
+ }
+
+ public User getLoggedUser() {
+ throw new DependendClassCallDuringUnitTestException(
+ "UserSession.getLoggedUser() should not be called in an unit test");
+ }
+
+}
diff --git a/src/test/java/org/craftedsw/trip/TripServiceTest.java b/src/test/java/org/craftedsw/trip/TripServiceTest.java
new file mode 100644
index 0000000..e2d83f1
--- /dev/null
+++ b/src/test/java/org/craftedsw/trip/TripServiceTest.java
@@ -0,0 +1,6 @@
+package org.craftedsw.trip;
+
+public class TripServiceTest {
+
+
+}