| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.entity; |
| 2 | |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 3 | import java.util.List; |
| 4 | |
| margaretha | 6e79684 | 2023-08-17 15:10:45 +0200 | [diff] [blame] | 5 | import jakarta.persistence.CascadeType; |
| 6 | import jakarta.persistence.Column; |
| 7 | import jakarta.persistence.Entity; |
| 8 | import jakarta.persistence.EnumType; |
| 9 | import jakarta.persistence.Enumerated; |
| 10 | import jakarta.persistence.FetchType; |
| 11 | import jakarta.persistence.GeneratedValue; |
| 12 | import jakarta.persistence.GenerationType; |
| 13 | import jakarta.persistence.Id; |
| 14 | import jakarta.persistence.OneToMany; |
| 15 | import jakarta.persistence.Table; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 16 | |
| Akron | da08015 | 2020-12-03 13:53:29 +0100 | [diff] [blame] | 17 | import de.ids_mannheim.korap.constant.QueryType; |
| 18 | import de.ids_mannheim.korap.constant.ResourceType; |
| margaretha | 61966dd | 2017-10-26 19:32:21 +0200 | [diff] [blame] | 19 | import de.ids_mannheim.korap.user.User.CorpusAccess; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 20 | import lombok.Getter; |
| 21 | import lombok.Setter; |
| 22 | |
| margaretha | 398f472 | 2019-01-09 19:07:20 +0100 | [diff] [blame] | 23 | /** |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 24 | * Describes the query table and its relation to {@link QueryAccess}. |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 25 | * |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 26 | * Any user may create a query and share it to a user group. |
| 27 | * However, if the user is not a user-group admin, the query |
| margaretha | 398f472 | 2019-01-09 19:07:20 +0100 | [diff] [blame] | 28 | * will not be shared until a user-group admin accept his/her request. |
| 29 | * |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 30 | * @author margaretha |
| 31 | * |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 32 | * @see QueryAccess |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 33 | * @see UserGroup |
| 34 | */ |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 35 | @Setter |
| 36 | @Getter |
| 37 | @Entity |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 38 | @Table(name = "query") |
| 39 | public class QueryDO implements Comparable<QueryDO> { |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 40 | |
| 41 | @Id |
| 42 | @GeneratedValue(strategy = GenerationType.IDENTITY) |
| 43 | private int id; |
| 44 | private String name; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 45 | @Enumerated(EnumType.STRING) |
| Akron | da08015 | 2020-12-03 13:53:29 +0100 | [diff] [blame] | 46 | private ResourceType type; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 47 | private String status; |
| 48 | private String description; |
| margaretha | 61966dd | 2017-10-26 19:32:21 +0200 | [diff] [blame] | 49 | @Enumerated(EnumType.STRING) |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 50 | @Column(name = "required_access") |
| margaretha | 61966dd | 2017-10-26 19:32:21 +0200 | [diff] [blame] | 51 | private CorpusAccess requiredAccess; |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 52 | @Column(name = "koral_query") |
| margaretha | 563aabe | 2018-09-13 20:39:45 +0200 | [diff] [blame] | 53 | private String koralQuery; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 54 | private String definition; |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 55 | @Column(name = "created_by") |
| 56 | private String createdBy; |
| margaretha | 563aabe | 2018-09-13 20:39:45 +0200 | [diff] [blame] | 57 | @Column(name = "is_cached") |
| 58 | private boolean isCached; |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 59 | |
| margaretha | 5213ced | 2021-02-17 12:27:59 +0100 | [diff] [blame] | 60 | @Enumerated(EnumType.STRING) |
| 61 | @Column(name = "query_type") |
| 62 | private QueryType queryType; |
| 63 | private String query; |
| 64 | @Column(name = "query_language") |
| 65 | private String queryLanguage; |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 66 | |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 67 | @OneToMany(mappedBy = "query", fetch = FetchType.LAZY, |
| 68 | cascade = CascadeType.REMOVE) |
| margaretha | 340d06a | 2024-07-25 12:14:42 +0200 | [diff] [blame] | 69 | private List<Role> roles; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 70 | |
| 71 | @Override |
| 72 | public String toString () { |
| 73 | return "id=" + id + ", name= " + name + ", type= " + type + ", status= " |
| 74 | + status + ", description=" + description + ", requiredAccess=" |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 75 | + requiredAccess + ", koralQuery= " + koralQuery |
| margaretha | 45a6509 | 2025-03-24 09:20:02 +0100 | [diff] [blame] | 76 | + ", definition= " + definition + ", createdBy= " + createdBy |
| 77 | + ", isCached ="+isCached; |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 78 | } |
| margaretha | 7c38f4c | 2018-01-18 20:20:56 +0100 | [diff] [blame] | 79 | |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 80 | @Override |
| 81 | public int hashCode () { |
| 82 | int prime = 37; |
| 83 | int result = 1; |
| 84 | result = prime * result + id; |
| 85 | result = prime * result + name.hashCode(); |
| 86 | result = prime * result + createdBy.hashCode(); |
| 87 | return result; |
| 88 | } |
| margaretha | 7c38f4c | 2018-01-18 20:20:56 +0100 | [diff] [blame] | 89 | |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 90 | @Override |
| 91 | public boolean equals (Object obj) { |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 92 | QueryDO query = (QueryDO) obj; |
| 93 | return (this.id == query.getId()) ? true : false; |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 94 | } |
| margaretha | 98ec15b | 2018-01-22 17:14:02 +0100 | [diff] [blame] | 95 | |
| 96 | @Override |
| margaretha | b097fb0 | 2021-02-22 19:28:33 +0100 | [diff] [blame] | 97 | public int compareTo (QueryDO o) { |
| margaretha | 98ec15b | 2018-01-22 17:14:02 +0100 | [diff] [blame] | 98 | if (this.getId() > o.getId()) { |
| 99 | return 1; |
| 100 | } |
| 101 | else if (this.getId() < o.getId()) { |
| 102 | return -1; |
| 103 | } |
| 104 | return 0; |
| 105 | } |
| margaretha | 1a68351 | 2017-10-16 20:25:26 +0200 | [diff] [blame] | 106 | } |