package org.distributeme.registry.ui.action;
import net.anotheria.maf.action.ActionCommand;
import net.anotheria.maf.action.ActionMapping;
import net.anotheria.maf.bean.FormBean;
import org.distributeme.core.ServiceDescriptor;
import org.distributeme.registry.ui.bean.ServiceDescriptorFormBean;
import org.distributeme.registry.ui.bean.ServiceDescriptorFormBeanSortType;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* Action that prepares model for showing registry content.
* @author dsilenko
*/
public class RegistryListAction extends BaseRegistryAction {
/**
* Attribute name for bindings.
*/
private static final String BINDINGS_ATTRIBUTE_NAME = "bindings";
@Override
public ActionCommand execute(ActionMapping mapping, FormBean formBean, HttpServletRequest req, HttpServletResponse res) throws Exception {
List<ServiceDescriptor> descriptors = getRegistry().list();
List<ServiceDescriptorFormBean> bindings = new ArrayList<ServiceDescriptorFormBean>(descriptors.size());
for (ServiceDescriptor descriptor : descriptors){
ServiceDescriptorFormBean bean = map(descriptor);
bindings.add(bean);
}
//
int pSortBy = ServiceDescriptorFormBeanSortType.SORT_DEFAULT;
try{
pSortBy = Integer.parseInt(req.getParameter("pSortBy"));
}catch(Exception ignored){}
boolean pSortOrder = true;
try{
String sSortOrder =req.getParameter("pSortOrder");
if (sSortOrder!=null && sSortOrder.equalsIgnoreCase("false"))
pSortOrder = false;
}catch(Exception ignored){}
ServiceDescriptorFormBeanSortType st = new ServiceDescriptorFormBeanSortType(pSortBy, pSortOrder);
bindings = net.anotheria.util.sorter.StaticQuickSorter.sort(bindings, st);
req.setAttribute(BINDINGS_ATTRIBUTE_NAME, bindings);
req.setAttribute("numberOfBindings", bindings.size());
return mapping.success();
}
/**
* Maps fields from ServiceDescriptor to new instance of ServiceDescriptorFormBean.
* @param serviceDescriptor object to map
* @return new instance of ServiceDescriptorFormBean
*/
private ServiceDescriptorFormBean map(ServiceDescriptor serviceDescriptor){
ServiceDescriptorFormBean formBean = new ServiceDescriptorFormBean();
formBean.setGlobalServiceId(serviceDescriptor.getGlobalServiceId());
formBean.setServiceId(serviceDescriptor.getServiceId());
formBean.setInstanceId(serviceDescriptor.getInstanceId());
formBean.setProtocol(serviceDescriptor.getProtocol());
formBean.setHost(serviceDescriptor.getHost());
formBean.setPort(serviceDescriptor.getPort());
formBean.setRegistrationString(serviceDescriptor.getRegistrationString());
return formBean;
}
}