Java tutorial
/** * @(#)HandlerCases.java 1.0.0 1:56:21 PM * * Idega Software hf. Source Code Licence Agreement x * * This agreement, made this 10th of February 2006 by and between * Idega Software hf., a business formed and operating under laws * of Iceland, having its principal place of business in Reykjavik, * Iceland, hereinafter after referred to as "Manufacturer" and Agura * IT hereinafter referred to as "Licensee". * 1. License Grant: Upon completion of this agreement, the source * code that may be made available according to the documentation for * a particular software product (Software) from Manufacturer * (Source Code) shall be provided to Licensee, provided that * (1) funds have been received for payment of the License for Software and * (2) the appropriate License has been purchased as stated in the * documentation for Software. As used in this License Agreement, * Licensee shall also mean the individual using or installing * the source code together with any individual or entity, including * but not limited to your employer, on whose behalf you are acting * in using or installing the Source Code. By completing this agreement, * Licensee agrees to be bound by the terms and conditions of this Source * Code License Agreement. This Source Code License Agreement shall * be an extension of the Software License Agreement for the associated * product. No additional amendment or modification shall be made * to this Agreement except in writing signed by Licensee and * Manufacturer. This Agreement is effective indefinitely and once * completed, cannot be terminated. Manufacturer hereby grants to * Licensee a non-transferable, worldwide license during the term of * this Agreement to use the Source Code for the associated product * purchased. In the event the Software License Agreement to the * associated product is terminated; (1) Licensee's rights to use * the Source Code are revoked and (2) Licensee shall destroy all * copies of the Source Code including any Source Code used in * Licensee's applications. * 2. License Limitations * 2.1 Licensee may not resell, rent, lease or distribute the * Source Code alone, it shall only be distributed as a * compiled component of an application. * 2.2 Licensee shall protect and keep secure all Source Code * provided by this this Source Code License Agreement. * All Source Code provided by this Agreement that is used * with an application that is distributed or accessible outside * Licensee's organization (including use from the Internet), * must be protected to the extent that it cannot be easily * extracted or decompiled. * 2.3 The Licensee shall not resell, rent, lease or distribute * the products created from the Source Code in any way that * would compete with Idega Software. * 2.4 Manufacturer's copyright notices may not be removed from * the Source Code. * 2.5 All modifications on the source code by Licencee must * be submitted to or provided to Manufacturer. * 3. Copyright: Manufacturer's source code is copyrighted and contains * proprietary information. Licensee shall not distribute or * reveal the Source Code to anyone other than the software * developers of Licensee's organization. Licensee may be held * legally responsible for any infringement of intellectual property * rights that is caused or encouraged by Licensee's failure to abide * by the terms of this Agreement. Licensee may make copies of the * Source Code provided the copyright and trademark notices are * reproduced in their entirety on the copy. Manufacturer reserves * all rights not specifically granted to Licensee. * * 4. Warranty & Risks: Although efforts have been made to assure that the * Source Code is correct, reliable, date compliant, and technically * accurate, the Source Code is licensed to Licensee as is and without * warranties as to performance of merchantability, fitness for a * particular purpose or use, or any other warranties whether * expressed or implied. Licensee's organization and all users * of the source code assume all risks when using it. The manufacturers, * distributors and resellers of the Source Code shall not be liable * for any consequential, incidental, punitive or special damages * arising out of the use of or inability to use the source code or * the provision of or failure to provide support services, even if we * have been advised of the possibility of such damages. In any case, * the entire liability under any provision of this agreement shall be * limited to the greater of the amount actually paid by Licensee for the * Software or 5.00 USD. No returns will be provided for the associated * License that was purchased to become eligible to receive the Source * Code after Licensee receives the source code. */ package is.idega.idegaweb.egov.cases.presentation; import is.idega.idegaweb.egov.cases.business.CaseWriter; import is.idega.idegaweb.egov.cases.data.CaseCategory; import is.idega.idegaweb.egov.cases.data.CaseType; import is.idega.idegaweb.egov.cases.data.GeneralCase; import java.rmi.RemoteException; import java.util.Collection; import javax.ejb.FinderException; import org.springframework.beans.factory.annotation.Autowired; import com.idega.block.process.business.CasesRetrievalManager; import com.idega.block.process.data.CaseLog; import com.idega.block.process.presentation.UserCases; import com.idega.block.web2.business.JQuery; import com.idega.business.IBORuntimeException; import com.idega.core.file.data.ICFile; import com.idega.presentation.IWContext; import com.idega.presentation.Layer; import com.idega.presentation.Span; import com.idega.presentation.text.Heading1; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.Label; import com.idega.presentation.ui.TextArea; import com.idega.presentation.ui.util.SelectorUtility; import com.idega.user.data.User; import com.idega.util.CoreConstants; import com.idega.util.IWTimestamp; import com.idega.util.PresentationUtil; import com.idega.util.expression.ELUtil; import com.idega.util.text.TextSoap; /** * <p>Cases viewer for current handler only, show cases that only * current handler manages.</p> * <p>You can report about problems to: * <a href="mailto:martynas@idega.is">Martynas Stak</a></p> * * @version 1.0.0 Jan 17, 2013 * @author <a href="mailto:martynas@idega.is">Martynas Stak</a> */ public class HandlerCases extends CasesProcessor { @Autowired private JQuery jQuery; private JQuery getJQuery() { if (jQuery == null) { ELUtil.getInstance().autowire(this); } return jQuery; } @Override protected void present(IWContext iwc) throws Exception { ELUtil.getInstance().autowire(this); } @Override public boolean showCheckBox() { return false; } @Override public boolean showCheckBoxes() { return false; } @Override public String getCasesProcessorType() { return CasesRetrievalManager.CASE_LIST_TYPE_HANDLER; } @Override protected String getBlockID() { return "handlerCases"; } @Override protected void showProcessor(IWContext iwc, Object casePK) throws RemoteException { PresentationUtil.addJavaScriptSourceLineToHeader(iwc, getJQuery().getBundleURIToJQueryLib()); PresentationUtil.addJavaScriptSourceLineToHeader(iwc, CoreConstants.DWR_ENGINE_SCRIPT); PresentationUtil.addJavaScriptSourceLineToHeader(iwc, CoreConstants.DWR_UTIL_SCRIPT); PresentationUtil.addJavaScriptSourceLineToHeader(iwc, "/dwr/interface/CasesBusiness.js"); PresentationUtil.addJavaScriptSourceLineToHeader(iwc, getBundle().getVirtualPathWithFileNameString("javascript/egov_cases.js")); Form form = new Form(); form.setStyleClass("adminForm"); form.setStyleClass("overview"); form.maintainParameter(PARAMETER_CASE_PK); form.addParameter(UserCases.PARAMETER_ACTION, ""); HiddenInput localeInput = new HiddenInput("current_locale", iwc.getCurrentLocale().getCountry().toLowerCase()); localeInput.setID("casesLocale"); form.add(localeInput); boolean useSubCategories = getCasesBusiness(iwc).useSubCategories(); GeneralCase theCase = null; try { theCase = getCasesBusiness().getGeneralCase(casePK); } catch (FinderException fe) { fe.printStackTrace(); throw new IBORuntimeException(fe); } CaseCategory category = theCase.getCaseCategory(); CaseCategory parentCategory = category.getParent(); CaseType type = theCase.getCaseType(); ICFile attachment = theCase.getAttachment(); User owner = theCase.getOwner(); IWTimestamp created = new IWTimestamp(theCase.getCreated()); form.add(getPersonInfo(iwc, owner)); Heading1 heading = new Heading1( getResourceBundle().getLocalizedString(getPrefix() + "case_overview", "Case overview")); heading.setStyleClass("subHeader"); heading.setStyleClass("topSubHeader"); form.add(heading); Layer section = new Layer(Layer.DIV); section.setStyleClass("formSection"); form.add(section); if (theCase.isPrivate()) { section.add(getAttentionLayer(getResourceBundle().getLocalizedString(getPrefix() + "case.is_private", "The sender wishes that this case be handled as confidential."))); } Layer clear = new Layer(Layer.DIV); clear.setStyleClass("Clear"); SelectorUtility util = new SelectorUtility(); DropdownMenu categories = (DropdownMenu) util.getSelectorFromIDOEntities( new DropdownMenu(PARAMETER_CASE_CATEGORY_PK), getCasesBusiness().getCaseCategories(), "getName"); categories.setID("casesParentCategory"); categories.keepStatusOnAction(true); categories.setSelectedElement(parentCategory != null ? parentCategory.getPrimaryKey().toString() : category.getPrimaryKey().toString()); categories.setStyleClass("caseCategoryDropdown"); DropdownMenu subCategories = new DropdownMenu(PARAMETER_SUB_CASE_CATEGORY_PK); subCategories.setID("casesSubCategory"); subCategories.keepStatusOnAction(true); subCategories.setSelectedElement(category.getPrimaryKey().toString()); subCategories.setStyleClass("subCaseCategoryDropdown"); if (parentCategory != null) { @SuppressWarnings("unchecked") Collection<CaseCategory> collection = getCasesBusiness(iwc).getSubCategories(parentCategory); if (collection.isEmpty()) subCategories.addMenuElement(category.getPrimaryKey().toString(), getResourceBundle().getLocalizedString("case_creator.no_sub_category", "no sub category")); else for (CaseCategory subCategory : collection) subCategories.addMenuElement(subCategory.getPrimaryKey().toString(), subCategory.getLocalizedCategoryName(iwc.getCurrentLocale())); } DropdownMenu types = (DropdownMenu) util.getSelectorFromIDOEntities( new DropdownMenu(PARAMETER_CASE_TYPE_PK), getCasesBusiness().getCaseTypes(), "getName"); types.keepStatusOnAction(true); types.setSelectedElement(type.getPrimaryKey().toString()); types.setStyleClass("caseTypeDropdown"); HiddenInput hiddenType = new HiddenInput(PARAMETER_CASE_TYPE_PK, type.getPrimaryKey().toString()); DropdownMenu statuses = new DropdownMenu(PARAMETER_STATUS); statuses.addMenuElement(getCasesBusiness().getCaseStatusPending().getStatus(), getCasesBusiness().getLocalizedCaseStatusDescription(theCase, getCasesBusiness().getCaseStatusPending(), iwc.getCurrentLocale())); statuses.addMenuElement(getCasesBusiness().getCaseStatusWaiting().getStatus(), getCasesBusiness().getLocalizedCaseStatusDescription(theCase, getCasesBusiness().getCaseStatusWaiting(), iwc.getCurrentLocale())); statuses.addMenuElement(getCasesBusiness().getCaseStatusReady().getStatus(), getCasesBusiness().getLocalizedCaseStatusDescription(theCase, getCasesBusiness().getCaseStatusReady(), iwc.getCurrentLocale())); statuses.setSelectedElement(theCase.getStatus()); statuses.setStyleClass("caseStatusDropdown"); Layer message = new Layer(Layer.SPAN); if (theCase.getMessage() != null) { message.add(new Text(TextSoap.formatText(theCase.getMessage()))); } else { message.add(Text.getNonBrakingSpace()); } Layer createdDate = new Layer(Layer.SPAN); createdDate.add(new Text( created.getLocaleDateAndTime(iwc.getCurrentLocale(), IWTimestamp.SHORT, IWTimestamp.SHORT))); TextArea reply = new TextArea(PARAMETER_REPLY); reply.setStyleClass("textarea"); reply.keepStatusOnAction(true); Layer formItem = new Layer(Layer.DIV); formItem.setStyleClass("formItem"); Label label = new Label(); label.setLabel(getResourceBundle().getLocalizedString("case_nr", "Case nr")); formItem.add(label); formItem.add(new Span(new Text(theCase.getPrimaryKey().toString()))); section.add(formItem); if (getCasesBusiness().useTypes()) { Layer element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(getResourceBundle().getLocalizedString("case_type", "Case type"), types); element.add(label); element.add(types); section.add(element); } else { form.add(hiddenType); } Layer element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(getResourceBundle().getLocalizedString("case_category", "Case category"), categories); element.add(label); element.add(categories); section.add(element); if (useSubCategories) { element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(getResourceBundle().getLocalizedString("sub_case_category", "Sub case category"), subCategories); element.add(label); element.add(subCategories); section.add(element); } element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(); label.setLabel(getResourceBundle().getLocalizedString("created_date", "Created date")); element.add(label); element.add(createdDate); section.add(element); if (attachment != null) { Link link = new Link(new Text(attachment.getName())); link.setFile(attachment); link.setTarget(Link.TARGET_BLANK_WINDOW); Layer attachmentSpan = new Layer(Layer.SPAN); attachmentSpan.add(link); element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(); label.setLabel(getResourceBundle().getLocalizedString("attachment", "Attachment")); element.add(label); element.add(attachmentSpan); section.add(element); } if (theCase.getSubject() != null) { formItem = new Layer(Layer.DIV); formItem.setStyleClass("formItem"); label = new Label(); label.setLabel(getResourceBundle().getLocalizedString("regarding", "Regarding")); formItem.add(label); formItem.add(new Span(new Text(theCase.getSubject()))); section.add(formItem); } element = new Layer(Layer.DIV); element.setStyleClass("formItem"); element.setStyleClass("informationItem"); label = new Label(); label.setLabel(getResourceBundle().getLocalizedString(getPrefix() + "message", "Message")); element.add(label); element.add(message); section.add(element); section.add(clear); heading = new Heading1(getResourceBundle().getLocalizedString("handler_overview", "Handler overview")); heading.setStyleClass("subHeader"); form.add(heading); section = new Layer(Layer.DIV); section.setStyleClass("formSection"); form.add(section); element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(getResourceBundle().getLocalizedString("status", "status"), statuses); element.add(label); element.add(statuses); section.add(element); element = new Layer(Layer.DIV); element.setStyleClass("formItem"); label = new Label(getResourceBundle().getLocalizedString("reply", "Reply"), reply); element.add(label); element.add(reply); section.add(element); section.add(clear); @SuppressWarnings("unchecked") Collection<CaseLog> logs = getCasesBusiness(iwc).getCaseLogs(theCase); if (!logs.isEmpty()) { for (CaseLog log : logs) { form.add(getHandlerLayer(iwc, this.getResourceBundle(), theCase, log)); } } Layer bottom = new Layer(Layer.DIV); bottom.setStyleClass("bottom"); form.add(bottom); Link back = getButtonLink(getResourceBundle().getLocalizedString("back", "Back")); back.setStyleClass("homeButton"); back.setValueOnClick(UserCases.PARAMETER_ACTION, String.valueOf(ACTION_VIEW)); back.setToFormSubmit(form); bottom.add(back); Link pdf = getDownloadButtonLink(getResourceBundle().getLocalizedString("fetch_pdf", "Fetch PDF"), CaseWriter.class); pdf.addParameter(getCasesBusiness().getSelectedCaseParameter(), theCase.getPrimaryKey().toString()); bottom.add(pdf); Link next = getButtonLink(getResourceBundle().getLocalizedString("process", "Process")); next.setValueOnClick(UserCases.PARAMETER_ACTION, String.valueOf(ACTION_SAVE)); next.setToFormSubmit(form); bottom.add(next); add(form); } @Override protected void save(IWContext iwc) throws RemoteException { Object casePK = iwc.getParameter(PARAMETER_CASE_PK); Object caseCategoryPK = iwc.getParameter(PARAMETER_CASE_CATEGORY_PK); Object subCaseCategoryPK = iwc.getParameter(PARAMETER_SUB_CASE_CATEGORY_PK); Object caseTypePK = iwc.getParameter(PARAMETER_CASE_TYPE_PK); String status = iwc.getParameter(PARAMETER_STATUS); String reply = iwc.getParameter(PARAMETER_REPLY); try { getCasesBusiness().handleCase(casePK, subCaseCategoryPK != null ? subCaseCategoryPK : caseCategoryPK, caseTypePK, status, iwc.getCurrentUser(), reply, iwc); } catch (FinderException fe) { fe.printStackTrace(); } } @Override protected void initializeTableSorter(IWContext iwc) throws RemoteException { StringBuilder buffer = new StringBuilder(); buffer.append("jQuery(window).load(function() { jQuery('#").append(getBlockID()) .append("').tablesorter( { headers: { ").append((getCasesBusiness().useTypes() ? 3 : 2)) .append(": { sorter: false }, ").append((getCasesBusiness().useTypes() ? 6 : 5)) .append(": { sorter: false}") .append((showCheckBox() ? ", " + (getCasesBusiness().useTypes() ? 7 : 6) + ": { sorter: false}" : "")) .append("}, sortList: [[0,0]] } ); } );"); PresentationUtil.addJavaScriptActionToBody(iwc, buffer.toString()); } }