Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Project version group: work in progress, implementing search UI
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Apr 17, 2012
1 parent dfbc215 commit 693af05
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 42 deletions.
Expand Up @@ -31,20 +31,15 @@
*/
public class GroupSearchBridge implements FieldBridge
{
public static final String PROJECT_FIELD = ".project";
public static final String PROJECT_FIELD = "project";

@Override
public void set(String name, Object value, Document document, LuceneOptions luceneOptions)
{
HIterationProject project = (HIterationProject) value;

addStringField(name + PROJECT_FIELD, project.getSlug(), document, luceneOptions);
}

private void addStringField(String fieldName, String fieldValue, Document luceneDocument, LuceneOptions luceneOptions)
{
Field field = new Field(fieldName, fieldValue, luceneOptions.getStore(), luceneOptions.getIndex(), luceneOptions.getTermVector());
Field field = new Field(PROJECT_FIELD, project.getSlug(), luceneOptions.getStore(), luceneOptions.getIndex(), luceneOptions.getTermVector());
field.setBoost(luceneOptions.getBoost());
luceneDocument.add(field);
document.add(field);
}
}
Expand Up @@ -88,7 +88,7 @@ public boolean getOverrideLocales()
@NotNull
// TODO PERF @NaturalId(mutable=false) for better criteria caching
@NaturalId
@Field(index = Index.UN_TOKENIZED)
@Field
@FieldBridge(impl = GroupSearchBridge.class)
public HIterationProject getProject()
{
Expand Down
Expand Up @@ -131,11 +131,11 @@ public List<HProjectIteration> getSearchResults()
* { return true; } } return false; }
*/

public void searchForProjects()
public void searchProjectAndVersion()
{
try
{
this.searchResults = versionGroupServiceImpl.findAllContainingName(this.searchTerm);
this.searchResults = versionGroupServiceImpl.findBySlugAndProjectSlug(this.searchTerm);
}
catch (ParseException e)
{
Expand Down
Expand Up @@ -26,19 +26,26 @@

import javax.ws.rs.core.EntityTag;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.util.Version;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.common.ContentState;
import org.zanata.common.EntityStatus;
import org.zanata.common.LocaleId;
import org.zanata.common.TransUnitCount;
import org.zanata.common.TransUnitWords;
import org.zanata.hibernate.search.GroupSearchBridge;
import org.zanata.model.HIterationProject;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
Expand All @@ -50,6 +57,8 @@
@Scope(ScopeType.STATELESS)
public class ProjectIterationDAO extends AbstractDAOImpl<HProjectIteration, Long>
{
@In
private FullTextEntityManager entityManager;

public ProjectIterationDAO()
{
Expand Down Expand Up @@ -289,4 +298,16 @@ public int getTotalObsoleteProjectIterCount()
return 0;
return totalCount.intValue();
}

public List<HProjectIteration> findBySlugAndProjectSlug(String searchTerm) throws ParseException
{
final String FIELDS[] = { "slug", GroupSearchBridge.PROJECT_FIELD };

MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_29, FIELDS, new StandardAnalyzer(Version.LUCENE_29));
org.apache.lucene.search.Query textQuery = parser.parse(searchTerm);

org.hibernate.search.jpa.FullTextQuery ftQuery = entityManager.createFullTextQuery(textQuery, HProjectIteration.class);
List<HProjectIteration> matches = (List<HProjectIteration>) ftQuery.getResultList();
return matches;
}
}
Expand Up @@ -22,26 +22,17 @@

import java.util.List;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.util.Version;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.log.Log;
import org.zanata.common.EntityStatus;
import org.zanata.model.HIterationGroup;
import org.zanata.model.HPerson;
import org.zanata.model.HProjectIteration;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
Expand All @@ -51,12 +42,6 @@
@Scope(ScopeType.STATELESS)
public class VersionGroupDAO extends AbstractDAOImpl<HIterationGroup, Long>
{
@In
private FullTextEntityManager entityManager;

@Logger
Log log;

public VersionGroupDAO()
{
super(HIterationGroup.class);
Expand Down Expand Up @@ -88,16 +73,4 @@ public List<HPerson> getMaintainerBySlug(String slug)
q.setParameter("slug", slug);
return q.list();
}

public List<HProjectIteration> findAllContainingName(String searchTerm) throws ParseException
{
QueryParser parser = new QueryParser(Version.LUCENE_29, "slug", new StandardAnalyzer(Version.LUCENE_29));
org.apache.lucene.search.Query textQuery = parser.parse(searchTerm);
// TermQuery projectQuery = new TermQuery(new Term(GroupSearchBridge.PROJECT_FIELD + GroupSearchBridge.PROJECT_FIELD, projectSlug));

org.hibernate.search.jpa.FullTextQuery ftQuery = entityManager.createFullTextQuery(textQuery, HProjectIteration.class);

List<HProjectIteration> matches = (List<HProjectIteration>) ftQuery.getResultList();
return matches;
}
}
Expand Up @@ -36,7 +36,7 @@ public interface VersionGroupService

HIterationGroup getBySlug(String slug);

List<HProjectIteration> findAllContainingName(String searchTerm) throws ParseException;
List<HProjectIteration> findBySlugAndProjectSlug(String searchTerm) throws ParseException;

List<HPerson> getMaintainerBySlug(String slug);

Expand Down
Expand Up @@ -28,6 +28,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.dao.VersionGroupDAO;
import org.zanata.model.HIterationGroup;
import org.zanata.model.HPerson;
Expand All @@ -45,6 +46,9 @@ public class VersionGroupServiceImpl implements VersionGroupService
@In
private VersionGroupDAO versionGroupDAO;

@In
private ProjectIterationDAO projectIterationDAO;

@Override
public List<HIterationGroup> getAllActiveVersionGroups()
{
Expand All @@ -58,9 +62,9 @@ public HIterationGroup getBySlug(String slug)
}

@Override
public List<HProjectIteration> findAllContainingName(String searchTerm) throws ParseException
public List<HProjectIteration> findBySlugAndProjectSlug(String searchTerm) throws ParseException
{
return versionGroupDAO.findAllContainingName(searchTerm);
return projectIterationDAO.findBySlugAndProjectSlug(searchTerm);
}

@Override
Expand Down
Expand Up @@ -69,7 +69,7 @@
<p>
<h:inputText value="#{versionGroupAction.searchTerm}" />
<a4j:commandButton value="#{messages['jsf.Search']}"
action="#{versionGroupAction.searchForProjects}"
action="#{versionGroupAction.searchProjectAndVersion}"
reRender="searchResults"
status="searchStatus" />
<h:commandButton value="#{messages['jsf.Close']}"
Expand Down

0 comments on commit 693af05

Please sign in to comment.