/* * Created on Oct 19, 2004 */ package org.openedit.users; import java.util.Collection; import java.util.Iterator; import java.util.List; 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 * @deprecated use LuceneUserSearcher */ public class UserManagerSearcher extends BaseSearcher implements UserSearcher { private static final Log log = LogFactory.getLog(UserSearcher.class); protected UserManager fieldUserManager; public HitTracker getAllHits(WebPageRequest inReq) { SearchQuery q = createSearchQuery(); q.addMatches("all"); return search(q); } 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) { for (Iterator iter = getUserManager().listUserNames().iterator(); iter.hasNext() && tracker.getTotal() < maxNum;) { String username = (String) iter.next(); User user = getUserManager().getUser(username); tracker.add(user); } return tracker; } inQuery = inQuery.toLowerCase(); for (Iterator iter = getUserManager().listUserNames().iterator(); iter.hasNext();) { String username = (String) iter.next(); if( matches(username,inQuery) ) { User user = getUserManager().getUser(username); tracker.add(user); } else if( maxNum < 1001) { //check email User user = getUserManager().getUser(username); for (Iterator iterator = user.getProperties().values().iterator(); iterator.hasNext();) { String val = (String) iterator.next(); if( matches(val,inQuery ) ) { tracker.add(user); } } } 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().getUser(inId); } public void saveData(Data inData, User inUser) { if( inData instanceof User) { getUserManager().saveUser( (User)inData ); } } /* (non-Javadoc) * @see org.openedit.users.UserSearcherI#getUser(java.lang.String) */ public User getUser(String inAccount) { User user = (User)searchById(inAccount); return user; } /* (non-Javadoc) * @see org.openedit.users.UserSearcherI#getUserByEmail(java.lang.String) */ public User getUserByEmail(String inEmail) { return getUserManager().getUserByEmail(inEmail); } public HitTracker getUsersInGroup(Group inGroup) { return getUserManager().getUsersInGroup(inGroup); } public void saveUsers(List userstosave, User user) { // TODO Auto-generated method stub } public void saveAllData(Collection inList, User inUser) { } public void delete(Data inData, User inUser) { } public void deleteAll(User inUser) { } }