PageRenderTime 66ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/TrainingAppMVC_GH83_latest_serverVersion5/src/model/TrainingDao.java

https://bitbucket.org/ziejaCODE/trainingapp-vs.2.0
Java | 945 lines | 504 code | 238 blank | 203 comment | 28 complexity | 59e5b7c5228f607efd34051582e4e0c6 MD5 | raw file
  1. package model;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.sql.DataSource;
  10. import javax.validation.constraints.Size;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.dao.DataAccessException;
  13. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  14. import org.springframework.jdbc.core.JdbcTemplate;
  15. import org.springframework.jdbc.core.ResultSetExtractor;
  16. import org.springframework.jdbc.core.RowMapper;
  17. import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
  18. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  19. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  20. import org.springframework.stereotype.Component;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import controllers.TrainingRowMapper;
  23. @Component("trainingDao")
  24. public class TrainingDao {
  25. // - FIELD SETTING
  26. private NamedParameterJdbcTemplate database1;
  27. // data source is set using JDBC
  28. @Autowired
  29. public void setDataSource(DataSource dataSource) {
  30. this.database1 = new NamedParameterJdbcTemplate(dataSource);
  31. }
  32. public TrainingDao() {}
  33. // - SINGLE TRAINING PRESENTATION
  34. // this method will return one training from database for today day
  35. //@Transactional
  36. public Training getTraining(String userName, String weekDay) {
  37. // get training name
  38. MapSqlParameterSource parameter1 = new MapSqlParameterSource();
  39. parameter1.addValue("userName", userName);
  40. parameter1.addValue("weekDay", weekDay);
  41. //System.out.println("weekDay " + weekDay + " user " + userName);
  42. Training training = database1.queryForObject(
  43. "select * from training, users where training.userName=:userName"
  44. + " and users.userName=:userName and training.weekDay = :weekDay and users.enabled=true",
  45. parameter1, new TrainingRowMapper());
  46. String trainingName = training.getTrainingName();
  47. System.out.println("Training name " + trainingName);
  48. parameter1.addValue("trainingName", trainingName);
  49. System.out.println("training name is " + trainingName); // test
  50. // get all exercises from that training
  51. List<Exercise> exercises = database1.query(
  52. "select * from" + " trainingSchedule where trainingName=:trainingName", parameter1,
  53. new RowMapper<Exercise>() {
  54. public Exercise mapRow(ResultSet rs, int rowNum) throws SQLException {
  55. Exercise exercise = new Exercise();
  56. exercise.setNameOfExercise(rs.getString("exerciseName"));
  57. exercise.setGroupId(rs.getInt("groupId"));
  58. int groupId = exercise.getGroupId();
  59. MapSqlParameterSource parameter = new MapSqlParameterSource();
  60. parameter.addValue("groupId", groupId);
  61. System.out.println("Group id is: " + groupId);
  62. // get all sets from each exercise
  63. List<Set> sets = database1.query(
  64. "select setNo, repsNo, weight from setPlan where groupId=:groupId", parameter,
  65. new RowMapper<Set>() {
  66. public Set mapRow(ResultSet rs, int rowNum) throws SQLException {
  67. Set set = new Set();
  68. set.setSetNo(rs.getInt("setNo"));
  69. set.setReps(rs.getInt("repsNo"));
  70. set.setWeight(rs.getDouble("weight"));
  71. return set;
  72. }
  73. });
  74. exercise.setSets(sets);
  75. return exercise;
  76. }
  77. });
  78. training.setExercises(exercises);
  79. return training;
  80. }
  81. // this method will present full training to the user
  82. @Transactional
  83. public Training presentTraining(String username, String trainingName) {
  84. System.out.println("requested trainig is " + trainingName + " username " + username);
  85. // Training training = new Training();
  86. MapSqlParameterSource parameter1 = new MapSqlParameterSource();
  87. parameter1.addValue("trainingName", trainingName);
  88. parameter1.addValue("userName", username);
  89. System.out.println("1 requested trainig is " + trainingName + " username " + username);
  90. Training training = null;
  91. try {
  92. training = database1.queryForObject(
  93. "select * from training, users where training.userName=:userName"
  94. + " and users.userName=:userName and training.trainingName = :trainingName and users.enabled=true",
  95. parameter1, new TrainingRowMapper());
  96. } catch (DataAccessException e) {
  97. System.out.println("traning not extracted " + training);
  98. e.printStackTrace();
  99. }
  100. // get all exercises from that training
  101. List<Exercise> exercises = null;
  102. try {
  103. exercises = database1.query(
  104. "select * from" + " trainingSchedule where trainingName=:trainingName", parameter1,
  105. new RowMapper<Exercise>() {
  106. public Exercise mapRow(ResultSet rs, int rowNum) throws SQLException {
  107. Exercise exercise = new Exercise();
  108. exercise.setNameOfExercise(rs.getString("exerciseName"));
  109. exercise.setGroupId(rs.getInt("groupId"));
  110. int groupId = exercise.getGroupId();
  111. MapSqlParameterSource parameter = new MapSqlParameterSource();
  112. parameter.addValue("groupId", groupId);
  113. System.out.println("Group id is: " + groupId);
  114. // get all sets from each exercise
  115. List<Set> sets = database1.query(
  116. "select setId, setNo, repsNo, weight from setPlan where groupId=:groupId", parameter,
  117. new RowMapper<Set>() {
  118. public Set mapRow(ResultSet rs, int rowNum) throws SQLException {
  119. System.out.println("setId is " + rs.getInt("setId"));
  120. Set set = new Set();
  121. set.setSetNo(rs.getInt("setNo"));
  122. set.setReps(rs.getInt("repsNo"));
  123. set.setWeight(rs.getDouble("weight"));
  124. return set;
  125. }
  126. });
  127. exercise.setSets(sets);
  128. return exercise;
  129. }
  130. });
  131. } catch (DataAccessException e) {
  132. System.out.println("Rest of traning not extracted " + training);
  133. e.printStackTrace();
  134. }
  135. training.setTrainingName(trainingName);
  136. // training.setWeekDay(weekDay);
  137. System.out.println("2 requested trainig is " + trainingName + "username " + username);
  138. training.setExercises(exercises);
  139. return training;
  140. }
  141. // - GROUP OF TRAININGS EXTRACTION
  142. // this method will return all training's for particular user
  143. @Transactional
  144. public List<Training> getUsersTrainings(String userName) {
  145. MapSqlParameterSource parameter = new MapSqlParameterSource();
  146. parameter.addValue("userName", userName);
  147. //System.out.println("DaohowUsersTrainings on place");
  148. return database1.query("select * from training, users where training.userName=:userName"
  149. + " and users.userName=:userName and users.enabled=true", parameter, new TrainingRowMapper());
  150. }
  151. // this method will return all training's from database -------- ADMIN USE
  152. public List<Training> getTrainings() {
  153. return database1.query(
  154. "select * from training, users where training.username=users.username and users.enabled=true",
  155. new TrainingRowMapper());
  156. }
  157. // this method will display all public training available for registered users
  158. public List<Training> getPublicOrExampleTraining(String userName) {
  159. return database1.query("select * from training where username ='" + userName + "'", new RowMapper<Training>() {
  160. public Training mapRow(ResultSet rs, int rowNum) throws SQLException {
  161. Training training = new Training();
  162. training.setTrainingName(rs.getString("trainingName"));
  163. return training;
  164. }
  165. });
  166. }
  167. // - CHECK IF EXISTS
  168. // method that checks if training exists I
  169. public boolean trainingExists(String userName, String trainingName) {
  170. MapSqlParameterSource parameter = new MapSqlParameterSource();
  171. parameter.addValue("userName", userName);
  172. parameter.addValue("trainingName", trainingName);
  173. // System.out.println("Exist check1 Username " + userName + "
  174. // trainingName " + trainingName); // to
  175. // remove
  176. return database1.queryForObject(
  177. "select count(*) from training where userName=:userName and trainingName=:trainingName", parameter,
  178. Integer.class) > 0;
  179. }
  180. // method that checks if training exists II
  181. public boolean trainingExists(String userName, String trainingName, String weekDay) {
  182. MapSqlParameterSource parameter = new MapSqlParameterSource();
  183. parameter.addValue("userName", userName);
  184. parameter.addValue("trainingName", trainingName);
  185. parameter.addValue("weekDay", weekDay);
  186. // System.out.println("Exist check1 Username " + userName + "
  187. // trainingName " + trainingName + " weekday " + weekDay); // to
  188. // remove
  189. return database1.queryForObject(
  190. "select count(*) from training where userName=:userName and trainingName=:trainingName and weekDay=:weekDay",
  191. parameter, Integer.class) > 0;
  192. }
  193. // method that checks if training for particular day exists
  194. public boolean trainingForDayExists(String userName, String weekDay) {
  195. // it will return list of trainings for particular day
  196. MapSqlParameterSource parameter = new MapSqlParameterSource();
  197. parameter.addValue("userName", userName);
  198. parameter.addValue("weekDay", weekDay);
  199. System.out.println("weekDay " + weekDay + " user " + userName);
  200. return database1.queryForObject("select count(*) from training where userName=:userName and weekDay=:weekDay",
  201. parameter, Integer.class) > 0;
  202. }
  203. // - CREATION AND UPDATE
  204. // this method will create new user
  205. @Transactional
  206. public boolean createTraining(Training training) {
  207. // System.out.println("Create test from dao " +
  208. // training.getTrainingName() + ", " + training.getWeekDay() + ", " +
  209. // training.getUserName() + ", " + training.toString());
  210. MapSqlParameterSource parameter = new MapSqlParameterSource();
  211. // parameter.addValue("trainingName", training.getTrainingName() + "_" +
  212. // training.getUserName());
  213. parameter.addValue("trainingName", training.getTrainingName());
  214. parameter.addValue("weekDay", training.getWeekDay());
  215. parameter.addValue("userName", training.getUserName());
  216. // System.out.println();
  217. // System.out.println("test from dao " + training.getTrainingName() + ", " + training.getWeekDay() + ", "
  218. // + training.getUserName() + ", " + training.toString());
  219. // // -
  220. try {
  221. // insert new training into database
  222. database1.update(
  223. "insert into training (trainingName, weekDay, userName) values (:trainingName, :weekDay , :userName)",
  224. parameter);
  225. // System.out.println("training table created");
  226. List<Exercise> exercises = training.getExercises();
  227. int n = 1;
  228. // System.out.println("Wszystkie cwiczenia is " + exercises.size());
  229. // System.out.println("Wszystkie cwiczenia" + exercises.toString());
  230. for (int i = 0; i < exercises.size(); i++) {
  231. parameter.addValue("exerciseName", exercises.get(i).getNameOfExercise());
  232. // System.out.println("Dane cwiczenie to" +
  233. // exercises.get(i).getNameOfExercise());
  234. database1.update(
  235. "insert into trainingSchedule (trainingName, exerciseName) values (:trainingName, :exerciseName)",
  236. parameter);
  237. // Integer groupId = database1.queryForObject( "select groupId
  238. // from trainingSchedule where trainingName=:trainingName and
  239. // exerciseName=:exerciseName ", parameter, Integer.class);
  240. // System.out.println(" this Group id is: " + groupId);// test
  241. // to
  242. // remove
  243. Integer groupId = null;
  244. List<Integer> strLst = database1.query(
  245. "select groupId from trainingSchedule where trainingName=:trainingName and exerciseName=:exerciseName ",
  246. parameter, new RowMapper<Integer>() {
  247. public Integer mapRow(ResultSet rs, int rowNum) throws SQLException {
  248. return rs.getInt(1);
  249. }
  250. });
  251. if (strLst.isEmpty()) {
  252. System.out.println(" this Group id is null: " + groupId);// test
  253. // to
  254. // remove
  255. } else if (strLst.size() == 1) { // list contains exactly 1
  256. // element
  257. groupId = strLst.get(0);
  258. // // WORKING //
  259. // List<Set> sets = exercises.get(i).getSets();
  260. //
  261. // System.out.println("Wszystkie set to " + sets.size());
  262. //
  263. // for (int j = 0; j < sets.size(); j++) {
  264. //
  265. // Set set = sets.get(j);
  266. // System.out.println("groupId is " + groupId);
  267. //
  268. // parameter.addValue("groupId", groupId);
  269. //
  270. // System.out.println("Set no is " + set.getSetNo());
  271. // parameter.addValue("setNo", set.getSetNo());
  272. //
  273. // parameter.addValue("repsNo", set.getReps());
  274. // System.out.println("repsNo is " + set.getReps());
  275. //
  276. // parameter.addValue("weight", set.getWeight());
  277. // System.out.println("weight is " + set.getWeight());
  278. //
  279. // database1.update("insert setPlan (groupId, setNo, repsNo,
  280. // weight) values (:groupId, :setNo, :repsNo, :weight)",
  281. // parameter);
  282. //
  283. // Integer setId = database1.queryForObject(
  284. // "select setId from setPlan where groupId=:groupId and
  285. // setNo=:setNo ", parameter, Integer.class);
  286. // parameter.addValue("setId", setId);
  287. // System.out.println("setId is " + setId);
  288. //
  289. // database1.update("insert sets (setId, groupId) values
  290. // (:setId, :groupId)", parameter);
  291. // }
  292. } else {
  293. // System.out.println(" list contains more than 1 elements " + strLst.size());// test
  294. // to
  295. // remove
  296. groupId = strLst.get(0 + n);
  297. n++;
  298. }
  299. // -
  300. // WORKING //
  301. List<Set> sets = exercises.get(i).getSets();
  302. // System.out.println("Wszystkie set to " + sets.size());
  303. for (int j = 0; j < sets.size(); j++) {
  304. Set set = sets.get(j);
  305. // System.out.println("groupId is " + groupId);
  306. parameter.addValue("groupId", groupId);
  307. // System.out.println("Set no is " + set.getSetNo());
  308. parameter.addValue("setNo", set.getSetNo());
  309. parameter.addValue("repsNo", set.getReps());
  310. // System.out.println("repsNo is " + set.getReps());
  311. parameter.addValue("weight", set.getWeight());
  312. // System.out.println("weight is " + set.getWeight());
  313. database1.update(
  314. "insert setPlan (groupId, setNo, repsNo, weight) values (:groupId, :setNo, :repsNo, :weight)",
  315. parameter);
  316. Integer setId = database1.queryForObject(
  317. "select setId from setPlan where groupId=:groupId and setNo=:setNo ", parameter,
  318. Integer.class);
  319. parameter.addValue("setId", setId);
  320. // System.out.println("setId is " + setId);
  321. database1.update("insert sets (setId, groupId) values (:setId, :groupId)", parameter);
  322. }
  323. }
  324. System.out.println("Training Saved");
  325. return true;
  326. } catch (DataAccessException e) {
  327. System.out.println("create not possible something is missing");
  328. e.printStackTrace();
  329. return false;
  330. }
  331. }
  332. // this method will delete full training in all tables
  333. @Transactional
  334. public boolean deleteTraining(String userName, String trainingName) {
  335. if (trainingExists(userName, trainingName)) {
  336. MapSqlParameterSource parameter = new MapSqlParameterSource();
  337. parameter.addValue("trainingName", trainingName);
  338. // parameter.addValue("weekDay", weekDay);
  339. parameter.addValue("userName", userName);
  340. // delete all from training table
  341. database1.update("delete from training where trainingName=:trainingName and userName=:userName ",
  342. parameter);
  343. //System.out.println("t Deleted");
  344. // get all related groupId
  345. final List<Integer> groupIds = new ArrayList<>();
  346. database1.query("select * from" + " trainingSchedule where trainingName=:trainingName", parameter,
  347. new RowMapper<Exercise>() {
  348. public Exercise mapRow(ResultSet rs, int rowNum) throws SQLException {
  349. Exercise exercise = new Exercise();
  350. exercise.setNameOfExercise(rs.getString("exerciseName"));
  351. exercise.setGroupId(rs.getInt("groupId"));
  352. int groupId = exercise.getGroupId();
  353. System.out.println("Group id is " + groupId);
  354. groupIds.add(groupId);
  355. return exercise;
  356. }
  357. });
  358. //System.out.println("Group ids are " + groupIds.toString());
  359. // delete all from trainingSchedule table
  360. for (int i = 0; i < groupIds.size(); i++) {
  361. try {
  362. parameter.addValue("groupId", groupIds.get(i));
  363. database1.update("delete from trainingSchedule where groupId=:groupId", parameter);
  364. } catch (DataAccessException e) {
  365. e.printStackTrace();
  366. }
  367. try {
  368. database1.update("delete from setPlan where groupId=:groupId", parameter);
  369. } catch (DataAccessException e) {
  370. e.printStackTrace();
  371. }
  372. try {
  373. database1.update("delete from sets where groupId=:groupId", parameter);
  374. } catch (DataAccessException e) {
  375. e.printStackTrace();
  376. }
  377. }
  378. //System.out.println("training deleted");
  379. //System.out.println();
  380. return true;
  381. } else {
  382. //System.out.println("training is still there");
  383. //System.out.println();
  384. return false;
  385. }
  386. }
  387. // this method will create new user
  388. @Transactional
  389. public void updateTraining(Training training, Training safeCopy) {
  390. // save old training
  391. // get new training
  392. System.out.println();
  393. System.out.println("Update test from dao " + training.getTrainingName() + ", " + training.getWeekDay() + ", "
  394. + training.getUserName());
  395. System.out.println();
  396. // System.out.println("Update test from dao " +
  397. // safeCopy.getTrainingName() + ", " + safeCopy.getWeekDay() + ", " +
  398. // safeCopy.getUserName());
  399. System.out.println();
  400. // if training exists can be updated
  401. if (trainingExists(safeCopy.getUserName(), safeCopy.getTrainingName(), safeCopy.getWeekDay())) {
  402. // System.out.println("Old training to delete exists " +
  403. // safeCopy.getTrainingName() + ", " + safeCopy.getWeekDay() + ", "
  404. // + safeCopy.getUserName());
  405. // delete old from database if training is not public
  406. if (!(safeCopy.getUserName().equalsIgnoreCase("public"))) {
  407. deleteTraining(safeCopy.getUserName(), safeCopy.getTrainingName());
  408. System.out.println("Safe copy with name " + safeCopy.getTrainingName() + " deleted");
  409. } else {
  410. System.out.println("Public cannot be deleted");
  411. }
  412. // System.out.println("Create test from dao " +
  413. // safeCopy.getTrainingName() + ", " + safeCopy.getWeekDay() + ", "
  414. // + safeCopy.getUserName() + ", " + safeCopy.toString());
  415. MapSqlParameterSource safeCopyParameter = new MapSqlParameterSource();
  416. safeCopyParameter.addValue("trainingName", safeCopy.getTrainingName());
  417. safeCopyParameter.addValue("weekDay", safeCopy.getWeekDay());
  418. safeCopyParameter.addValue("userName", safeCopy.getUserName());
  419. // System.out.println("Create test from dao " +
  420. // training.getTrainingName() + ", " + training.getWeekDay() + ", "
  421. // + training.getUserName() + ", " + training.toString());
  422. MapSqlParameterSource parameter = new MapSqlParameterSource();
  423. parameter.addValue("trainingName", training.getTrainingName());
  424. parameter.addValue("weekDay", training.getWeekDay());
  425. parameter.addValue("userName", training.getUserName());
  426. // System.out.println();
  427. // System.out.println("test from dao " + training.getTrainingName()
  428. // + ", " + training.getWeekDay() + ", "
  429. // + training.getUserName() + ", " + training.toString());
  430. // -
  431. try {
  432. database1.update(
  433. "insert into training (trainingName, weekDay, userName) values (:trainingName, :weekDay , :userName)",
  434. parameter);
  435. System.out.println("training table updated");
  436. } catch (DataAccessException e) {
  437. e.printStackTrace();
  438. }
  439. List<Exercise> exercises = training.getExercises();
  440. // System.out.println("Wszystkie cwiczenia is " + exercises.size());
  441. // System.out.println("Wszystkie cwiczenia" + exercises.toString());
  442. int n = 1;
  443. for (int i = 0; i < exercises.size(); i++) {
  444. parameter.addValue("exerciseName", exercises.get(i).getNameOfExercise());
  445. // System.out.println("Dane cwiczenie to" +
  446. // exercises.get(i).getNameOfExercise());
  447. database1.update(
  448. "insert into trainingSchedule (trainingName, exerciseName) values (:trainingName, :exerciseName)",
  449. parameter);
  450. Integer groupId = null;
  451. // try {
  452. // groupId = database1.queryForObject( "select groupId from
  453. // trainingSchedule where trainingName=:trainingName and
  454. // exerciseName=:exerciseName ", parameter, Integer.class);
  455. // } catch (DataAccessException e) {
  456. // System.out.println("\n Extracting Group id failed: " +
  457. // groupId);// test to remove
  458. // System.out.println();
  459. // e.printStackTrace();
  460. // }
  461. List<Integer> strLst = database1.query(
  462. "select groupId from trainingSchedule where trainingName=:trainingName and exerciseName=:exerciseName ",
  463. parameter, new RowMapper<Integer>() {
  464. public Integer mapRow(ResultSet rs, int rowNum) throws SQLException {
  465. return rs.getInt(1);
  466. }
  467. });
  468. if (strLst.isEmpty()) {
  469. System.out.println(" this Group id is null: " + groupId);// test
  470. // to
  471. // remove
  472. } else if (strLst.size() == 1) { // list contains exactly 1
  473. // element
  474. groupId = strLst.get(0);
  475. // // WORKING //
  476. // List<Set> sets = exercises.get(i).getSets();
  477. //
  478. // System.out.println("Wszystkie set to " + sets.size());
  479. //
  480. // for (int j = 0; j < sets.size(); j++) {
  481. //
  482. // Set set = sets.get(j);
  483. // System.out.println("groupId is " + groupId);
  484. //
  485. // parameter.addValue("groupId", groupId);
  486. //
  487. // System.out.println("Set no is " + set.getSetNo());
  488. // parameter.addValue("setNo", set.getSetNo());
  489. //
  490. // parameter.addValue("repsNo", set.getReps());
  491. // System.out.println("repsNo is " + set.getReps());
  492. //
  493. // parameter.addValue("weight", set.getWeight());
  494. // System.out.println("weight is " + set.getWeight());
  495. //
  496. // database1.update("insert setPlan (groupId, setNo, repsNo,
  497. // weight) values (:groupId, :setNo, :repsNo, :weight)",
  498. // parameter);
  499. //
  500. // Integer setId = database1.queryForObject(
  501. // "select setId from setPlan where groupId=:groupId and
  502. // setNo=:setNo ", parameter, Integer.class);
  503. // parameter.addValue("setId", setId);
  504. // System.out.println("setId is " + setId);
  505. //
  506. // database1.update("insert sets (setId, groupId) values
  507. // (:setId, :groupId)", parameter);
  508. // }
  509. } else {
  510. System.out.println(" list contains more than 1 elements " + strLst.size());// test
  511. // to
  512. // remove
  513. groupId = strLst.get(0 + n);
  514. n++;
  515. }
  516. // WORKING //
  517. List<Set> sets = exercises.get(i).getSets();
  518. System.out.println("Wszystkie set to " + sets.size());
  519. for (int j = 0; j < sets.size(); j++) {
  520. Set set = sets.get(j);
  521. System.out.println("groupId is " + groupId);
  522. parameter.addValue("groupId", groupId);
  523. System.out.println("Set no is " + set.getSetNo());
  524. parameter.addValue("setNo", set.getSetNo());
  525. parameter.addValue("repsNo", set.getReps());
  526. System.out.println("repsNo is " + set.getReps());
  527. parameter.addValue("weight", set.getWeight());
  528. System.out.println("weight is " + set.getWeight());
  529. database1.update(
  530. "insert setPlan (groupId, setNo, repsNo, weight) values (:groupId, :setNo, :repsNo, :weight)",
  531. parameter);
  532. Integer setId = database1.queryForObject(
  533. "select setId from setPlan where groupId=:groupId and setNo=:setNo ", parameter,
  534. Integer.class);
  535. parameter.addValue("setId", setId);
  536. System.out.println("setId is " + setId);
  537. database1.update("insert sets (setId, groupId) values (:setId, :groupId)", parameter);
  538. }
  539. }
  540. System.out.println("Training Saved");
  541. System.out.println("training updated");
  542. } else {
  543. System.out.println("training not updated");
  544. }
  545. }
  546. // - EXERCISES ADDITION AND EXTRACTION
  547. // exercise list extraction
  548. @Transactional
  549. public Map<String, List<String>> getUsersExercisesNames(String userName) {
  550. Map<String, List<String>> exerciseNamesMap = getAllPublicExercisesNames();
  551. String queryString = "SELECT exerciseName from excerciseList where excerciseList.userName='" + userName + "'";
  552. List<String> exerciseNames = database1.query(queryString, new RowMapper<String>() {
  553. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  554. String exerciseName = rs.getString("exerciseName");
  555. return exerciseName;
  556. }
  557. });
  558. //if (exerciseNames.size() > 0) {
  559. exerciseNamesMap.put("USERS EXERCISES", exerciseNames);
  560. //}
  561. return exerciseNamesMap;
  562. }
  563. @Transactional
  564. public Map<String, List<String>> getAllPublicExercisesNames() {
  565. Map<String, List<String>> exerciseNamesMap = new HashMap<String, List<String>>();
  566. List<String> bodyPartsNames = database1.query("select bodyPart from excerciseListUpdated",
  567. new RowMapper<String>() {
  568. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  569. String bodyPart = rs.getString("bodyPart");
  570. return bodyPart;
  571. }
  572. });
  573. HashSet<String> bdpSet = new HashSet<String>();
  574. bdpSet.addAll(bodyPartsNames);
  575. for (String bodyPart : bdpSet) {
  576. String queryString = "SELECT nameOfExercise from excerciseListUpdated where excerciseListUpdated.bodyPart='"
  577. + bodyPart + "'";
  578. List<String> exerciseNames = database1.query(queryString, new RowMapper<String>() {
  579. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  580. String nameOfExercise = rs.getString("nameOfExercise");
  581. return nameOfExercise;
  582. }
  583. });
  584. exerciseNamesMap.put(bodyPart, exerciseNames);
  585. }
  586. return exerciseNamesMap;
  587. }
  588. public void addExercisesName(List<String> userExercisesList, String userName) {
  589. //System.out.println("Add " + userExercisesList + " to database");
  590. for(String exeName: userExercisesList){
  591. //System.out.println("Exercise name is - " + exeName);
  592. MapSqlParameterSource parameter = new MapSqlParameterSource();
  593. parameter.addValue("userName", userName);
  594. parameter.addValue("exerciseName", exeName);
  595. try {
  596. database1.update("insert into excerciseList (userName, exerciseName) values (:userName, :exerciseName)", parameter);
  597. //System.out.println(exeName + " loaded");
  598. } catch (DataAccessException e) {
  599. //System.out.println("load for " + exeName + " not possible something is missing");
  600. e.printStackTrace();
  601. }
  602. //System.out.println("Exercise name added result is - ");
  603. }
  604. //System.out.println("All added");
  605. }
  606. /////////////////////// Administration Methods //////////////////////////
  607. // for administration use
  608. public List<String> getAllExercisesNames(String userName) {
  609. if (!userName.equalsIgnoreCase("lolo")) {
  610. String queryString = "SELECT exerciseName from excerciseList where excerciseList.userName='" + userName
  611. + "'";
  612. List<String> exerciseNames1 = new ArrayList<>();
  613. // exerciseNames1.add("Select exercise");
  614. exerciseNames1 = database1.query(queryString, new RowMapper<String>() {
  615. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  616. String exerciseName = rs.getString("exerciseName");
  617. return exerciseName;
  618. }
  619. });
  620. queryString = "SELECT exerciseName from excerciseList where excerciseList.userName='mira'";
  621. List<String> exerciseNames2 = database1.query(queryString, new RowMapper<String>() {
  622. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  623. String exerciseName = rs.getString("exerciseName");
  624. return exerciseName;
  625. }
  626. });
  627. System.out.println("exerciseNames " + exerciseNames1.toString());
  628. exerciseNames1.addAll(exerciseNames2);
  629. System.out.println("exerciseNames po dodaniu" + exerciseNames1.toString());
  630. return exerciseNames1;
  631. } else {
  632. List<String> exerciseNames = database1.query("select * from excerciseList ", new RowMapper<String>() {
  633. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  634. String nameOfExercise = rs.getString("nameOfExercise");
  635. return nameOfExercise;
  636. }
  637. });
  638. // System.out.println("exerciseNames " + exerciseNames.toString());
  639. return exerciseNames;
  640. }
  641. }
  642. public void makeItPublic(String userName, String trainingName) {
  643. if (trainingExists(userName, trainingName)) {
  644. String newTrainingName = trainingName.substring(0, trainingName.indexOf('_'));
  645. System.out.println("newTrainingName is " + newTrainingName);
  646. MapSqlParameterSource parameter = new MapSqlParameterSource();
  647. parameter.addValue("trainingName", trainingName);
  648. parameter.addValue("newTrainingName", newTrainingName);
  649. parameter.addValue("userName", userName);
  650. database1.update(
  651. "update training set trainingName=:newTrainingName , userName='public' where trainingName=:trainingName and userName=:userName ",
  652. parameter);
  653. final List<Integer> groupIds = new ArrayList<>();
  654. database1.query("select * from" + " trainingSchedule where trainingName=:trainingName", parameter,
  655. new RowMapper<Exercise>() {
  656. public Exercise mapRow(ResultSet rs, int rowNum) throws SQLException {
  657. Exercise exercise = new Exercise();
  658. exercise.setNameOfExercise(rs.getString("exerciseName"));
  659. exercise.setGroupId(rs.getInt("groupId"));
  660. int groupId = exercise.getGroupId();
  661. System.out.println("Group id is " + groupId);
  662. groupIds.add(groupId);
  663. return exercise;
  664. }
  665. });
  666. System.out.println("Group ids are " + groupIds.toString());
  667. // delete all from trainingSchedule table
  668. for (int i = 0; i < groupIds.size(); i++) {
  669. try {
  670. parameter.addValue("groupId", groupIds.get(i));
  671. database1.update("update trainingSchedule set trainingName=:newTrainingName where groupId=:groupId",
  672. parameter);
  673. } catch (DataAccessException e) {
  674. e.printStackTrace();
  675. }
  676. try {
  677. database1.update("update trainingSchedule set trainingName=:newTrainingName where groupId=:groupId",
  678. parameter);
  679. } catch (DataAccessException e) {
  680. e.printStackTrace();
  681. }
  682. try {
  683. database1.update("update trainingSchedule set trainingName=:newTrainingName where groupId=:groupId",
  684. parameter);
  685. } catch (DataAccessException e) {
  686. e.printStackTrace();
  687. }
  688. }
  689. System.out.println("training Changed");
  690. System.out.println();
  691. System.out.println("Training has been changed");
  692. } else {
  693. System.out.println("Training has not been changed");
  694. }
  695. }
  696. public List<String> getUsersWeekDays(String userName) {
  697. String queryString = "SELECT weekDay from training where training.userName='" + userName + "'";
  698. List<String> weekDayList = database1.query(queryString, new RowMapper<String>() {
  699. public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  700. String weekDay = rs.getString("weekDay");
  701. return weekDay;
  702. }
  703. });
  704. System.out.println("weekDay " + weekDayList.toString());
  705. return weekDayList;
  706. }
  707. }