blob: 3a5ebde585c0df084476419e15cc09d40d175341 [file] [log] [blame]
margaretha1a683512017-10-16 20:25:26 +02001package de.ids_mannheim.korap.entity;
2
margaretha08bdabe2017-10-17 14:38:49 +02003import java.util.List;
4
margaretha6e796842023-08-17 15:10:45 +02005import jakarta.persistence.CascadeType;
6import jakarta.persistence.Column;
7import jakarta.persistence.Entity;
8import jakarta.persistence.EnumType;
9import jakarta.persistence.Enumerated;
10import jakarta.persistence.FetchType;
11import jakarta.persistence.GeneratedValue;
12import jakarta.persistence.GenerationType;
13import jakarta.persistence.Id;
14import jakarta.persistence.OneToMany;
15import jakarta.persistence.Table;
margaretha1a683512017-10-16 20:25:26 +020016
Akronda080152020-12-03 13:53:29 +010017import de.ids_mannheim.korap.constant.QueryType;
18import de.ids_mannheim.korap.constant.ResourceType;
margaretha61966dd2017-10-26 19:32:21 +020019import de.ids_mannheim.korap.user.User.CorpusAccess;
margaretha1a683512017-10-16 20:25:26 +020020import lombok.Getter;
21import lombok.Setter;
22
margaretha398f4722019-01-09 19:07:20 +010023/**
margarethab097fb02021-02-22 19:28:33 +010024 * Describes the query table and its relation to {@link QueryAccess}.
margaretha08bdabe2017-10-17 14:38:49 +020025 *
margarethab097fb02021-02-22 19:28:33 +010026 * 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
margaretha398f4722019-01-09 19:07:20 +010028 * will not be shared until a user-group admin accept his/her request.
29 *
margaretha08bdabe2017-10-17 14:38:49 +020030 * @author margaretha
31 *
margarethab097fb02021-02-22 19:28:33 +010032 * @see QueryAccess
margaretha08bdabe2017-10-17 14:38:49 +020033 * @see UserGroup
34 */
margaretha1a683512017-10-16 20:25:26 +020035@Setter
36@Getter
37@Entity
margarethab097fb02021-02-22 19:28:33 +010038@Table(name = "query")
39public class QueryDO implements Comparable<QueryDO> {
margaretha1a683512017-10-16 20:25:26 +020040
41 @Id
42 @GeneratedValue(strategy = GenerationType.IDENTITY)
43 private int id;
44 private String name;
margaretha1f106f62017-10-18 22:27:30 +020045 @Enumerated(EnumType.STRING)
Akronda080152020-12-03 13:53:29 +010046 private ResourceType type;
margaretha1a683512017-10-16 20:25:26 +020047 private String status;
48 private String description;
margaretha61966dd2017-10-26 19:32:21 +020049 @Enumerated(EnumType.STRING)
margaretha1a683512017-10-16 20:25:26 +020050 @Column(name = "required_access")
margaretha61966dd2017-10-26 19:32:21 +020051 private CorpusAccess requiredAccess;
margarethab097fb02021-02-22 19:28:33 +010052 @Column(name = "koral_query")
margaretha563aabe2018-09-13 20:39:45 +020053 private String koralQuery;
margaretha1a683512017-10-16 20:25:26 +020054 private String definition;
margaretha08bdabe2017-10-17 14:38:49 +020055 @Column(name = "created_by")
56 private String createdBy;
margaretha563aabe2018-09-13 20:39:45 +020057 @Column(name = "is_cached")
58 private boolean isCached;
margaretha35e1ca22023-11-16 22:00:01 +010059
margaretha5213ced2021-02-17 12:27:59 +010060 @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;
margaretha08bdabe2017-10-17 14:38:49 +020066
margaretha58995292024-07-31 12:02:45 +020067 @OneToMany(mappedBy = "query", fetch = FetchType.LAZY,
68 cascade = CascadeType.REMOVE)
margaretha340d06a2024-07-25 12:14:42 +020069 private List<Role> roles;
margaretha1a683512017-10-16 20:25:26 +020070
71 @Override
72 public String toString () {
73 return "id=" + id + ", name= " + name + ", type= " + type + ", status= "
74 + status + ", description=" + description + ", requiredAccess="
margarethab097fb02021-02-22 19:28:33 +010075 + requiredAccess + ", koralQuery= " + koralQuery
margaretha45a65092025-03-24 09:20:02 +010076 + ", definition= " + definition + ", createdBy= " + createdBy
77 + ", isCached ="+isCached;
margaretha1a683512017-10-16 20:25:26 +020078 }
margaretha7c38f4c2018-01-18 20:20:56 +010079
margarethaf6d5a822017-10-19 19:51:20 +020080 @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 }
margaretha7c38f4c2018-01-18 20:20:56 +010089
margarethaf6d5a822017-10-19 19:51:20 +020090 @Override
91 public boolean equals (Object obj) {
margarethab097fb02021-02-22 19:28:33 +010092 QueryDO query = (QueryDO) obj;
93 return (this.id == query.getId()) ? true : false;
margarethaf6d5a822017-10-19 19:51:20 +020094 }
margaretha98ec15b2018-01-22 17:14:02 +010095
96 @Override
margarethab097fb02021-02-22 19:28:33 +010097 public int compareTo (QueryDO o) {
margaretha98ec15b2018-01-22 17:14:02 +010098 if (this.getId() > o.getId()) {
99 return 1;
100 }
101 else if (this.getId() < o.getId()) {
102 return -1;
103 }
104 return 0;
105 }
margaretha1a683512017-10-16 20:25:26 +0200106}