blob: 10037b253e143aaab984427a3ded05c8285bac12 [file] [log] [blame]
Michael Hanlca740d72015-06-16 10:04:58 +02001package de.ids_mannheim.korap.user;
2
3import lombok.Data;
4
5import java.util.ArrayList;
6import java.util.HashMap;
7import java.util.List;
8import java.util.Map;
9
10/**
11 * User: hanl
12 * Date: 9/16/13
13 * Time: 4:38 PM
14 */
15@Data
16public class UserQuery {
17
18 private Integer id;
19 private String queryLanguage;
20 private String query;
21 private String name;
22 private String description;
23 private Integer creator;
24
Michael Hanl8abaf9e2016-05-23 16:46:35 +020025 public UserQuery (Integer id, int creator) {
Michael Hanlca740d72015-06-16 10:04:58 +020026 setId(id);
27 setCreator(creator);
28 setName("");
29 setDescription("");
30 setQuery("");
31 setQueryLanguage("");
32 }
33
Michael Hanl8abaf9e2016-05-23 16:46:35 +020034 public UserQuery (String ql, String query, String description) {
Michael Hanlca740d72015-06-16 10:04:58 +020035 setDescription(description);
36 setQuery(query);
37 setQueryLanguage(ql);
38 }
39
Michael Hanl8abaf9e2016-05-23 16:46:35 +020040 public UserQuery () {
Michael Hanlca740d72015-06-16 10:04:58 +020041 setDescription("");
42 setQuery("");
43 setQueryLanguage("");
44 setName("");
45 }
46
Michael Hanl8abaf9e2016-05-23 16:46:35 +020047 public void setQuery (String query) {
Michael Hanlca740d72015-06-16 10:04:58 +020048 this.query = query;
margaretha35e1ca22023-11-16 22:00:01 +010049 setName("Query: " + query.substring(0,
50 query.length() > 20 ? 20 : query.length()));
Michael Hanlca740d72015-06-16 10:04:58 +020051 }
52
53 // todo: use example queries or store in database
Michael Hanl8abaf9e2016-05-23 16:46:35 +020054 public static List<UserQuery> demoUserQueries () {
Michael Hanlca740d72015-06-16 10:04:58 +020055
56 List<UserQuery> queries = new ArrayList<>();
57 UserQuery q1 = new UserQuery();
58 q1.setQueryLanguage("COSMAS2");
59 q1.setQuery("$wegen #IN(L) <s>");
margaretha35e1ca22023-11-16 22:00:01 +010060 q1.setDescription(
61 "Findet 'wegen' an Satzanfängen. Berücksichtigt auch Groß- und Kleinschreibung");
Michael Hanlca740d72015-06-16 10:04:58 +020062
63 //todo: change query
64 UserQuery q2 = new UserQuery();
65 q2.setQueryLanguage("COSMAS2");
66 q2.setQuery("base/cons:Buchstabe base/aggr:Buchstabe");
67
68 UserQuery q3 = new UserQuery();
69 q3.setQueryLanguage("COSMAS2");
70 q3.setDescription("Regular Expression Search");
71 q3.setQuery("id:/WPD_AAA.*/ AND textClass:sport");
72
73 UserQuery q4 = new UserQuery();
74 q4.setQueryLanguage("COSMAS2");
75 q4.setQuery("mpt/syntax_pos:@CC\\|und");
76
77 UserQuery q5 = new UserQuery();
78 q5.setQueryLanguage("COSMAS2");
79 q5.setQuery("VVINF\\|.*en");
80
81 queries.add(q1);
82 // queries.add(q2);
83 // queries.add(q3);
84 queries.add(q4);
85 queries.add(q5);
86 return queries;
87 }
88
89 //id is irrevelant, since data was coming
90 // from frontend and thus this object does not contain a id that could be compared!
91 // same with the userAccount. Not set yet!
92 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020093 public boolean equals (Object o) {
Michael Hanlca740d72015-06-16 10:04:58 +020094 if (this == o)
95 return true;
96 if (!(o instanceof UserQuery))
97 return false;
98 UserQuery userQuery = (UserQuery) o;
99 if (!query.equals(userQuery.query))
100 return false;
101 if (!queryLanguage.equals(userQuery.queryLanguage))
102 return false;
103 return true;
104 }
105
106 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200107 public int hashCode () {
Michael Hanlca740d72015-06-16 10:04:58 +0200108 int result = getId() != null ? getId().hashCode() : 0;
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200109 result = 31 * result
110 + (queryLanguage != null ? queryLanguage.hashCode() : 0);
Michael Hanlca740d72015-06-16 10:04:58 +0200111 result = 31 * result + (query != null ? query.hashCode() : 0);
112 return result;
113 }
114
115 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200116 public String toString () {
Michael Hanlca740d72015-06-16 10:04:58 +0200117 final StringBuffer sb = new StringBuffer("UserQuery{");
118 sb.append("id=").append(getId());
119 // sb.append(", owner=").append(getOwner());
120 sb.append(", queryLanguage='").append(queryLanguage).append('\'');
121 sb.append(", query='").append(query).append('\'');
122 sb.append(", description='").append(getDescription()).append('\'');
123 sb.append('}');
124 return sb.toString();
125 }
126
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200127 public Map toMap () {
Michael Hanlca740d72015-06-16 10:04:58 +0200128 Map map = new HashMap();
129 map.put("name", this.name);
130 map.put("description", this.description);
131 map.put("query", this.query);
132 map.put("queryLanguage", this.queryLanguage);
133 return map;
134 }
135}