package org.entermedia.profile; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.openedit.Data; import org.openedit.data.PropertyDetails; import org.openedit.data.XmlFileSearcher; import org.openedit.profile.UserProfile; import com.openedit.users.User; import com.openedit.users.UserManager; public class UserProfileSearcher extends XmlFileSearcher { public UserManager getUserManager() { return fieldUserManager; } public void setUserManager(UserManager inUserManager) { fieldUserManager = inUserManager; } protected UserManager fieldUserManager; @Override public Data createNewData() { UserProfile userProfile = (UserProfile) getModuleManager().getBean( "userProfile"); userProfile.setCatalogId(getCatalogId()); // Create new should never save things // User current = getUserManager().createUser(null, new // PasswordGenerator().generate()); // // userProfile.setUser(current); // userProfile.setProperty("userid", current.getId()); return userProfile; } @Override public Object searchById(String inId) { UserProfile search = (UserProfile) super.searchById(inId); if (search == null) { return null; } String userid = search.getUserId(); User user = getUserManager().getUser(userid); search.setUser(user); return search; } // public void saveData(Data inData, User inUser) { // UserProfile profile= (UserProfile)inData; // // // if(profile.getUser() == null) // // { // // User current = getUserManager().getUser(profile.get("userid")); // // if( current == null ) // // { // // log.info("No user found, creating new one"); // // current = getUserManager().createUser(null, null); // // } // // profile.setUser(current); // // profile.setProperty("userid", current.getId()); // // } // // Searcher usersearcher = getSearcherManager().getSearcher("system", // "user"); // // usersearcher.saveData(profile.getUser(), inUser); // // // TODO Auto-generated method stub // super.saveData(inData, inUser); // // } public synchronized String nextId() { return getUserManager().nextId(); } protected void updateIndex(Data inData, Document doc, PropertyDetails inDetails) { if (inData instanceof UserProfile) { UserProfile up = (UserProfile) inData; User user = up.getUser(); if (user != null) { if (user.getFirstName() != null) { doc.add(new Field("firstname", user.getFirstName(), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); } if (user.getLastName() != null) { doc.add(new Field("lastname", user.getFirstName(), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); } } } super.updateIndex(inData, doc, inDetails); } }