aboutsummaryrefslogtreecommitdiff
path: root/src/com.example.portfolio2/com/example/portfolio2/Database.java
blob: 6edcfedc32ea2d14e7e8046ea54706613cc048b4 (plain)
  1. // SPDX-FileCopyrightText: <Alexander Marthin Klemensen stud-marthin@ruc.dk>
  2. // SPDX-FileCopyrightText: <Ian Valentin Christensen stud-ianc@ruc.dk>
  3. // SPDX-FileCopyrightText: <Zahed Noos zahed@ruc.dk>
  4. // SPDX-License-Identifier: GPL-3.0-or-later
  5. package com.example.portfolio2;
  6. import java.util.ArrayList;
  7. /// Bachelorizer - database model
  8. ///
  9. /// This model handles all interaction with the database.
  10. class Database {
  11. /// database singleton
  12. MyDB db = new MyDB();
  13. /// default constructor
  14. // (declared explicitly only to silence javadoc)
  15. Database() { }
  16. /// clear the participation database at program launch
  17. void initialize() {
  18. clearParticipation();
  19. }
  20. /// resolve activity index from name
  21. ///
  22. /// @param name activity name
  23. /// @return index of activity as integer
  24. int getActivityIndeks(final String name) {
  25. if (name == null) {
  26. return -1;
  27. }
  28. ArrayList<String> result = db.query(
  29. "select indeks from activity a"
  30. + " where name is '" + name + "';",
  31. "indeks");
  32. return Integer.parseInt(result.getFirst());
  33. }
  34. /// insert activity into participation
  35. ///
  36. /// @param activityIndex index of activity
  37. void addParticipation(final int activityIndex) {
  38. db.cmd("insert into participation values(123, "
  39. + activityIndex + ");");
  40. }
  41. /// list currently participating activities
  42. ///
  43. /// @param program programme name
  44. /// @return names of participating activities
  45. ArrayList<String> getParticipation(final String program) {
  46. return db.query(
  47. "select name from participation p"
  48. + " inner join activity a on p.indeks = a.indeks"
  49. + " where program is '" + program + "';",
  50. "name");
  51. }
  52. /// purge participation database
  53. void clearParticipation() {
  54. db.cmd("delete from participation");
  55. }
  56. /// list activities within a program
  57. ///
  58. /// @param program programme name
  59. /// @return names of contained activities
  60. ArrayList<String> selectProgram(final String program) {
  61. return db.query(
  62. "select name from activity"
  63. + " where program is '" + program + "';",
  64. "name");
  65. }
  66. /// sum of ECTS points under the given category
  67. ///
  68. /// @param program programme name
  69. /// @return ECTS points as String
  70. String getSumEcts(final String program) {
  71. if (program == null) {
  72. return "0";
  73. }
  74. ArrayList<String> result = db.query(
  75. "select sum(activity.ects)"
  76. + " as total_ects,student.name"
  77. + " from student left outer join participation"
  78. + " on student.studid = participation.studid"
  79. + " inner join activity"
  80. + " on participation.indeks = activity.indeks"
  81. + " where program is '" + program + "'"
  82. + " group by student.studid ;",
  83. "total_ects");
  84. if (result.isEmpty()) {
  85. return "0";
  86. }
  87. return result.getFirst();
  88. }
  89. /// sum of ECTS points under the given category
  90. ///
  91. /// @return names of all activities as list of String
  92. ArrayList<String> getAllActivities() {
  93. return db.query("select name from activity;", "name");
  94. }
  95. }