Guest User

Untitled

a guest
Jul 7th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.13 KB | None | 0 0
  1. package be.kdg.carpool.services;
  2.  
  3. import be.kdg.carpool.dao.AddressDao;
  4. import be.kdg.carpool.dao.CarDao;
  5. import be.kdg.carpool.dao.PathDao;
  6. import be.kdg.carpool.dao.PointDao;
  7. import be.kdg.carpool.domain.*;
  8. import be.kdg.carpool.jsonPojos.AndriodPath;
  9. import be.kdg.carpool.jsonPojos.AndriodPathPassenger;
  10. import be.kdg.carpool.jsonPojos.AndriodPaths;
  11. import be.kdg.carpool.utility.DistanceCalculator;
  12. import be.kdg.carpool.utility.SecurityClass;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16.  
  17. import javax.annotation.Resource;
  18. import java.util.*;
  19.  
  20. /**
  21. * Created by IntelliJ IDEA.
  22. * User: Annelies
  23. * Date: 23/02/12
  24. * Time: 11:50
  25. */
  26. @Service(value = "pathService")
  27. @Transactional
  28. public class PathServiceImpl implements PathService {
  29. /**
  30. * PathDao injected by Spring via constructor
  31. */
  32. @Resource(name = "pathDao")
  33. private PathDao pathDao;
  34.  
  35. @Resource(name = "carDao")
  36. private CarDao carDao;
  37.  
  38. @Resource(name = "addressDao")
  39. private AddressDao addressDao;
  40.  
  41. @Resource(name = "pointDao")
  42. private PointDao pointDao;
  43.  
  44. @Resource(name = "profileService")
  45. private ProfileService profileService;
  46.  
  47. @Resource(name = "pathPassengerService")
  48. private PathPassengerService pathPassengerService;
  49.  
  50. @Autowired
  51. private SecurityClass securityClass;
  52.  
  53. @Override
  54. public void createPath(Path path) {
  55. pathDao.addPath(path);
  56. }
  57.  
  58. @Override
  59. public List<Path> getAllPaths() {
  60. return pathDao.getAllPaths();
  61. }
  62.  
  63. @Override
  64. public void editPath(Path path) {
  65. pathDao.edit(path);
  66. }
  67.  
  68. @Override
  69. public Path getPath(int id) {
  70. return pathDao.getPath(id);
  71. }
  72.  
  73. @Override
  74. public void deletePath(int id) {
  75. pathDao.delete(id);
  76. }
  77.  
  78. @Override
  79. public void createPath(Path path, String startPoint, int startHour, int startMin, Date date, String endPoint, int endHour, int endMin, int car, List<String> passagepoints) {
  80.  
  81. double[] location = DistanceCalculator.getCoords(startPoint);
  82. Address startAddress = DistanceCalculator.getCoords(location[0], location[1]);
  83.  
  84. Point start = new Point();
  85. start.setAddress(startAddress);
  86. start.setLatCoordinate(location[0]);
  87. start.setLngCoordinate(location[1]);
  88. /*
  89. System.out.println(startAddress.getStreet());
  90. System.out.println(startAddress.getNumber());
  91. System.out.println(startAddress.getZipCode());
  92. System.out.println(startAddress.getCity());
  93. System.out.println(startAddress.getCountry());
  94. */
  95. GregorianCalendar cal = new GregorianCalendar();
  96. cal.setTime(date);
  97. cal.set(Calendar.HOUR_OF_DAY, startHour);
  98. cal.set(Calendar.MINUTE, startMin);
  99. Date startDate = cal.getTime();
  100. start.setPassageDateTime(startDate);
  101. path.setBeginpoint(start);
  102.  
  103. double[] location2 = DistanceCalculator.getCoords(endPoint);
  104. Address endAddress = DistanceCalculator.getCoords(location2[0], location2[1]);
  105. Point end = new Point();
  106. end.setAddress(endAddress);
  107. end.setLatCoordinate(location2[0]);
  108. end.setLngCoordinate(location2[1]);
  109.  
  110. GregorianCalendar cal2 = new GregorianCalendar();
  111. cal2.setTime(date);
  112. cal2.set(Calendar.HOUR_OF_DAY, endHour);
  113. cal2.set(Calendar.MINUTE, endMin);
  114. Date endDate = cal.getTime();
  115. end.setPassageDateTime(endDate);
  116. path.setEndpoint(end);
  117.  
  118. Car c = carDao.getCar(car);
  119. path.setCar(c);
  120.  
  121. Set<Point> points = new LinkedHashSet<Point>();
  122. for (String passage : passagepoints) {
  123. double[] lo = DistanceCalculator.getCoords(passage);
  124. Address address = DistanceCalculator.getCoords(lo[0], lo[1]);
  125. Point point = new Point();
  126. point.setAddress(address);
  127. point.setLatCoordinate(lo[0]);
  128. point.setLngCoordinate(lo[1]);
  129.  
  130. GregorianCalendar cl = new GregorianCalendar();
  131. cl.setTime(date);
  132. ////////////////////////////////////
  133. cl.set(Calendar.HOUR_OF_DAY, endHour);
  134. ////////////// endMin
  135. cl.set(Calendar.MINUTE, endMin);
  136. Date d = cal.getTime();
  137. point.setPassageDateTime(d);
  138. points.add(point);
  139. }
  140. path.setPassagepunten(points);
  141. pathDao.addPath(path);
  142. }
  143.  
  144. @Override
  145. public List<Path> getAllPathsBelongTo(String username) {
  146. List<Path> paths = pathDao.getAllPathsBelongTo(username);
  147. if (paths == null) return new ArrayList<Path>();
  148. return paths;
  149. }
  150.  
  151. @Override
  152. public boolean invite(int pathId, int beginPointId, int endPointId, String userToInvite, String currentUser) {
  153. if (pathId <= 0 || endPointId <= 0 || beginPointId <= 0) return false;
  154. if (userToInvite.isEmpty()) return false;
  155.  
  156. Path p = getPath(pathId);
  157. if (p == null) return false;
  158.  
  159. //security check: should be the owner to invite people
  160. if (!p.getCar().getProfile().getUserName().equals(currentUser)) return false;
  161.  
  162. Point beginPoint = pointDao.getPointById(beginPointId);
  163. Point endPoint = pointDao.getPointById(endPointId);
  164.  
  165. if (beginPoint == null || endPoint == null) return false;
  166. if (beginPoint.getOrder() >= endPoint.getOrder()) return false;
  167.  
  168. Profile invitee = profileService.searchProfile(userToInvite);
  169. for (PathPassenger pass : p.getPassengers()) {
  170. //an invitation already exists
  171. if (pass.getProfile().getUserName().equals(invitee.getUserName())) return false;
  172. }
  173. //cannot invite yourself
  174. if (p.getCar().getProfile().getUserName().equals(invitee.getUserName())) return false;
  175.  
  176. PathPassenger passenger = new PathPassenger(invitee, false);
  177. //adding unconfirmed (false) path passenger, user still needs to confirm
  178. passenger.setPickupPoint(beginPoint);
  179. passenger.setDropoffPoint(endPoint);
  180. p.addPassenger(passenger);
  181.  
  182. //update in db
  183. pathDao.edit(p);
  184.  
  185. return true;
  186. }
  187.  
  188. @Override
  189. public List<Path> getAllPathsAsPassengerAccepted(String username) {
  190. List<Path> paths = pathDao.getAllPathsAsPassengerAccepted(username);
  191. if (paths == null) return new ArrayList<Path>();
  192. return paths;
  193. }
  194.  
  195. @Override
  196. public List<Path> getAllPathsAsPassengerInvitation(String username) {
  197. List<Path> paths = pathDao.getAllPathsAsPassengerInvitation(username);
  198. if (paths == null) return new ArrayList<Path>();
  199. return paths;
  200. }
  201.  
  202. @Override
  203. public boolean acceptPath(int pathId, String username, String currentUser) {
  204. Path path = pathDao.getPath(pathId);
  205. //wont work if we have no Path
  206. if (path == null) return false;
  207.  
  208. PathPassenger passenger = null;
  209. for (PathPassenger ps : path.getPassengers()) {
  210. if (ps.getProfile().getUserName().equals(username)) passenger = ps;
  211. }
  212. //if no passenger was found, we cant accept
  213. if (passenger == null) return false;
  214.  
  215. //security check: should be the invitee only to accept invitations
  216. if (!passenger.getProfile().getUserName().equals(currentUser)) return false;
  217.  
  218. //accept invitation (put status to true)
  219. passenger.setPassengerStatus(true);
  220. pathPassengerService.editPathPassenger(passenger);
  221.  
  222. return true;
  223. }
  224.  
  225. @Override
  226. public boolean leavePath(int pathId, String username, String currentUser) {
  227. Path path = pathDao.getPath(pathId);
  228. //wont work if we have no Path
  229. if (path == null) return false;
  230.  
  231. PathPassenger passenger = null;
  232. for (PathPassenger ps : path.getPassengers()) {
  233. if (ps.getProfile().getUserName().equals(username)) passenger = ps;
  234. }
  235. //if no passenger was found, we cant accept
  236. if (passenger == null) return false;
  237.  
  238. //security check: should be the invitee only to be able to leave
  239. if (!passenger.getProfile().getUserName().equals(currentUser)) return false;
  240.  
  241. //decline invitation (put status to false)
  242. passenger.setPassengerStatus(false);
  243.  
  244. //db updates
  245. pathPassengerService.editPathPassenger(passenger);
  246.  
  247. return true;
  248. }
  249.  
  250. @Override
  251. public boolean deleteInvitation(int passengerId, String currentUser) {
  252. PathPassenger passenger = pathPassengerService.get(passengerId);
  253. //Cant delete unexisting
  254. if (passenger == null) return false;
  255.  
  256. //security check: the owner of the path should only be able to call this method
  257. Path path = pathDao.getPathForPathPassenger(passenger);
  258. if (path == null) return false;
  259. if (!path.getCar().getProfile().getUserName().equals(currentUser)) return false;
  260.  
  261. pathPassengerService.deletePathPassenger(passenger);
  262. //delete successful
  263. if (pathPassengerService.get(passengerId) == null) return true;
  264. //unsuccesfull
  265. return false; //To change body of implemented methods use File | Settings | File Templates.
  266. }
  267.  
  268. @Override
  269. public AndriodPaths getAndriodPaths(String userName) {
  270. AndriodPaths andriodPaths = new AndriodPaths();
  271. List<Path> pathListOwner = pathDao.getAllPathsBelongTo(userName);
  272. List<Path> pathListPassenger = pathDao.getAllPathsAsPassengerAccepted(userName);
  273. List<AndriodPath> andriodPathList = new ArrayList<AndriodPath>();
  274.  
  275. for(Path path : pathListOwner)
  276. {
  277. andriodPathList.add(getAndriodPathFromPath(path));
  278. }
  279.  
  280. for(Path path : pathListPassenger )
  281. {
  282. andriodPathList.add(getAndriodPathFromPath(path));
  283. }
  284. andriodPaths.setPathList(andriodPathList);
  285.  
  286. return andriodPaths;
  287. } //TODO TESTEN cehcekn op datum
  288.  
  289. private AndriodPath getAndriodPathFromPath(Path path)
  290. {
  291.  
  292. AndriodPath andriodPath = new AndriodPath();
  293. andriodPath.setId(path.getId());
  294. andriodPath.setPathName(path.getPathName());
  295. andriodPath.setDate(path.getDate());
  296. andriodPath.setUserName(path.getCar().getProfile().getUserName());
  297. andriodPath.setFirstName(path.getCar().getProfile().getFirstName());
  298. andriodPath.setLastName(path.getCar().getProfile().getLastName());
  299. andriodPath.setPhoneNumber(path.getCar().getProfile().getPhonenumber());
  300. andriodPath.setStatus(path.getStatus());
  301. andriodPath.setDriverPosition(path.getDriverPosition());
  302.  
  303. List<Point> points = new ArrayList<Point>();
  304. path.getBeginpoint().setOrder(-1);
  305.  
  306. points.add(path.getBeginpoint());
  307. int i = 0;
  308. for (Point p : path.getPassagepunten()) {
  309. points.add(p);
  310. i = p.getOrder();
  311. }
  312. path.getEndpoint().setOrder(i + 1);
  313. points.add(path.getEndpoint());
  314. andriodPath.setPoints(points);
  315.  
  316. List<AndriodPathPassenger> andriodPathPassengerList = new ArrayList<AndriodPathPassenger>();
  317. for(PathPassenger passenger: path.getPassengers())
  318. {
  319. AndriodPathPassenger andriodPathPassenger = new AndriodPathPassenger();
  320. andriodPathPassenger.setId(passenger.getId());
  321. andriodPathPassenger.setUserName(passenger.getProfile().getUserName());
  322. andriodPathPassenger.setFirstName(passenger.getProfile().getFirstName());
  323. andriodPathPassenger.setLastName(passenger.getProfile().getLastName());
  324. andriodPathPassenger.setPhoneNumber(passenger.getProfile().getPhonenumber());
  325. andriodPathPassenger.setPickupPoint(passenger.getPickupPoint());
  326. andriodPathPassenger.setDropoffPoint(passenger.getDropoffPoint());
  327.  
  328. andriodPathPassengerList.add(andriodPathPassenger);
  329. }
  330. andriodPath.setPassengers(andriodPathPassengerList);
  331.  
  332. return andriodPath;
  333. }
  334. }
Add Comment
Please, Sign In to add comment