Java tutorial
/** * Exhibit A - UIRF Open-source Based Public Software License. * * The contents of this file are subject to the UIRF Open-source Based Public * Software License(the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * openelis.uhl.uiowa.edu * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is OpenELIS code. * * The Initial Developer of the Original Code is The University of Iowa. * Portions created by The University of Iowa are Copyright 2006-2008. All * Rights Reserved. * * Contributor(s): ______________________________________. * * Alternatively, the contents of this file marked "Separately-Licensed" may be * used under the terms of a UIRF Software license ("UIRF Software License"), in * which case the provisions of a UIRF Software License are applicable instead * of those above. */ package org.openelis.portal.modules.dataView.client; import static org.openelis.portal.client.Logger.*; import static org.openelis.ui.screen.State.*; import java.util.ArrayList; import java.util.Map; import java.util.logging.Level; import org.openelis.domain.Constants; import org.openelis.domain.DataView1VO; import org.openelis.domain.DataViewAnalyteVO; import org.openelis.domain.DataViewValueVO; import org.openelis.domain.IdNameVO; import org.openelis.meta.SampleWebMeta; import org.openelis.portal.cache.CategoryCache; import org.openelis.portal.cache.UserCache; import org.openelis.portal.messages.Messages; import org.openelis.portal.modules.finalReport.client.StatusBarPopupScreenUI; import org.openelis.ui.common.DataBaseUtil; import org.openelis.ui.common.Datetime; import org.openelis.ui.common.ModulePermission; import org.openelis.ui.common.NotFoundException; import org.openelis.ui.common.ReportStatus; import org.openelis.ui.common.data.QueryData; import org.openelis.ui.event.DataChangeEvent; import org.openelis.ui.screen.Screen; import org.openelis.ui.screen.ScreenHandler; import org.openelis.ui.widget.CheckBox; import org.openelis.ui.widget.Item; import org.openelis.ui.widget.Queryable; import org.openelis.ui.widget.table.Row; import org.openelis.ui.widget.table.Table; import org.openelis.ui.widget.table.event.BeforeCellEditedEvent; import org.openelis.ui.widget.table.event.BeforeCellEditedHandler; import org.openelis.ui.widget.table.event.CellEditedEvent; import org.openelis.ui.widget.table.event.CellEditedHandler; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.http.client.URL; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; public class DataViewScreen extends Screen { private DataViewUI ui = GWT.create(DataViewUIImpl.class); private ModulePermission userPermission; private DataView1VO data; private StatusBarPopupScreenUI statusScreen; public DataViewScreen() { initWidget(ui.asWidget()); userPermission = UserCache.getPermission().getModule("w_dataview"); if (userPermission == null) { Window.alert(Messages.get().error_screenPerm("Spreadsheet View Screen")); return; } try { CategoryCache.getBySystemNames("sample_status"); } catch (Exception e) { remote.log(Level.SEVERE, e.getMessage(), e); Window.alert("error accessing cache"); return; } initialize(); setState(QUERY); } /** * Setup state and data change handles for every widget on the screen */ private void initialize() { IdNameVO project; ArrayList<Item<Integer>> model; ArrayList<IdNameVO> list; Item<Integer> row; ui.initialize(); data = new DataView1VO(); ui.getDeck().showWidget(0); ui.getContinueButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getSamples(); uncheckAllFields(); } }); ui.getResetButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { data = new DataView1VO(); ui.clearErrors(); fireDataChange(); } }); ui.getBackButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { ui.getDeck().showWidget(0); data = new DataView1VO(); uncheckAllFields(); } }); ui.getSelectAllSampleFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getAccession().setValue(yes, true); ui.getSampleCollected().setValue(yes, true); ui.getSampleReceived().setValue(yes, true); ui.getSampleReleased().setValue(yes, true); ui.getSampleStatus().setValue(yes, true); ui.getProjectId().setValue(yes, true); ui.getClientReferenceHeader().setValue(yes, true); ui.getSampleType().setValue(yes, true); ui.getSource().setValue(yes, true); } }); ui.getSelectAllOrgFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getOrganizationName().setValue(yes, true); ui.getOrganizationApt().setValue(yes, true); ui.getOrganizationAddress().setValue(yes, true); ui.getOrganizationCity().setValue(yes, true); ui.getOrganizationState().setValue(yes, true); ui.getOrganizationZip().setValue(yes, true); } }); ui.getSelectAllAnalysisFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getAnalysisTest().setValue(yes, true); ui.getAnalysisMethod().setValue(yes, true); ui.getAnalysisRevision().setValue(yes, true); ui.getAnalysisUnit().setValue(yes, true); ui.getAnalysisStarted().setValue(yes, true); ui.getAnalysisCompleted().setValue(yes, true); ui.getAnalysisReleased().setValue(yes, true); ui.getAnalysisQA().setValue(yes, true); } }); ui.getSelectAllPatientFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getPatientLastName().setValue(yes, true); ui.getPatientFirstName().setValue(yes, true); ui.getPatientBirth().setValue(yes, true); ui.getPatientGender().setValue(yes, true); ui.getPatientRace().setValue(yes, true); ui.getPatientEthnicity().setValue(yes, true); ui.getPatientPhone().setValue(yes, true); ui.getProviderLastName().setValue(yes, true); ui.getProviderFirstName().setValue(yes, true); } }); ui.getSelectAllSdwisFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getPwsIdHeader().setValue(yes, true); ui.getPwsName().setValue(yes, true); ui.getSdwisCollectorHeader().setValue(yes, true); ui.getSdwisLocation().setValue(yes, true); ui.getFacilityId().setValue(yes, true); ui.getSdwisSampleType().setValue(yes, true); ui.getSampleCategory().setValue(yes, true); ui.getSamplePointId().setValue(yes, true); } }); ui.getSelectAllEnvironmentalFieldsButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { String yes; yes = "Y"; ui.getEnvCollectorHeader().setValue(yes, true); ui.getEnvLocation().setValue(yes, true); ui.getEnvLocationCity().setValue(yes, true); ui.getCollectorPhone().setValue(yes, true); ui.getSampleDescription().setValue(yes, true); } }); ui.getSelectAllAnalytesButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { updateAllTestAnalyte("Y"); } }); ui.getUnselectAllAnalytesButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { updateAllTestAnalyte("N"); } }); ui.getSelectAllAuxButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { updateAllAuxField("Y"); } }); ui.getUnselectAllAuxButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { updateAllAuxField("N"); } }); ui.getRunReportButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { runReport(); } }); addScreenHandler(ui.getCollectedFrom(), SampleWebMeta.getCollectionDateFrom(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getCollectedFrom().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setCollectedError(null); ui.getCollectedFrom().clearExceptions(); ui.getCollectedTo().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getCollectedTo() : ui.getResetButton(); } @Override public Object getQuery() { return ui.getCollectedFrom().getQuery(); } }); addScreenHandler(ui.getCollectedTo(), SampleWebMeta.getCollectionDateTo(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getCollectedTo().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setCollectedError(null); ui.getCollectedTo().clearExceptions(); ui.getCollectedFrom().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getReleasedFrom() : ui.getCollectedFrom(); } @Override public Object getQuery() { return ui.getCollectedTo().getQuery(); } }); addScreenHandler(ui.getReleasedFrom(), SampleWebMeta.getAnalysisReleasedDateFrom(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getReleasedFrom().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setReleasedError(null); ui.getReleasedFrom().clearExceptions(); ui.getReleasedTo().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getReleasedTo() : ui.getCollectedTo(); } @Override public Object getQuery() { return ui.getReleasedFrom().getQuery(); } }); addScreenHandler(ui.getReleasedTo(), SampleWebMeta.getAnalysisReleasedDateTo(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getReleasedTo().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setReleasedError(null); ui.getReleasedTo().clearExceptions(); ui.getReleasedFrom().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getAccessionFrom() : ui.getReleasedFrom(); } @Override public Object getQuery() { return ui.getReleasedTo().getQuery(); } }); addScreenHandler(ui.getAccessionFrom(), SampleWebMeta.getAccessionNumberFrom(), new ScreenHandler<Integer>() { public void onValueChange(ValueChangeEvent<Integer> event) { ui.setAccessionError(null); ui.getAccessionFrom().clearExceptions(); ui.getAccessionTo().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getAccessionTo() : ui.getReleasedTo(); } @Override public Object getQuery() { return ui.getAccessionFrom().getQuery(); } }); addScreenHandler(ui.getAccessionTo(), SampleWebMeta.getAccessionNumberTo(), new ScreenHandler<Integer>() { public void onDataChange(DataChangeEvent event) { ui.getAccessionTo().setValue(null); } public void onValueChange(ValueChangeEvent<Integer> event) { ui.setAccessionError(null); ui.getAccessionTo().clearExceptions(); ui.getAccessionFrom().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getClientReference() : ui.getAccessionFrom(); } @Override public Object getQuery() { return ui.getAccessionTo().getQuery(); } }); addScreenHandler(ui.getClientReference(), SampleWebMeta.getClientReference(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getClientReference().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setClientReferenceError(null); ui.getClientReference().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getProjectCode() : ui.getAccessionTo(); } @Override public Object getQuery() { return ui.getClientReference().getQuery(); } }); addScreenHandler(ui.getProjectCode(), SampleWebMeta.getProjectId(), new ScreenHandler<ArrayList<Integer>>() { public void onDataChange(DataChangeEvent event) { ui.getProjectCode().setValue(null); } public void onValueChange(ValueChangeEvent<ArrayList<Integer>> event) { ui.setProjectError(null); ui.getProjectCode().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getEnvCollector() : ui.getClientReference(); } @Override public Object getQuery() { return ui.getProjectCode().getQuery(); } }); addScreenHandler(ui.getEnvCollector(), SampleWebMeta.getEnvCollector(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getEnvCollector().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setEnvCollectorError(null); ui.getEnvCollector().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getSdwisCollector() : ui.getProjectCode(); } @Override public Object getQuery() { return ui.getEnvCollector().getQuery(); } }); addScreenHandler(ui.getSdwisCollector(), SampleWebMeta.getSDWISCollector(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getSdwisCollector().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setSdwisCollectorError(null); ui.getSdwisCollector().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getPwsId() : ui.getEnvCollector(); } @Override public Object getQuery() { QueryData q; if (ui.getSdwisCollector().getQuery() == null) return null; q = (QueryData) ui.getSdwisCollector().getQuery(); q.setKey(SampleWebMeta.getSDWISCollector()); return q; } }); addScreenHandler(ui.getPwsId(), SampleWebMeta.getPwsNumber0(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getPwsId().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setPwsError(null); ui.getPwsId().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getPatientLast() : ui.getSdwisCollector(); } @Override public Object getQuery() { return ui.getPwsId().getQuery(); } }); addScreenHandler(ui.getPatientLast(), SampleWebMeta.getClinicalPatientLastName(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getPatientLast().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setPatientLastError(null); ui.getPatientLast().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getPatientFirst() : ui.getPwsId(); } @Override public Object getQuery() { return ui.getPatientLast().getQuery(); } }); addScreenHandler(ui.getPatientFirst(), SampleWebMeta.getClinicalPatientFirstName(), new ScreenHandler<String>() { public void onDataChange(DataChangeEvent event) { ui.getPatientFirst().setValue(null); } public void onValueChange(ValueChangeEvent<String> event) { ui.setPatientFirstError(null); ui.getPatientFirst().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getPatientBirthFrom() : ui.getPatientLast(); } @Override public Object getQuery() { return ui.getPatientFirst().getQuery(); } }); addScreenHandler(ui.getPatientBirthFrom(), SampleWebMeta.getClinicalPatientBirthDateFrom(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getPatientBirthFrom().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setPatientBirthError(null); ui.getPatientBirthFrom().clearExceptions(); ui.getPatientBirthTo().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getPatientBirthTo() : ui.getPatientFirst(); } @Override public Object getQuery() { return ui.getPatientBirthFrom().getQuery(); } }); addScreenHandler(ui.getPatientBirthTo(), SampleWebMeta.getClinicalPatientBirthDateTo(), new ScreenHandler<Datetime>() { public void onDataChange(DataChangeEvent event) { ui.getPatientBirthTo().setValue(null); } public void onValueChange(ValueChangeEvent<Datetime> event) { ui.setPatientBirthError(null); ui.getPatientBirthTo().clearExceptions(); ui.getPatientBirthFrom().clearExceptions(); } public Widget onTab(boolean forward) { return forward ? ui.getContinueButton() : ui.getPatientBirthFrom(); } @Override public Object getQuery() { return ui.getPatientBirthTo().getQuery(); } }); addScreenHandler(ui.getAccession(), SampleWebMeta.getAccessionNumber(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleCollected(), SampleWebMeta.getCollectionDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleReceived(), SampleWebMeta.getReceivedDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleReleased(), SampleWebMeta.getReleasedDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleStatus(), SampleWebMeta.getStatusId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getProjectId(), SampleWebMeta.getProjectName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getClientReferenceHeader(), SampleWebMeta.getClientReferenceHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleType(), SampleWebMeta.getItemTypeofSampleId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSource(), SampleWebMeta.getItemSourceOfSampleId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationName(), SampleWebMeta.getSampleOrgOrganizationName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationApt(), SampleWebMeta.getAddressMultipleUnit(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationAddress(), SampleWebMeta.getAddressStreetAddress(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationCity(), SampleWebMeta.getAddressCity(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationState(), SampleWebMeta.getAddressState(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getOrganizationZip(), SampleWebMeta.getAddressZipCode(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisTest(), SampleWebMeta.getAnalysisTestNameHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisMethod(), SampleWebMeta.getAnalysisMethodNameHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisRevision(), SampleWebMeta.getAnalysisRevision(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisUnit(), SampleWebMeta.getAnalysisUnitOfMeasureId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisStarted(), SampleWebMeta.getAnalysisStartedDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisCompleted(), SampleWebMeta.getAnalysisCompletedDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisReleased(), SampleWebMeta.getAnalysisReleasedDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getAnalysisQA(), SampleWebMeta.getAnalysisQAEventQAEventName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientLastName(), SampleWebMeta.getClinicalPatientLastNameHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientFirstName(), SampleWebMeta.getClinicalPatientFirstNameHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientBirth(), SampleWebMeta.getClinicalPatientBirthDate(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientGender(), SampleWebMeta.getClinicalPatientGenderId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientRace(), SampleWebMeta.getClinicalPatientRaceId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientEthnicity(), SampleWebMeta.getClinicalPatientEthnicityId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPatientPhone(), SampleWebMeta.getClinicalPatientAddrHomePhone(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getProviderLastName(), SampleWebMeta.getClinicalProviderLastName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getProviderFirstName(), SampleWebMeta.getClinicalProviderFirstName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPwsIdHeader(), SampleWebMeta.getSDWISPwsId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getPwsName(), SampleWebMeta.getPwsName(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSdwisCollectorHeader(), SampleWebMeta.getSDWISCollectorHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSdwisLocation(), SampleWebMeta.getSDWISLocation(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getFacilityId(), SampleWebMeta.getSDWISFacilityId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSdwisSampleType(), SampleWebMeta.getSDWISSampleTypeId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleCategory(), SampleWebMeta.getSDWISSampleCategoryId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSamplePointId(), SampleWebMeta.getSDWISSamplePointId(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getEnvCollectorHeader(), SampleWebMeta.getEnvCollectorHeader(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getEnvLocation(), SampleWebMeta.getEnvLocation(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getEnvLocationCity(), SampleWebMeta.getLocationAddrCity(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getCollectorPhone(), SampleWebMeta.getEnvCollectorPhone(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); addScreenHandler(ui.getSampleDescription(), SampleWebMeta.getEnvDescription(), new ScreenHandler<String>() { public Widget onTab(boolean forward) { return ui.getBackButton(); } }); ui.getAnalyteTable().addBeforeCellEditedHandler(new BeforeCellEditedHandler() { public void onBeforeCellEdited(BeforeCellEditedEvent event) { if (event.getCol() >= 1) event.cancel(); } }); ui.getAnalyteTable().addCellEditedHandler(new CellEditedHandler() { @Override public void onCellUpdated(CellEditedEvent event) { updateTestAnalyte((DataViewAnalyteVO) ui.getAnalyteTable().getRowAt(event.getRow()).getData(), (String) ui.getAnalyteTable().getValueAt(event.getRow(), event.getCol())); } }); ui.getAuxTable().addBeforeCellEditedHandler(new BeforeCellEditedHandler() { public void onBeforeCellEdited(BeforeCellEditedEvent event) { if (event.getCol() >= 1) event.cancel(); } }); ui.getAuxTable().addCellEditedHandler(new CellEditedHandler() { @Override public void onCellUpdated(CellEditedEvent event) { updateAuxData((DataViewAnalyteVO) ui.getAuxTable().getRowAt(event.getRow()).getData(), (String) ui.getAuxTable().getValueAt(event.getRow(), event.getCol())); } }); addScreenHandler(ui.getContinueButton(), "continueButton", new ScreenHandler<Integer>() { public Widget onTab(boolean forward) { return forward ? ui.getResetButton() : ui.getPatientBirthTo(); } }); addScreenHandler(ui.getResetButton(), "resetButton", new ScreenHandler<Integer>() { public Widget onTab(boolean forward) { return forward ? ui.getCollectedFrom() : ui.getContinueButton(); } }); /* * Initializing the project code drop down */ model = new ArrayList<Item<Integer>>(); try { list = DataViewService.get().fetchProjectListForPortal(); for (int i = 0; i < list.size(); i++) { project = list.get(i); row = new Item<Integer>(2); row.setKey(project.getId()); row.setCell(0, project.getName()); row.setCell(1, project.getDescription()); model.add(row); } } catch (Exception e) { Window.alert(e.getMessage()); remote.log(Level.SEVERE, e.getMessage(), e); } ui.getProjectCode().setModel(model); } public Validation validate() { boolean error; Validation validation; validation = super.validate(); /* * both widgets in a pair should either be empty or they both should * have values */ error = false; if (!isFromToValid(ui.getCollectedFrom(), ui.getCollectedTo())) { ui.setCollectedError(Messages.get().finalReport_error_noStartDate()); error = true; } if (!isFromToValid(ui.getReleasedFrom(), ui.getReleasedTo())) { ui.setReleasedError(Messages.get().finalReport_error_noStartDate()); error = true; } if (!isFromToValid(ui.getAccessionFrom(), ui.getAccessionTo())) { ui.setAccessionError(Messages.get().finalReport_error_noStartAccession()); error = true; } if (!isFromToValid(ui.getPatientBirthFrom(), ui.getPatientBirthTo())) { ui.setPatientBirthError(Messages.get().finalReport_error_noStartDate()); error = true; } if (error) validation.setStatus(Validation.Status.ERRORS); return validation; } /** * Returns a list of QueryData for the widgets in the tab; only one * QueryData is created for a pair of "from" and "to" widgets */ public ArrayList<QueryData> getQueryFields() { ArrayList<QueryData> fields; fields = new ArrayList<QueryData>(); addQueryData(ui.getCollectedFrom(), ui.getCollectedTo(), SampleWebMeta.getCollectionDate(), QueryData.Type.DATE, fields); addQueryData(ui.getReleasedFrom(), ui.getReleasedTo(), SampleWebMeta.getAnalysisReleasedDate(), QueryData.Type.DATE, fields); addQueryData(ui.getAccessionFrom(), ui.getAccessionTo(), SampleWebMeta.getAccessionNumber(), QueryData.Type.INTEGER, fields); addQueryData(ui.getClientReference(), SampleWebMeta.getClientReference(), fields); addQueryData(ui.getProjectCode(), SampleWebMeta.getProjectId(), fields); addQueryData(ui.getEnvCollector(), SampleWebMeta.getEnvCollector(), fields); addQueryData(ui.getSdwisCollector(), SampleWebMeta.getSDWISCollector(), fields); addQueryData(ui.getPwsId(), SampleWebMeta.getPwsNumber0(), fields); addQueryData(ui.getPatientLast(), SampleWebMeta.getClinicalPatientLastName(), fields); addQueryData(ui.getPatientFirst(), SampleWebMeta.getClinicalPatientFirstName(), fields); addQueryData(ui.getPatientBirthFrom(), ui.getPatientBirthTo(), SampleWebMeta.getClinicalPatientBirthDate(), QueryData.Type.DATE, fields); return fields; } /** * Returns true if both of the passed widgets are empty or if both have a * value; returns false otherwise */ private boolean isFromToValid(HasValue fromWidget, HasValue toWidget) { return (fromWidget.getValue() == null && toWidget.getValue() == null) || (fromWidget.getValue() != null && toWidget.getValue() != null); } /** * fetch samples that match the search criteria */ private void getSamples() { int numDomains; String domain; Validation validation; ArrayList<QueryData> fields; ui.clearErrors(); finishEditing(); numDomains = 0; domain = null; /* * determine the domain that is being queried. */ if (!DataBaseUtil.isEmpty(ui.getPwsId().getText()) || !DataBaseUtil.isEmpty(ui.getSdwisCollector().getText())) { domain = Constants.domain().SDWIS; numDomains++; } if (!DataBaseUtil.isEmpty(ui.getEnvCollector().getText())) { domain = Constants.domain().ENVIRONMENTAL; numDomains++; } if (!DataBaseUtil.isEmpty(ui.getPatientFirst().getText()) || !DataBaseUtil.isEmpty(ui.getPatientLast().getText()) || !DataBaseUtil.isEmpty(ui.getPatientBirthFrom().getText()) || !DataBaseUtil.isEmpty(ui.getPatientBirthTo().getText())) { domain = Constants.domain().CLINICAL; numDomains++; } if (numDomains > 1) { Window.alert(Messages.get().finalReport_error_queryDomainException()); return; } validation = validate(); if (validation.getStatus() == Validation.Status.ERRORS) return; fields = getQueryFields(); if (domain != null) fields.add(new QueryData(SampleWebMeta.getDomain(), QueryData.Type.STRING, domain)); if (fields.size() < 1) { Window.alert(Messages.get().finalReport_error_emptyQueryException()); return; } data.setQueryFields(fields); window.setBusy(Messages.get().gen_fetchingSamples()); DataViewService.get().fetchAnalyteAndAuxField(data, new AsyncCallback<DataView1VO>() { @Override public void onSuccess(DataView1VO result) { ArrayList<Row> model; data.setTestAnalytes(result.getTestAnalytes()); data.setAuxFields(result.getAuxFields()); try { model = getAnalyteTableModel(); /* * load the result and aux data analytes in the tables and * sort the tables by analyte name, because they're not * sorted in the back-end */ ui.getAnalyteTable().setModel(model); if (model != null && model.size() > 0) ui.getAnalyteTable().applySort(1, Table.SORT_ASCENDING, null); model = getAuxTableModel(); ui.getAuxTable().setModel(model); if (model != null && model.size() > 0) ui.getAuxTable().applySort(1, Table.SORT_ASCENDING, null); ui.getDeck().showWidget(1); ui.getAnalyteTable().onResize(); ui.getAuxTable().onResize(); } catch (Exception e) { window.clearStatus(); Window.alert(e.getMessage()); throw e; } window.clearStatus(); } @Override public void onFailure(Throwable caught) { if (caught instanceof NotFoundException) { window.setError(Messages.get().finalReport_error_noSamples()); } else { window.clearStatus(); Window.alert(caught.getMessage()); } } }); } /** * Creates a query data where the query string contains the values of the * passed widgets separated by a delimiter; the key and type are set to the * passed values; doesn't create the query data if the value of either * widget is null or empty */ private void addQueryData(Queryable fromWidget, Queryable toWidget, String key, QueryData.Type type, ArrayList<QueryData> fields) { QueryData fromField, toField, field; Object fromQuery, toQuery; fromField = (QueryData) fromWidget.getQuery(); toField = (QueryData) toWidget.getQuery(); fromQuery = fromField != null ? fromField.getQuery() : null; toQuery = toField != null ? toField.getQuery() : null; if (!DataBaseUtil.isEmpty(fromQuery) && !DataBaseUtil.isEmpty(toQuery)) { field = new QueryData(); field.setKey(key); field.setQuery(DataBaseUtil.concatWithSeparator(fromQuery, "..", toQuery)); field.setType(type); fields.add(field); } } /** * Adds the query data for the passed widget to the passed list; sets the * passed key in the query data */ private void addQueryData(Queryable widget, String key, ArrayList<QueryData> fields) { QueryData field; field = getQueryData(widget, key); if (field != null) fields.add(field); } /** * Returns a query data created from the passed widget; a query data is * created only if there's a query string specified in the widget; sets the * passed key in the query data */ private QueryData getQueryData(Queryable widget, String key) { QueryData field; field = (QueryData) widget.getQuery(); /* * the key is set here because it's not set when the query data is * created; this is because, the widget doesn't know what its key is; * the key is in the hashmap for screen handlers */ if (field != null) field.setKey(key); return field; } /** * create the model for the analyte table from the data view object */ private ArrayList<Row> getAnalyteTableModel() { Row row; ArrayList<Row> model; model = new ArrayList<Row>(); if (data.getTestAnalytes() == null || data.getTestAnalytes().size() < 1) return model; for (DataViewAnalyteVO ana : data.getTestAnalytes()) { row = new Row(2); row.setCell(0, "N"); row.setCell(1, ana.getAnalyteName()); row.setData(ana); model.add(row); } return model; } /** * create the model for the auxiliary data table from the data view object */ private ArrayList<Row> getAuxTableModel() { Row row; ArrayList<Row> model; model = new ArrayList<Row>(); if (data.getAuxFields() == null || data.getAuxFields().size() < 1) return model; for (DataViewAnalyteVO aux : data.getAuxFields()) { row = new Row(2); row.setCell(0, "N"); row.setCell(1, aux.getAnalyteName()); row.setData(aux); model.add(row); } return model; } /** * Sets the passed value as the "include" flag for all test analytes and * their results */ private void updateAllTestAnalyte(String newVal) { Row row; for (int i = 0; i < ui.getAnalyteTable().getRowCount(); i++) { ui.getAnalyteTable().setValueAt(i, 0, newVal); row = ui.getAnalyteTable().getRowAt(i); updateTestAnalyte((DataViewAnalyteVO) row.getData(), newVal); } } /** * Sets the passed value as the "include" flag for all aux fields and their * aux data */ private void updateAllAuxField(String newVal) { Row row; for (int i = 0; i < ui.getAuxTable().getRowCount(); i++) { ui.getAuxTable().setValueAt(i, 0, newVal); row = ui.getAuxTable().getRowAt(i); updateAuxData((DataViewAnalyteVO) row.getData(), newVal); } } private void updateTestAnalyte(DataViewAnalyteVO data, String val) { ArrayList<DataViewValueVO> list; data.setIsIncluded(val); list = data.getValues(); for (DataViewValueVO res : list) res.setIsIncluded(val); } private void updateAuxData(DataViewAnalyteVO data, String val) { ArrayList<DataViewValueVO> list; data.setIsIncluded(val); list = data.getValues(); for (DataViewValueVO value : list) value.setIsIncluded(val); } /** * create a spreadsheet with the checked data fields */ protected void runReport() { int numTA, numAux; Widget widget; CheckBox cb; ArrayList<String> columns; ArrayList<DataViewAnalyteVO> taList, afList; numTA = 0; numAux = 0; taList = data.getTestAnalytes(); if (taList != null) { for (DataViewAnalyteVO ta : taList) { if ("Y".equals(ta.getIsIncluded())) numTA++; } } if (numTA == 0) { afList = data.getAuxFields(); if (afList != null) { for (DataViewAnalyteVO af : afList) { if ("Y".equals(af.getIsIncluded())) numAux++; } } if (numAux == 0) { window.setError(Messages.get().dataView_selectOneAnaOrAux()); return; } } /* * Add the keys for all checked checkboxes to the list of columns shown * in the generated excel file. Note: This will need additional checks * to work correctly if any checkboxes get added to the query fields, so * that their keys don't get added to the list of columns. */ columns = new ArrayList<String>(); for (Map.Entry<String, ScreenHandler<?>> entry : handlers.entrySet()) { widget = entry.getValue().widget; if (widget instanceof CheckBox) { cb = (CheckBox) widget; if ("Y".equals(cb.getValue())) columns.add(entry.getKey()); } } data.setColumns(columns); popup(data); } /** * creates a popup that shows the progress of creating data view report */ private void popup(DataView1VO data) { final PopupPanel statusPanel; if (statusScreen == null) statusScreen = new StatusBarPopupScreenUI(); statusScreen.setStatus(null); /* * initialize and show the popup screen */ statusPanel = new PopupPanel(); statusPanel.setSize("450px", "125px"); statusScreen.setSize("450px", "125px"); statusPanel.setWidget(statusScreen); statusPanel.setPopupPosition(this.getAbsoluteLeft() + 50, this.getAbsoluteTop() + 50); statusPanel.setModal(true); statusPanel.show(); /* * Create final reports. Hide popup when database is updated * successfully or error is thrown. */ DataViewService.get().runReportForPortal(data, new AsyncCallback<ReportStatus>() { @Override public void onSuccess(ReportStatus result) { if (result.getStatus() == ReportStatus.Status.SAVED) { String url = "/openelisweb/openelisweb/report?file=" + result.getMessage(); Window.open(URL.encode(url), "DataView", "resizable=yes"); } window.clearStatus(); statusPanel.hide(); statusScreen.setStatus(null); } @Override public void onFailure(Throwable caught) { window.clearStatus(); statusPanel.hide(); statusScreen.setStatus(null); if (caught instanceof NotFoundException) window.setError(Messages.get().dataView_error_noResults()); else Window.alert(caught.getMessage()); } }); /* * refresh the status of creating the reports every second, until the * process successfully completes or is aborted because of an error */ Timer timer = new Timer() { public void run() { ReportStatus status; try { status = DataViewService.get().getStatus(); /* * the status only needs to be refreshed while the status * panel is showing because once the job is finished, the * panel is closed */ if (statusPanel.isShowing()) { statusScreen.setStatus(status); this.schedule(50); } } catch (Exception e) { Window.alert(e.getMessage()); remote.log(Level.SEVERE, e.getMessage(), e); } } }; timer.schedule(50); } private void uncheckAllFields() { String no; no = "N"; ui.getAccession().setValue(no, true); ui.getSampleCollected().setValue(no, true); ui.getSampleReceived().setValue(no, true); ui.getSampleReleased().setValue(no, true); ui.getSampleStatus().setValue(no, true); ui.getProjectId().setValue(no, true); ui.getClientReferenceHeader().setValue(no, true); ui.getSampleType().setValue(no, true); ui.getSource().setValue(no, true); ui.getOrganizationName().setValue(no, true); ui.getOrganizationApt().setValue(no, true); ui.getOrganizationAddress().setValue(no, true); ui.getOrganizationCity().setValue(no, true); ui.getOrganizationState().setValue(no, true); ui.getOrganizationZip().setValue(no, true); ui.getAnalysisTest().setValue(no, true); ui.getAnalysisMethod().setValue(no, true); ui.getAnalysisRevision().setValue(no, true); ui.getAnalysisUnit().setValue(no, true); ui.getAnalysisStarted().setValue(no, true); ui.getAnalysisCompleted().setValue(no, true); ui.getAnalysisReleased().setValue(no, true); ui.getAnalysisQA().setValue(no, true); ui.getPatientLastName().setValue(no, true); ui.getPatientFirstName().setValue(no, true); ui.getPatientBirth().setValue(no, true); ui.getPatientGender().setValue(no, true); ui.getPatientRace().setValue(no, true); ui.getPatientEthnicity().setValue(no, true); ui.getPatientPhone().setValue(no, true); ui.getProviderLastName().setValue(no, true); ui.getProviderFirstName().setValue(no, true); ui.getPwsIdHeader().setValue(no, true); ui.getPwsName().setValue(no, true); ui.getSdwisCollectorHeader().setValue(no, true); ui.getSdwisLocation().setValue(no, true); ui.getFacilityId().setValue(no, true); ui.getSdwisSampleType().setValue(no, true); ui.getSampleCategory().setValue(no, true); ui.getSamplePointId().setValue(no, true); ui.getEnvCollectorHeader().setValue(no, true); ui.getEnvLocation().setValue(no, true); ui.getEnvLocationCity().setValue(no, true); ui.getCollectorPhone().setValue(no, true); ui.getSampleDescription().setValue(no, true); } }