/* * Created on Oct 19, 2004 */ package org.openedit.users; import java.util.Collection; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openedit.Data; import org.openedit.data.BaseSearcher; import com.openedit.OpenEditException; import com.openedit.WebPageRequest; import com.openedit.hittracker.HitTracker; import com.openedit.hittracker.ListHitTracker; import com.openedit.hittracker.SearchQuery; import com.openedit.users.Group; import com.openedit.users.User; import com.openedit.users.UserManager; import com.openedit.util.PathUtilities; /** * @author cburkey * */ public class BaseGroupSearcher extends BaseSearcher implements GroupSearcher { private static final Log log = LogFactory.getLog(BaseGroupSearcher.class); protected UserManager fieldUserManager; public HitTracker getAllHits(WebPageRequest inReq) { return getUserManager().getGroups(); //return new ListHitTracker().setList(getCustomerArchive().) } public HitTracker search(SearchQuery inQ) { String inQuery = inQ.toQuery(); int maxNum = 1000; ListHitTracker tracker = new ListHitTracker(); SearchQuery q = createSearchQuery(); q.addMatches(inQuery); tracker.setSearchQuery(q); if ( inQuery == null || inQuery.equalsIgnoreCase("all") || inQuery.length() == 0) { return getAllHits(); } inQuery = inQuery.toLowerCase(); for (Iterator iter = getUserManager().getGroups().iterator(); iter.hasNext();) { Group group = (Group) iter.next(); if( matches(group.getName(),inQuery) ) { tracker.add(group); } if ( tracker.getTotal() >= maxNum) { break; } } return tracker; } protected boolean matches(String inText, String inQuery) { if ( inText != null) { if (PathUtilities.match(inText, inQuery) ) { return true; } } return false; } public UserManager getUserManager() { return fieldUserManager; } public void setUserManager(UserManager inUserManager) { fieldUserManager = inUserManager; } public void reIndexAll() throws OpenEditException { } public void clearIndex() { // TODO Auto-generated method stub } public SearchQuery createSearchQuery() { return new SearchQuery(); } public String getIndexId() { // TODO Auto-generated method stub return null; } public Object searchById(String inId) { return getUserManager().getGroup(inId); } public void saveData(Data inData, User inUser) { getUserManager().saveGroup((Group)inData); } /* (non-Javadoc) * @see org.openedit.users.GroupSearche#getGroup(java.lang.String) */ public Group getGroup(String inGroupId) { return getUserManager().getGroup(inGroupId); } public void saveAllData(Collection inList, User inUser) { } public void delete(Data inData, User inUser) { } public void deleteAll(User inUser) { } public void setCatalogId(String inCatalogId) { if( !"system".equals(inCatalogId) ) { throw new OpenEditException("group searcher should only be a system level not " + inCatalogId ); } super.setCatalogId(inCatalogId); } }