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