James Moger
2014-04-24 b3f70e7ed4b4c59fc578f529411f41e3fd6b192f
Improve generated Lucene query to only show relevant My Tickets results
1 files modified
27 ■■■■■ changed files
src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java
@@ -21,9 +21,9 @@
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.TicketModel;
import com.gitblit.models.UserModel;
import com.gitblit.models.TicketModel.Status;
import com.gitblit.models.TicketModel.Type;
import com.gitblit.models.UserModel;
import com.gitblit.tickets.ITicketService;
import com.gitblit.tickets.QueryBuilder;
import com.gitblit.tickets.QueryResult;
@@ -228,14 +228,6 @@
        
        // Build Query here
        QueryBuilder qb = new QueryBuilder(queryParam);
        if (!qb.containsField(Lucene.responsible.name())) {
            // specify the responsible
            qb.and(Lucene.responsible.matches(assignedToParam));
        }
        if (!qb.containsField(Lucene.milestone.name())) {
            // specify the milestone
            qb.and(Lucene.milestone.matches(milestoneParam));
        }
        if (!qb.containsField(Lucene.status.name()) && !ArrayUtils.isEmpty(statiiParam)) {
            // specify the states
            boolean not = false;
@@ -254,7 +246,22 @@
                qb.and(q.toSubquery().toString());
            }
        }
        final String luceneQuery = qb.build();
        final String luceneQuery;
        if (qb.containsField(Lucene.createdby.name())
                || qb.containsField(Lucene.responsible.name())
                || qb.containsField(Lucene.watchedby.name())) {
            // focused "my tickets" query
            luceneQuery = qb.build();
        } else {
            // general "my tickets" query
            QueryBuilder myQuery = new QueryBuilder();
            myQuery.or(Lucene.createdby.matches(username));
            myQuery.or(Lucene.responsible.matches(username));
            myQuery.or(Lucene.watchedby.matches(username));
            myQuery.and(qb.toSubquery().toString());
            luceneQuery = myQuery.build();
        }
        
        // paging links
        int page = (params != null) ? Math.max(1, WicketUtils.getPage(params)) : 1;