Skip to content

Commit 4fe59b3

Browse files
committed
add filter
1 parent d34dfd7 commit 4fe59b3

File tree

3 files changed

+27
-57
lines changed

3 files changed

+27
-57
lines changed

hopsworks-common/src/main/java/io/hops/hopsworks/common/dao/dataset/DatasetFacade.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ private void setFilter(Set<? extends AbstractFacade.FilterBy> filter, Query q) {
202202
private void setFilterQuery(AbstractFacade.FilterBy filterBy, Query q) {
203203
switch (Filters.valueOf(filterBy.getValue())) {
204204
case NAME:
205+
case NAME_NEQ:
206+
case NAME_LIKE:
205207
q.setParameter(filterBy.getField(), filterBy.getParam());
206208
break;
207209
case ACCEPTED:
@@ -259,7 +261,9 @@ public String toString() {
259261
}
260262

261263
public enum Filters {
262-
NAME("NAME", "d.name LIKE CONCAT(:name, '%') ", "name", " "),
264+
NAME("NAME", "LOWER(d.name) LIKE LOWER(CONCAT(:name, '%')) ", "name", " "),
265+
NAME_NEQ("NAME_NEQ", "LOWER(d.name) NOT LIKE LOWER(CONCAT(:name_not_eq, '%')) ", "name_not_eq", " "),
266+
NAME_LIKE("NAME_LIKE", "LOWER(d.name) LIKE LOWER(CONCAT('%', :name_like, '%')) ", "name_like", " "),
263267
ACCEPTED("ACCEPTED", "true =:accepted ", "accepted", "true"),//return all if true
264268
SHARED("SHARED", "NOT :shared ", "shared", "true"),//return none if true
265269
SEARCHABLE("SEARCHABLE", "d.searchable =:searchable ", "searchable", "0"),

hopsworks-common/src/main/java/io/hops/hopsworks/common/dao/dataset/DatasetSharedWithFacade.java

+13-55
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,16 @@
1616
package io.hops.hopsworks.common.dao.dataset;
1717

1818
import io.hops.hopsworks.common.dao.AbstractFacade;
19-
import io.hops.hopsworks.common.dao.hdfs.inode.InodeFacade;
20-
import io.hops.hopsworks.persistence.entity.project.Project;
2119
import io.hops.hopsworks.persistence.entity.dataset.Dataset;
2220
import io.hops.hopsworks.persistence.entity.dataset.DatasetSharedWith;
2321
import io.hops.hopsworks.persistence.entity.dataset.DatasetType;
22+
import io.hops.hopsworks.persistence.entity.project.Project;
2423

25-
import javax.ejb.EJB;
2624
import javax.ejb.Stateless;
2725
import javax.persistence.EntityManager;
2826
import javax.persistence.NoResultException;
2927
import javax.persistence.PersistenceContext;
3028
import javax.persistence.Query;
31-
import java.util.Date;
3229
import java.util.List;
3330
import java.util.Set;
3431

@@ -38,8 +35,6 @@ public class DatasetSharedWithFacade extends AbstractFacade<DatasetSharedWith> {
3835
@PersistenceContext(unitName = "kthfsPU")
3936
private EntityManager em;
4037

41-
@EJB
42-
private InodeFacade inodeFacade;
4338

4439
@Override
4540
protected EntityManager getEntityManager() {
@@ -76,56 +71,37 @@ public CollectionInfo findAllDatasetByProject(Integer offset, Integer limit, Set
7671
"d.project = :project ");
7772
Query query = em.createQuery(queryStr, DatasetSharedWith.class).setParameter("project", project);
7873
Query queryCount = em.createQuery(queryCountStr, DatasetSharedWith.class).setParameter("project", project);
79-
setFilter(filter, query, project);
80-
setFilter(filter, queryCount, project);
74+
setFilter(filter, query);
75+
setFilter(filter, queryCount);
8176
setOffsetAndLim(offset, limit, query);
8277
return new CollectionInfo((Long) queryCount.getSingleResult(), query.getResultList());
8378
}
8479

85-
private void setFilter(Set<? extends AbstractFacade.FilterBy> filter, Query q, Project project) {
80+
private void setFilter(Set<? extends AbstractFacade.FilterBy> filter, Query q) {
8681
if (filter == null || filter.isEmpty()) {
8782
return;
8883
}
8984
for (FilterBy aFilter : filter) {
90-
setFilterQuery(aFilter, q, project);
85+
setFilterQuery(aFilter, q);
9186
}
9287
}
9388

94-
private void setFilterQuery(AbstractFacade.FilterBy filterBy, Query q, Project project) {
89+
private void setFilterQuery(AbstractFacade.FilterBy filterBy, Query q) {
9590
switch (Filters.valueOf(filterBy.getValue())) {
9691
case NAME:
92+
case NAME_NEQ:
93+
case NAME_LIKE:
9794
q.setParameter(filterBy.getField(), filterBy.getParam());
9895
break;
9996
case ACCEPTED:
10097
case PUBLIC:
10198
case SHARED:
10299
case SEARCHABLE:
103-
case UNDER_CONSTRUCTION:
104100
q.setParameter(filterBy.getField(), getBooleanValue(filterBy.getParam()));
105101
break;
106102
case TYPE:
107103
q.setParameter(filterBy.getField(), getEnumValue(filterBy.getField(), filterBy.getValue(), DatasetType.class));
108104
break;
109-
case HDFS_USER:
110-
q.setParameter(filterBy.getField(), inodeFacade.gethdfsUser(filterBy.getParam()));
111-
break;
112-
case USER_EMAIL:
113-
q.setParameter(filterBy.getField(), inodeFacade.getUsers(filterBy.getParam(), project));
114-
break;
115-
case ACCESS_TIME:
116-
case ACCESS_TIME_GT:
117-
case ACCESS_TIME_LT:
118-
case MODIFICATION_TIME:
119-
case MODIFICATION_TIME_GT:
120-
case MODIFICATION_TIME_LT:
121-
Date date = getDate(filterBy.getField(), filterBy.getParam());
122-
q.setParameter(filterBy.getField(), date.getTime());
123-
break;
124-
case SIZE:
125-
case SIZE_LT:
126-
case SIZE_GT:
127-
q.setParameter(filterBy.getField(), getIntValue(filterBy));
128-
break;
129105
default:
130106
break;
131107
}
@@ -135,10 +111,8 @@ public enum Sorts {
135111
ID("ID", "d.dataset.id ", "ASC"),
136112
NAME("NAME", "LOWER(d.dataset.name) ", "ASC"),
137113
SEARCHABLE("SEARCHABLE", "d.dataset.searchable ", "ASC"),
138-
MODIFICATION_TIME("MODIFICATION_TIME", "d.dataset.inode.modificationTime ", "ASC"),
139-
ACCESS_TIME("ACCESS_TIME", "d.dataset.inode.accessTime ", "ASC"),
140114
PUBLIC("PUBLIC", "d.dataset.public ", "ASC"),
141-
SIZE("SIZE", "d.dataset.inode.size ", "ASC"),
115+
142116
TYPE("TYPE", "d.dataset.dsType ", "ASC");
143117

144118
private final String value;
@@ -175,30 +149,14 @@ public String toString() {
175149
}
176150

177151
public enum Filters {
178-
NAME("NAME", "d.dataset.name LIKE CONCAT(:name, '%') ", "name", " "),
179-
USER_EMAIL("USER_EMAIL", "d.dataset.inode.hdfsUser =:user ", "user", " "),
180-
HDFS_USER("HDFS_USER", "d.dataset.inode.hdfsUser =:hdfsUser ", "hdfsUser", " "),
181-
UNDER_CONSTRUCTION("UNDER_CONSTRUCTION", "d.dataset.inode.underConstruction =:underConstruction ",
182-
"underConstruction", "true"),
152+
NAME("NAME", "LOWER(d.dataset.name) LIKE LOWER(CONCAT(:name, '%')) ", "name", " "),
153+
NAME_NEQ("NAME_NEQ", "LOWER(d.dataset.name) NOT LIKE LOWER(CONCAT(:name_not_eq, '%')) ", "name_not_eq", " "),
154+
NAME_LIKE("NAME_LIKE", "LOWER(d.dataset.name) LIKE LOWER(CONCAT('%', :name_like, '%')) ", "name_like", " "),
183155
ACCEPTED("ACCEPTED", "d.accepted =:accepted ", "accepted", "true"),
184156
SHARED("SHARED", "true =:shared ", "shared", "true"),//return all if true nothing if false
185157
SEARCHABLE("SEARCHABLE", "d.dataset.searchable =:searchable ", "searchable", "0"),
186158
TYPE("TYPE", "d.dataset.dsType =:dsType ", "dsType", "DATASET"),
187-
PUBLIC("PUBLIC", "d.dataset.public =:public ", "public", "0"),
188-
MODIFICATION_TIME("MODIFICATION_TIME", "d.dataset.inode.modificationTime =:modificationTime ", "modificationTime",
189-
""),
190-
MODIFICATION_TIME_LT("MODIFICATION_TIME_LT", "d.dataset.inode.modificationTime <:modificationTime_lt ",
191-
"modificationTime_lt",
192-
""),
193-
MODIFICATION_TIME_GT("MODIFICATION_TIME_GT", "d.dataset.inode.modificationTime >:modificationTime_gt ",
194-
"modificationTime_gt",
195-
""),
196-
ACCESS_TIME("ACCESS_TIME", "d.dataset.inode.accessTime =:accessTime ", "accessTime", ""),
197-
ACCESS_TIME_LT("ACCESS_TIME_LT", "d.dataset.inode.accessTime <:accessTime_lt ", "accessTime_lt", ""),
198-
ACCESS_TIME_GT("ACCESS_TIME_GT", "d.dataset.inode.accessTime >:accessTime_gt ", "accessTime_gt", ""),
199-
SIZE("SIZE", "d.dataset.inode.size =:size_eq ", "size_eq", "0"),
200-
SIZE_LT("SIZE_LT", "d.dataset.inode.size <:size_lt ", "size_lt", "1"),
201-
SIZE_GT("SIZE_GT", "d.dataset.inode.size >:size_gt ", "size_gt", "0");
159+
PUBLIC("PUBLIC", "d.dataset.public =:public ", "public", "0");
202160

203161
private final String value;
204162
private final String sql;

hopsworks-common/src/main/java/io/hops/hopsworks/common/dao/hdfs/inode/InodeFacade.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private void setFilter(Set<? extends AbstractFacade.FilterBy> filter, Query q, P
276276
private void setFilterQuery(AbstractFacade.FilterBy filterBy, Query q, Project project) {
277277
switch (Filters.valueOf(filterBy.getValue())) {
278278
case NAME:
279+
case NAME_NEQ:
280+
case NAME_LIKE:
279281
q.setParameter(filterBy.getField(), filterBy.getParam());
280282
break;
281283
case UNDER_CONSTRUCTION:
@@ -301,6 +303,9 @@ private void setFilterQuery(AbstractFacade.FilterBy filterBy, Query q, Project p
301303
case SIZE_GT:
302304
q.setParameter(filterBy.getField(), getIntValue(filterBy));
303305
break;
306+
case TYPE:
307+
q.setParameter(filterBy.getField(), filterBy.getParam().equalsIgnoreCase("dir"));
308+
break;
304309
default:
305310
break;
306311
}
@@ -365,7 +370,9 @@ public String toString() {
365370
}
366371

367372
public enum Filters {
368-
NAME("NAME", "i.inodePK.name LIKE CONCAT(:name, '%') ", "name", " "),//case
373+
NAME("NAME", "LOWER(i.inodePK.name) LIKE LOWER(CONCAT(:name, '%')) ", "name", " "),
374+
NAME_NEQ("NAME_NEQ", "LOWER(i.inodePK.name) NOT LIKE LOWER(CONCAT(:name_not_eq, '%')) ", "name_not_eq", " "),
375+
NAME_LIKE("NAME_LIKE", "LOWER(i.inodePK.name) LIKE LOWER(CONCAT('%', :name_like, '%')) ", "name_like", " "),
369376
USER_EMAIL("USER_EMAIL", "i.hdfsUser =:user ", "user", " "),
370377
HDFS_USER("HDFS_USER", "i.hdfsUser =:hdfsUser ", "hdfsUser", " "),
371378
UNDER_CONSTRUCTION("UNDER_CONSTRUCTION", "i.underConstruction =:underConstruction ", "underConstruction", "true"),
@@ -377,6 +384,7 @@ public enum Filters {
377384
ACCESS_TIME("ACCESS_TIME", "i.accessTime =:accessTime ", "accessTime", ""),
378385
ACCESS_TIME_LT("ACCESS_TIME_LT", "i.accessTime <:accessTime_lt ", "accessTime_lt", ""),
379386
ACCESS_TIME_GT("ACCESS_TIME_GT", "i.accessTime >:accessTime_gt ", "accessTime_gt", ""),
387+
TYPE("TYPE", "i.dir =:is_dir ", "is_dir", "dir"),
380388
SIZE("SIZE", "i.size =:size_eq ", "size_eq", "0"),
381389
SIZE_LT("SIZE_LT", "i.size <:size_lt ", "size_lt", "1"),
382390
SIZE_GT("SIZE_GT", "i.size >:size_gt ", "size_gt", "0");

0 commit comments

Comments
 (0)