Skip to content
Snippets Groups Projects
Commit 93382fb0 authored by Andreas Kluge Svendsrud's avatar Andreas Kluge Svendsrud
Browse files

Merge branch 'feat/model-classes' into 'master'

Feat/model classes

See merge request !6
parents 7d2ba308 11c9b98c
No related branches found
No related tags found
1 merge request!6Feat/model classes
Pipeline #274083 passed
Showing
with 619 additions and 6 deletions
package no.ntnu.idi.stud.savingsapp.model.bank;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "account")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "account_id")
private Long id;
}
package no.ntnu.idi.stud.savingsapp.model.savings;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "daily_challenge_progresss")
public class DailyChallengeProgress {
@Id()
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "daily_challenge_progess_id")
private Long id;
@NonNull
@Column(name = "challenge_day", nullable = false)
private int challengeDay;
@NonNull
@Column(name = "completed_at", nullable = false)
private Timestamp completedAt;
}
package no.ntnu.idi.stud.savingsapp.model.savings;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "difficulty_level")
public class DifficultyLevel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "difficulty_level_id")
private Long id;
@NonNull
@Column(name = "difficulty_level_text", nullable = false)
private String diffucultyLevelText;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "difficulty_level_id")
private List<SavingChallenge> savingChallengeList;
}
package no.ntnu.idi.stud.savingsapp.model.savings;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "saving_challenge")
public class SavingChallenge {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "saving_challenge_id")
private Long id;
@NonNull
@Column(name = "saving_challenge_text", nullable = false)
private String savingChallengeText;
@NonNull
@Column(name = "potential_saving_amount", nullable = false)
private int potentialSavingAmount;
@NonNull
@Column(name = "points", nullable = false)
private int points;
@OneToMany(cascade = CascadeType.ALL)
private List<DailyChallengeProgress> dailyChallengeProgressList;
}
package no.ntnu.idi.stud.savingsapp.model.savings;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.sql.Timestamp;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "saving_goal")
public class SavingGoal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "saving_goal_id")
private Long id;
@NonNull
@Column(name = "saving_goal_name", nullable = false)
private String savingGoalName;
@NonNull
@Column(name = "target_amount", nullable = false)
private int targetAmount;
@NonNull
@Column(name = "target_date", nullable = false)
private Timestamp targetDate;
@NonNull
@Column(name = "completed_at", nullable = false)
private Timestamp completedAt;
@NonNull
@Column(name = "created_at", nullable = false)
private Timestamp createdAt;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "saving_goal_id")
private List<SavingChallenge> savingChallenges;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "badge")
public class Badge {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "badge_id")
private Long id;
@NonNull
@Column(name = "badge_name", nullable = false)
private String badgeName;
@NonNull
@Column(name = "criteria", nullable = false)
private String criteria;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "badge")
private List<BadgeUser> badgeUserList;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "badge_user")
public class BadgeUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "badge_user_id")
private Long id;
@ManyToOne
@JoinColumn(name = "badge_id")
private Badge badge;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Column(name = "earned_at")
private Timestamp earnedAt;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FriendList {
@EmbeddedId
private FriendListId id;
@NonNull
@Column(name = "status", nullable = false)
private String status;
@NonNull
@Column(name = "created_at")
private Timestamp createdAt;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class FriendListId implements Serializable {
private Long userId;
private Long friendId;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "points")
public class Point {
@Id
@OneToOne
@JoinColumn(name = "user_id", nullable = false)
private User user;
@NonNull
@Column(name = "current_points", nullable = false)
private int currentPoints;
@NonNull
@Column(name = "total_earned_points", nullable = false)
private int totalEarnedPoints;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "profile_picture")
public class ProfilePicture {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "profile_picture_id")
private Long id;
@NonNull
@Column(name = "description", nullable = false)
private String description;
@NonNull
@Column(name = "price", nullable = false)
private int price;
}
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "profile_picture_user")
public class ProfilePictureUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "profile_picture_user_id")
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@ManyToOne
@JoinColumn(name = "profile_picture_id")
private ProfilePicture profilePicture;
private boolean inUse;
}
\ No newline at end of file
package no.ntnu.idi.stud.savingsapp.model;
package no.ntnu.idi.stud.savingsapp.model.user;
public enum Role {
......
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "streak")
public class Streak {
@Id
@OneToOne
@JoinColumn(name = "user_id", unique = true)
private User user;
@NonNull
@Column(name = "current_streak", nullable = false)
private int currentStreak;
@NonNull
@Column(name = "current_streak_created_at", nullable = false)
private Timestamp currentStreakCreatedAt;
@NonNull
@Column(name = "current_streak_updated_at", nullable = false)
private Timestamp currentStreakUpdatedAt;
@NonNull
@Column(name = "highest_streak", nullable = false)
private int highestStreak;
@NonNull
@Column(name = "highest_streak_ended_at")
private Timestamp highestStreakEndedAt;
}
package no.ntnu.idi.stud.savingsapp.model;
package no.ntnu.idi.stud.savingsapp.model.user;
import jakarta.annotation.Nonnull;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
......@@ -8,6 +8,12 @@ import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.PrimaryKeyJoinColumn;
import jakarta.persistence.Table;
import java.util.Collection;
import java.util.Date;
......@@ -16,6 +22,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import no.ntnu.idi.stud.savingsapp.model.bank.Account;
import no.ntnu.idi.stud.savingsapp.model.savings.SavingGoal;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
......@@ -29,6 +37,7 @@ public class User implements UserDetails{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long id;
@NonNull
......@@ -43,17 +52,39 @@ public class User implements UserDetails{
@Column(name = "email", nullable = false)
private String email;
@OneToOne
@PrimaryKeyJoinColumn(name = "savings_account")
private Account savingsAccount;
@OneToOne
@PrimaryKeyJoinColumn(name = "savings_account")
private Account checkingAccount;
@NonNull
@Column(name = "password", nullable = false)
private String password;
@NonNull
@Column(name = "created_at", nullable = false)
private Date createdAt;
@Nonnull
@Enumerated(EnumType.STRING)
@NonNull
@Enumerated(EnumType.STRING)
@Column(name = "role", nullable = false)
private Role role;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private List<SavingGoal> savingGoal;
@ManyToMany
@JoinTable(name = "badge_user",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "badge_id"))
private List<Badge> badges;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private List<BadgeUser> badgeUserList;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(role.name()));
......@@ -64,7 +95,6 @@ public class User implements UserDetails{
return this.email;
}
@Override
public boolean isAccountNonExpired() {
return true;
......
package no.ntnu.idi.stud.savingsapp.model.user.configuration;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "answer")
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "answer_id")
private Long id;
@NonNull
@Column(name = "answer_text", nullable = false)
private String answer_text;
}
package no.ntnu.idi.stud.savingsapp.model.user.configuration;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "question")
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "question_id")
private Long id;
@NonNull
@Column(name = "question_text", nullable = false)
private String questionText;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "question_id")
private List<Answer> answerList;
}
package no.ntnu.idi.stud.savingsapp.model.user.configuration;
import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user_configuration")
public class UserConfiguration {
@EmbeddedId
@Column(name = "user_configuration_id")
private UserConfigurationId id;
@Column(name = "updated_at")
private Timestamp updatedAt;
}
package no.ntnu.idi.stud.savingsapp.model.user.configuration;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class UserConfigurationId implements Serializable {
private Long userId;
private Long questionId;
private Long answerId;
}
......@@ -9,7 +9,7 @@ import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import no.ntnu.idi.stud.savingsapp.model.Role;
import no.ntnu.idi.stud.savingsapp.model.user.Role;
import no.ntnu.idi.stud.savingsapp.properties.TokenProperties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment