/*
* Created on Jan 23, 2005
*/
package com.idega.user.presentation.inputhandler;
import java.rmi.RemoteException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.business.InputHandler;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.ui.SelectionBox;
import com.idega.user.data.Status;
import com.idega.user.data.StatusHome;
/**
* @author Sigtryggur
*/
public class UserStatusSelectionBoxInputHandler extends SelectionBox implements InputHandler {
private static final String IW_BUNDLE_IDENTIFIER = "com.idega.user";
private List _allUserStatuses = new ArrayList();
public UserStatusSelectionBoxInputHandler() {
super();
}
public UserStatusSelectionBoxInputHandler(String name) {
super(name);
}
public void main(IWContext iwc) {
initialize(iwc);
super.main(iwc);
}
private void initialize(IWContext iwc) {
try {
final IWResourceBundle iwrb = this.getResourceBundle(iwc);
List userStatuses = (List) ((StatusHome)IDOLookup.getHome(Status.class)).findAll();
if (userStatuses != null && !userStatuses.isEmpty()) {
final Collator collator = Collator.getInstance(iwc.getLocale());
Collections.sort(userStatuses,new Comparator() {
public int compare(Object arg0, Object arg1) {
return collator.compare(iwrb.getLocalizedString(((Status) arg0).getStatusKey(), ((Status) arg0).getStatusKey()), iwrb.getLocalizedString(((Status) arg1).getStatusKey(), ((Status) arg1).getStatusKey()));
}
});
Iterator iter = userStatuses.iterator();
while (iter.hasNext()) {
Status status = (Status) iter.next();
String name = status.getStatusKey();
if(name!=null) {
addMenuElement(name, iwrb.getLocalizedString(name,name));
this._allUserStatuses.add(name);
}
}
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
}
public PresentationObject getHandlerObject(String name, String value, IWContext iwc) {
this.setName(name);
if (value != null) {
this.setSelectedElement(value);
}
return this;
}
public Object getResultingObject(String[] values, IWContext iwc) throws Exception {
Collection userStatuses = null;
if (values != null && values.length > 0) {
userStatuses = new ArrayList();
for(int i=0; i<values.length; i++) {
userStatuses.add(values[i]);
}
} else {
userStatuses = this._allUserStatuses;
}
return userStatuses;
}
public String getDisplayForResultingObject(Object value, IWContext iwc) {
Collection userStatuses = (Collection) value;
if (userStatuses == null || userStatuses.isEmpty()) {
return this.getResourceBundle(iwc).getLocalizedString("UserStatusSelectionBox.none_selected","None Selected");
}
String result = null;
IWResourceBundle iwrb = getResourceBundle(iwc);
if(userStatuses != null) {
StringBuffer buf = new StringBuffer();
Iterator gtIter = userStatuses.iterator();
boolean isFirst = true;
while(gtIter.hasNext()) {
if(isFirst) {
isFirst=false;
} else {
buf.append(",");
}
String name = (String) gtIter.next();
buf.append(iwrb.getLocalizedString(name,name));
}
result = buf.toString();
}
return result;
}
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
public PresentationObject getHandlerObject(String name, Collection values, IWContext iwc) {
SelectionBox box = (SelectionBox) getHandlerObject(name, (String) null, iwc);
if (values != null) {
Iterator iterator = values.iterator();
while (iterator.hasNext()) {
String value = (String) iterator.next();
box.setSelectedElement(value);
}
}
return box;
}
public Object convertSingleResultingObjectToType(Object value, String className) {
return value;
}
}