package eu.smartlm.abs.portal.view.ajax; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.gridforum.x2003.urWg.HostDocument.Host; import org.gridforum.x2003.urWg.ProjectNameDocument.ProjectName; import org.gridforum.x2003.urWg.SubmitHostDocument.SubmitHost; import org.gridforum.x2003.urWg.UserIdentityDocument.UserIdentity; import eu.smartlm.abs.portal.data.query.QueryConstructorDummy; import eu.smartlm.abs.portal.data.query.QueryConstructor; import eu.smartlm.abs.portal.data.query.ws.EBSServiceClient; import eu.smartlm.abs.portal.util.StringUtil; import eu.smartlm.abs.portal.view.data.ABSQuery; import eu.smartlm.schemas.x2009.x06.urec.ProductType; public class ListOptionServlet extends HttpServlet { private static final long serialVersionUID = 6207446064054737981L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String ebsInterfaceURL = request.getParameter("ebs_interface_url"); QueryConstructor query; if (ebsInterfaceURL.equalsIgnoreCase("DEMO")) { query = new QueryConstructorDummy(); } else { query = new EBSServiceClient(); try { File rampartDirectory = new File("rampart"); File clientPropertiesFile = new File("client.properties"); query.setUpConnection(ebsInterfaceURL, rampartDirectory.getCanonicalPath(), clientPropertiesFile.getCanonicalPath()); } catch (Exception e) { throw new ServletException("Unable to initialize ConfigurationContext.", e); } } // Extracts the necessary requested information String targetId = request.getParameter("id"); String startDate = request.getParameter("start_date"); String endDate = request.getParameter("end_date"); // Retrieval of the data from the portlet Set productsList = StringUtil.stringToListWithMarker(request.getParameter("products")); Set usersList = StringUtil.stringToListWithMarker(request.getParameter("users")); Set accountingGroupsList = StringUtil.stringToListWithMarker(request.getParameter("accounting_groups")); Set projectsList = StringUtil.stringToListWithMarker(request.getParameter("projects")); Set hostsList = StringUtil.stringToListWithMarker(request.getParameter("hosts")); Set submitHostsList = StringUtil.stringToListWithMarker(request.getParameter("submithosts")); Set securityUserFilter = StringUtil.stringToListWithMarker(request.getParameter("securityuserfilter")); Set securityAccountingGroupFilter = StringUtil.stringToListWithMarker(request.getParameter("securityaccountingfilter")); // We add the security filters to the query: for(String userFilter : securityUserFilter) usersList.add(userFilter); for(String accountingGroupFilter : securityAccountingGroupFilter) accountingGroupsList.add(accountingGroupFilter); // Change this when implemented!!!! Set features = new HashSet(); // Checks with information it needs. if (targetId != null) { response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); String responseText = ""; if (targetId.equals(ABSQuery.PRODUCT)) { Set products = query.getListOfProducts( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (ProductType product : products) { responseText = responseText + " " + product.getProductId() + " " + product.getName() + " "; } } else if (targetId.equals(ABSQuery.USER)) { Set users = query.getListOfUsers( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (UserIdentity user : users) { responseText = responseText + " " + user.getLocalUserId() + " " + user.getLocalUserId() + " "; } } else if (targetId.equals(ABSQuery.ACCOUNTINGGROUP)) { Set accountingGroups = query.getListOfAccountingGroups( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (String accountingGroup : accountingGroups) { responseText = responseText + " " + accountingGroup + " " + accountingGroup + " "; } } else if (targetId.equals(ABSQuery.HOST)) { Set hosts = query.getListOfHosts( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (Host host : hosts) { responseText = responseText + " " + host.getStringValue() + " " + host.getStringValue() + " "; } } else if (targetId.equals(ABSQuery.SUBMITHOST)) { Set submitHosts = query.getListOfSubmitHosts( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (SubmitHost submitHost : submitHosts) { responseText = responseText + " " + submitHost.getStringValue() + " " + submitHost.getStringValue() + " "; } } else if (targetId.equals(ABSQuery.PROJECT)) { Set projects = query.getListOfProjects( StringUtil.getDate(startDate, false), StringUtil.getDate(endDate, true), usersList, productsList, projectsList, hostsList, submitHostsList, features, accountingGroupsList); for (ProjectName project : projects) { responseText = responseText + " " + project.getStringValue() + " " + project.getStringValue() + " "; } } responseText = responseText + ""; response.getWriter().write(responseText); } } }