Java tutorial
/******************************************************************************* * Copyright (c) 2009 David Harrison. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl-3.0.html * * Contributors: * David Harrison - initial API and implementation ******************************************************************************/ package com.sfs.whichdoctor.search.http; import com.sfs.DataFilter; import com.sfs.beans.UserBean; import com.sfs.whichdoctor.beans.AddressBean; import com.sfs.whichdoctor.beans.EmailBean; import com.sfs.whichdoctor.beans.FinancialSummaryBean; import com.sfs.whichdoctor.beans.OrganisationBean; import com.sfs.whichdoctor.beans.SearchBean; import com.sfs.whichdoctor.beans.SpecialtyBean; import com.sfs.whichdoctor.search.sql.OrganisationSqlHandler; import java.util.ArrayList; import java.util.Collection; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; /** * The Class OrganisationInputHandler. * * @author David Harrison */ public class OrganisationInputHandler extends InputHandlerBase { /** The organisation sql handler. */ @Resource private OrganisationSqlHandler organisationSqlHandler; /** * Process the incoming HttpRequest for search parameters. * * @param request the request * @param user the user * * @return the search bean */ public final SearchBean process(final HttpServletRequest request, final UserBean user) { SearchBean search = organisationSqlHandler.initiate(user); OrganisationBean searchCriteria = (OrganisationBean) search.getSearchCriteria(); OrganisationBean searchConstraints = (OrganisationBean) search.getSearchConstraints(); /* Process search form */ String strGUIDList = DataFilter.getHtml(request.getParameter("guidList")); String strIncludeGUIDList = DataFilter.getHtml(request.getParameter("includeGUIDList")); String strName = DataFilter.getHtml(request.getParameter("name")); String strType = DataFilter.getHtml(request.getParameter("type")); String strTrainingOrganisation = DataFilter.getHtml(request.getParameter("trainingOrganisation")); String strTrainingProgram = DataFilter.getHtml(request.getParameter("trainingProgram")); String strSpecialtyStatus = DataFilter.getHtml(request.getParameter("specialtyStatus")); String strRegion = DataFilter.getHtml(request.getParameter("region")); String strAddressClass = DataFilter.getHtml(request.getParameter("addressClass")); String strAddressType = DataFilter.getHtml(request.getParameter("addressType")); String strAddressReturnedMail = DataFilter.getHtml(request.getParameter("addressReturnedMail")); String strAddressRequestNoMail = DataFilter.getHtml(request.getParameter("addressRequestNoMail")); String strCountry = DataFilter.getHtml(request.getParameter("country")); String strCity = DataFilter.getHtml(request.getParameter("city")); String strEmailType = DataFilter.getHtml(request.getParameter("emailType")); String strEmailReturnedMail = DataFilter.getHtml(request.getParameter("emailReturnedMail")); String strEmailRequestNoMail = DataFilter.getHtml(request.getParameter("emailRequestNoMail")); String strClosingBalanceA = DataFilter.getHtml(request.getParameter("closingBalanceA")); String strClosingBalanceB = DataFilter.getHtml(request.getParameter("closingBalanceB")); String strCreatedA = DataFilter.getHtml(request.getParameter("createdA")); String strCreatedB = DataFilter.getHtml(request.getParameter("createdB")); String strUpdatedA = DataFilter.getHtml(request.getParameter("updatedA")); String strUpdatedB = DataFilter.getHtml(request.getParameter("updatedB")); if (StringUtils.isNotBlank(strGUIDList)) { // Parse the GUID list string into a collection of strings searchCriteria.setGUIDList(DataFilter.parseTextDataToCollection(strGUIDList)); } if (StringUtils.isNotBlank(strIncludeGUIDList)) { // Parse the GUID list string into a collection of strings searchCriteria.setIncludeGUIDList(DataFilter.parseTextDataToCollection(strIncludeGUIDList)); } /* Set first and last name requirements */ if (StringUtils.isNotBlank(strName)) { searchCriteria.setName(strName.trim()); } /* Set type requirements */ if (StringUtils.isNotBlank(strType) && !StringUtils.equals(strType, "Null")) { searchCriteria.setType(strType.trim()); } /* Tag searches */ searchCriteria.setTags(this.setTagArray(request, user)); /* Check if specialtyAge or Type was set */ boolean specialty = false; SpecialtyBean specialtyCriteria = new SpecialtyBean(); if (StringUtils.isNotBlank(strTrainingOrganisation) && !StringUtils.equals(strTrainingOrganisation, "Null")) { specialtyCriteria.setTrainingOrganisation(strTrainingOrganisation); specialty = true; } if (StringUtils.isNotBlank(strTrainingProgram) && !StringUtils.equals(strTrainingProgram, "Null")) { specialtyCriteria.setTrainingProgram(strTrainingProgram); specialty = true; } if (StringUtils.isNotBlank(strSpecialtyStatus) && !StringUtils.equals(strSpecialtyStatus, "Null")) { specialtyCriteria.setStatus(strSpecialtyStatus); specialty = true; } if (specialty) { Collection<SpecialtyBean> specialties = new ArrayList<SpecialtyBean>(); specialties.add(specialtyCriteria); searchCriteria.setSpecialtyList(specialties); } /* Set organisation region */ if (StringUtils.isNotBlank(strRegion) && !StringUtils.equals(strRegion, "Null")) { searchCriteria.setRegion(strRegion); } // Check if Address details have been submitted boolean address = false; AddressBean addressCriteria = new AddressBean(); AddressBean addressConstraints = new AddressBean(); // Address defaults addressCriteria.setReturnedMail(false); addressConstraints.setReturnedMail(true); addressCriteria.setRequestNoMail(false); addressConstraints.setRequestNoMail(true); // Set the address class and type - but don't set the address flag yet if (StringUtils.isNotBlank(strAddressClass)) { if (StringUtils.equalsIgnoreCase(strAddressClass, "Preferred")) { // Set the primary flag to true addressCriteria.setPrimary(true); addressConstraints.setPrimary(true); } else { // Set the address class addressCriteria.setContactClass(strAddressClass); } } if (StringUtils.isNotBlank(strAddressType)) { // Set the address type addressCriteria.setContactType(strAddressType); } // Set the address city if (StringUtils.isNotBlank(strCity)) { addressCriteria.setAddressField(strCity); address = true; } // Set the address country if (StringUtils.isNotBlank(strCountry)) { addressCriteria.setCountry(strCountry); address = true; } // Set the returned mail if (StringUtils.equals(strAddressReturnedMail, "true")) { addressCriteria.setReturnedMail(true); addressConstraints.setReturnedMail(true); address = true; } if (StringUtils.equals(strAddressReturnedMail, "false")) { addressCriteria.setReturnedMail(false); addressConstraints.setReturnedMail(false); address = true; } // Set the request mail if (StringUtils.equals(strAddressRequestNoMail, "true")) { addressCriteria.setRequestNoMail(true); addressConstraints.setRequestNoMail(true); address = true; } if (StringUtils.equals(strAddressRequestNoMail, "false")) { addressCriteria.setRequestNoMail(false); addressConstraints.setRequestNoMail(false); address = true; } if (address) { Collection<AddressBean> addresses = new ArrayList<AddressBean>(); Collection<AddressBean> addresses2 = new ArrayList<AddressBean>(); addresses.add(addressCriteria); addresses2.add(addressConstraints); searchCriteria.setAddress(addresses); searchConstraints.setAddress(addresses2); } // Check if Email details have been submitted boolean email = false; EmailBean emailCriteria = new EmailBean(); EmailBean emailConstraints = new EmailBean(); // Email defaults emailCriteria.setReturnedMail(true); emailConstraints.setReturnedMail(false); emailCriteria.setRequestNoMail(true); emailConstraints.setRequestNoMail(false); emailCriteria.setEmailQuestions(true); emailConstraints.setEmailQuestions(false); // Set the email type - but don't set the address flag yet if (StringUtils.isNotBlank(strEmailType)) { if (StringUtils.equalsIgnoreCase(strEmailType, "Preferred")) { // Set the primary flag to true emailCriteria.setPrimary(true); emailConstraints.setPrimary(true); } else { // Set the email type emailCriteria.setContactType(strEmailType); } } if (StringUtils.equals(strEmailReturnedMail, "true")) { emailCriteria.setReturnedMail(true); emailConstraints.setReturnedMail(true); email = true; } if (StringUtils.equals(strEmailReturnedMail, "false")) { emailCriteria.setReturnedMail(false); emailConstraints.setReturnedMail(false); email = true; } if (StringUtils.equals(strEmailRequestNoMail, "true")) { emailCriteria.setRequestNoMail(true); emailConstraints.setRequestNoMail(true); email = true; } if (StringUtils.equals(strEmailRequestNoMail, "false")) { emailCriteria.setRequestNoMail(false); emailConstraints.setRequestNoMail(false); email = true; } if (email) { Collection<EmailBean> emails = new ArrayList<EmailBean>(); Collection<EmailBean> emails2 = new ArrayList<EmailBean>(); emails.add(emailCriteria); emails2.add(emailConstraints); searchCriteria.setEmail(emails); searchConstraints.setEmail(emails2); } if (StringUtils.isNotBlank(strClosingBalanceA) && !StringUtils.equals(strClosingBalanceA, "Null")) { // Something has been defined for this field double closingBalanceA = 0; double closingBalanceB = 0; try { closingBalanceA = Double.parseDouble(strClosingBalanceA); } catch (NumberFormatException nfe) { closingBalanceA = 0; } try { closingBalanceB = Double.parseDouble(strClosingBalanceB); } catch (NumberFormatException nfe) { closingBalanceB = 0; } if (StringUtils.equals(strClosingBalanceB, "-")) { closingBalanceB = -100000000; } if (StringUtils.equals(strClosingBalanceB, "+")) { closingBalanceB = 100000000; } FinancialSummaryBean financialSummaryCriteria = new FinancialSummaryBean(); // This is a unique id to indicate the financial summary has been set financialSummaryCriteria.setId(1); financialSummaryCriteria.setClosingBalance(closingBalanceA); searchCriteria.setFinancialSummary(financialSummaryCriteria); if (closingBalanceB != 0) { FinancialSummaryBean financialSummaryConstraints = new FinancialSummaryBean(); financialSummaryConstraints.setClosingBalance(closingBalanceB); searchConstraints.setFinancialSummary(financialSummaryConstraints); } } if (StringUtils.isNotBlank(strCreatedA)) { searchCriteria.setCreatedDate(DataFilter.parseDate(strCreatedA, false)); } if (StringUtils.isNotBlank(strCreatedB)) { searchConstraints.setCreatedDate(DataFilter.parseDate(strCreatedB, false)); if (StringUtils.equals(strCreatedB, "+")) { /* All dates above Date A requested */ searchConstraints.setCreatedDate(getMaximumDate()); } if (StringUtils.equals(strCreatedB, "-")) { /* Add dates below Date A requested */ searchConstraints.setCreatedDate(getMinimumDate()); } } if (StringUtils.isNotBlank(strUpdatedA)) { searchCriteria.setModifiedDate(DataFilter.parseDate(strUpdatedA, false)); } if (StringUtils.isNotBlank(strUpdatedB)) { searchConstraints.setModifiedDate(DataFilter.parseDate(strUpdatedB, false)); if (StringUtils.equals(strUpdatedB, "+")) { /* All dates above Date A requested */ searchConstraints.setModifiedDate(getMaximumDate()); } if (StringUtils.equals(strUpdatedB, "-")) { /* Add dates below Date A requested */ searchConstraints.setModifiedDate(getMinimumDate()); } } search.setSearchCriteria(searchCriteria); search.setSearchConstraints(searchConstraints); return search; } /** * Return a standard search bean. * * @param user the user * * @return the search bean */ public final SearchBean process(final UserBean user) { SearchBean search = organisationSqlHandler.initiate(user); OrganisationBean searchCriteria = (OrganisationBean) search.getSearchCriteria(); search.setSearchCriteria(searchCriteria); return search; } }