Java tutorial
/* * iDART: The Intelligent Dispensing of Antiretroviral Treatment * Copyright (C) 2006 Cell-Life * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version * 2 for more details. * * You should have received a copy of the GNU General Public License version 2 * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package org.celllife.idart.gui.drugGroup; import java.math.BigDecimal; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import model.manager.DeletionsManager; import model.manager.DrugManager; import org.apache.log4j.Logger; import org.celllife.idart.commonobjects.CommonObjects; import org.celllife.idart.database.hibernate.Drug; import org.celllife.idart.database.hibernate.Form; import org.celllife.idart.database.hibernate.Regimen; import org.celllife.idart.database.hibernate.RegimenDrugs; import org.celllife.idart.database.hibernate.util.HibernateUtil; import org.celllife.idart.gui.platform.GenericFormGui; import org.celllife.idart.gui.prescription.PrescriptionObject; import org.celllife.idart.gui.search.Search; import org.celllife.idart.gui.utils.ResourceUtils; import org.celllife.idart.gui.utils.iDartColor; import org.celllife.idart.gui.utils.iDartFont; import org.celllife.idart.gui.utils.iDartImage; import org.celllife.idart.messages.Messages; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.hibernate.HibernateException; import org.hibernate.Transaction; /** * */ public class AddDrugGroup extends GenericFormGui { private Button btnAddDrug; private Button btnSearch; private Button btnSaveDrugGroup; private TableColumn clmAmt; private TableColumn clmDrugName; private TableColumn clmSpace; private TableColumn clmTake; private Composite compRegimenSelect; private Composite compButtonsMiddle; private Group grpDrugs; private Group grpRegimen; private int intDrugTableSize = 1; private Label lblRegimenGroup; private Label lblInstructions; private Label lblDrugGroupName; private Regimen localRegimen; private TableColumn tblDescription; private Table tblDrugs; private TableColumn tblPerDay; private TableColumn tblTPD; private Text txtDrugGroupName; private Composite compInstructions; private Label lblPicAddDrug; private boolean isAddnotUpdate; private Button btnRemoveDrug; private CCombo cmbRegimen; /** * Constructor * * @param parent * Shell */ public AddDrugGroup(Shell parent) { super(parent, HibernateUtil.getNewSession()); } /** * This method initializes newAddRegimen */ @Override protected void createShell() { isAddnotUpdate = ((Boolean) getInitialisationOption(OPTION_isAddNotUpdate)).booleanValue(); // The GenericFormsGui class needs // Header text, icon URL, shell bounds String shellTxt = isAddnotUpdate ? Messages.getString("adddruggroup.icon.header") //$NON-NLS-1$ : Messages.getString("adddruggroup.url.header"); //$NON-NLS-1$ Rectangle bounds = new Rectangle(25, 0, 800, 700); // Parent Generic Methods ------ buildShell(shellTxt, bounds); // generic shell build } @Override protected void createContents() { createCompInstructions(); createCompButtonsMiddle(); createRegimenGroup(); createGrpDrugs(); enableFields(false); txtDrugGroupName.setFocus(); } /** * This method initializes compHeader * */ @Override protected void createCompHeader() { String headerTxt = (isAddnotUpdate ? Messages.getString("adddruggroup.icon.header") //$NON-NLS-1$ : Messages.getString("adddruggroup.url.header")); //$NON-NLS-1$ iDartImage icoImage = iDartImage.DRUGGROUP; buildCompHeader(headerTxt, icoImage); } @Override protected void createCompButtons() { // Parent Class generic call buildCompButtons(); btnSaveDrugGroup = btnSave; btnSaveDrugGroup.setText(Messages.getString("adddruggroup.group.savedrug.title")); //$NON-NLS-1$ } /** * This method initializes compInstructions * */ private void createCompInstructions() { compInstructions = new Composite(getShell(), SWT.NONE); compInstructions.setBounds(new Rectangle(250, 80, 300, 20)); lblInstructions = new Label(compInstructions, SWT.CENTER); lblInstructions.setBounds(new org.eclipse.swt.graphics.Rectangle(0, 1, 300, 18)); lblInstructions.setText(Messages.getString("adddruggroup.label.instructions.title")); //$NON-NLS-1$ lblInstructions.setFont(ResourceUtils.getFont(iDartFont.VERASANS_10_ITALIC)); } /** * This method initializes grpParticulars * */ private void createRegimenGroup() { // grpParticulars grpRegimen = new Group(getShell(), SWT.NONE); grpRegimen.setBounds(new Rectangle(100, 135, 600, 130)); grpRegimen.setText(Messages.getString("adddruggroup.label.regimen.title")); //$NON-NLS-1$ grpRegimen.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); // Drug Group Name lblDrugGroupName = new Label(grpRegimen, SWT.NONE); lblDrugGroupName.setBounds(new Rectangle(30, 35, 110, 20)); lblDrugGroupName.setText(Messages.getString("adddruggroup.label.drugname.title")); //$NON-NLS-1$ lblDrugGroupName.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); txtDrugGroupName = new Text(grpRegimen, SWT.BORDER); txtDrugGroupName.setBounds(new Rectangle(160, 35, 220, 20)); txtDrugGroupName.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); txtDrugGroupName.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if (e.character == SWT.CR) { cmdSearchWidgetSelected(); } } }); btnSearch = new Button(grpRegimen, SWT.NONE); btnSearch.setBounds(new Rectangle(390, 33, 160, 28)); btnSearch.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnSearch.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { cmdSearchWidgetSelected(); } }); // if this is adding a new regimen, set if (!isAddnotUpdate) { btnSearch.setText(Messages.getString("adddruggroup.button.drugadd.title")); //$NON-NLS-1$ btnSearch.setToolTipText(Messages.getString("adddruggroup.button.drugadd.tooltip")); //$NON-NLS-1$ } // we're updating a regimen else { btnSearch.setText(Messages.getString("adddruggroup.button.drugsearch.title")); //$NON-NLS-1$ btnSearch.setToolTipText(Messages.getString("adddruggroup.button.drugsearch.tooltip")); //$NON-NLS-1$ } // Regimen group lblRegimenGroup = new Label(grpRegimen, SWT.NONE); lblRegimenGroup.setBounds(new org.eclipse.swt.graphics.Rectangle(30, 70, 110, 20)); lblRegimenGroup.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); lblRegimenGroup.setText(Messages.getString("adddruggroup.group.regimen.title")); //$NON-NLS-1$ compRegimenSelect = new Composite(grpRegimen, SWT.NONE); compRegimenSelect.setBounds(new Rectangle(160, 70, 400, 40)); cmbRegimen = new CCombo(compRegimenSelect, SWT.BORDER); cmbRegimen.setBounds(new Rectangle(0, 0, 220, 20)); cmbRegimen.setEditable(false); cmbRegimen.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); cmbRegimen.setBackground(ResourceUtils.getColor(iDartColor.WHITE)); CommonObjects.populateRegimens(getHSession(), cmbRegimen); cmbRegimen.setEnabled(false); } /** * This method initializes compButtonsMiddle * */ private void createCompButtonsMiddle() { // compButtonsMiddle compButtonsMiddle = new Composite(getShell(), SWT.NONE); compButtonsMiddle.setBounds(new Rectangle(182, 295, 472, 50)); // Add Drug button and icon lblPicAddDrug = new Label(compButtonsMiddle, SWT.NONE); lblPicAddDrug.setBounds(new Rectangle(0, 0, 50, 43)); lblPicAddDrug.setImage(ResourceUtils.getImage(iDartImage.PRESCRIPTIONADDDRUG)); btnAddDrug = new Button(compButtonsMiddle, SWT.NONE); btnAddDrug.setBounds(new Rectangle(60, 12, 185, 27)); btnAddDrug.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnAddDrug.setText(Messages.getString("adddruggroup.button.adddruggroup.title")); //$NON-NLS-1$ btnAddDrug.setToolTipText(Messages.getString("adddruggroup.button.adddruggroup.tooltip")); //$NON-NLS-1$ btnAddDrug.setEnabled(true); btnAddDrug.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { cmdAddDrugWidgetSelected(); } }); btnAddDrug.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnRemoveDrug = new Button(compButtonsMiddle, SWT.NONE); btnRemoveDrug.setBounds(new Rectangle(268, 12, 185, 28)); btnRemoveDrug.setText(Messages.getString("adddruggroup.button.drugremove.title")); //$NON-NLS-1$ lblPicAddDrug.setEnabled(true); btnRemoveDrug.setEnabled(true); btnAddDrug.setToolTipText(Messages.getString("adddruggroup.button.drugremove.tooltip")); //$NON-NLS-1$ btnRemoveDrug.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { cmdRemoveDrug(); } }); btnRemoveDrug.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); } /** * This method initializes grpDrugs * */ private void createGrpDrugs() { grpDrugs = new Group(getShell(), SWT.NONE); grpDrugs.setText(Messages.getString("adddruggroup.group.druggrp.title")); //$NON-NLS-1$ grpDrugs.setBounds(new org.eclipse.swt.graphics.Rectangle(50, 361, 700, 199)); grpDrugs.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); createDrugsTable(); } /** * This method initializes tblDrugs * */ private void createDrugsTable() { tblDrugs = new Table(grpDrugs, SWT.FULL_SELECTION); tblDrugs.setLinesVisible(true); tblDrugs.setBounds(new org.eclipse.swt.graphics.Rectangle(22, 25, 655, 160)); tblDrugs.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); tblDrugs.setHeaderVisible(true); // clmSpace clmSpace = new TableColumn(tblDrugs, SWT.NONE); clmSpace.setWidth(28); clmSpace.setText(Messages.getString("adddruggroup.table.clmspace.title")); //$NON-NLS-1$ // clmDrugName clmDrugName = new TableColumn(tblDrugs, SWT.NONE); clmDrugName.setText(Messages.getString("adddruggroup.table.clmdrugname.title")); //$NON-NLS-1$ clmDrugName.setWidth(235); clmDrugName.setResizable(false); // clmTake clmTake = new TableColumn(tblDrugs, SWT.NONE); clmTake.setWidth(40); // clmTake.setText("Directions"); clmTake.setResizable(false); // clmAmt clmAmt = new TableColumn(tblDrugs, SWT.NONE); // clmAmt.setText("Amount"); clmAmt.setWidth(40); clmAmt.setResizable(false); // tblDescription tblDescription = new TableColumn(tblDrugs, SWT.NONE); tblDescription.setWidth(70); tblDescription.setResizable(false); // tblPerDay tblPerDay = new TableColumn(tblDrugs, SWT.NONE); tblPerDay.setWidth(30); tblPerDay.setResizable(false); // tblTPD tblTPD = new TableColumn(tblDrugs, SWT.NONE); tblTPD.setWidth(95); tblTPD.setResizable(false); } /** * This method initializes compButtons * * @return Regimen */ private Regimen getLocalRegimen() { Regimen regToSave = new Regimen(); // NOT NULL only upon regimen UPDATE. // Therefore, id on NEW regimen not needed. if (localRegimen != null) { regToSave.setId(localRegimen.getId()); } regToSave.setDrugGroup(cmbRegimen.getText().trim()); regToSave.setModified('T'); regToSave.setNotes(EMPTY); regToSave.setRegimenName(txtDrugGroupName.getText().trim()); List<RegimenDrugs> regimenDrugsList = new ArrayList<RegimenDrugs>(); // Save the regimen Drugs for (int i = 0; i < tblDrugs.getItemCount(); i++) { TableItem tmpItem = tblDrugs.getItem(i); RegimenDrugs oldRD = (RegimenDrugs) tmpItem.getData(); RegimenDrugs newRD = new RegimenDrugs(); newRD.setAmtPerTime(oldRD.getAmtPerTime()); newRD.setDrug(oldRD.getDrug()); newRD.setModified(oldRD.getModified()); newRD.setRegimen(regToSave); newRD.setTimesPerDay(oldRD.getTimesPerDay()); regimenDrugsList.add(newRD); } regToSave.setRegimenDrugs(regimenDrugsList); return regToSave; } @Override protected void cmdSaveWidgetSelected() { Transaction tx = null; tx = getHSession().beginTransaction(); Regimen regToSave = getLocalRegimen(); if (!isAddnotUpdate && !changesMade(regToSave)) { MessageBox mSave = new MessageBox(getShell(), SWT.ICON_INFORMATION | SWT.OK); mSave.setText(Messages.getString("adddruggroup.label.msave.title")); //$NON-NLS-1$ mSave.setMessage(Messages.getString("adddruggroup.msave.message")); //$NON-NLS-1$ mSave.open(); return; } // Check if all the fields are filled in if (fieldsOk()) { MessageBox mSave = new MessageBox(getShell(), SWT.ICON_QUESTION | SWT.YES | SWT.NO); mSave.setText(isAddnotUpdate ? Messages.getString("adddruggroup.msave.title") //$NON-NLS-1$ : Messages.getString("adddruggroup.msave.text")); //$NON-NLS-1$ mSave.setMessage(isAddnotUpdate ? Messages.getString("adddruggroup.msave.ifmessage") //$NON-NLS-1$ : Messages.getString("adddruggroup.msave.errormessage")); //$NON-NLS-1$ switch (mSave.open()) { case SWT.YES: { try { boolean isDrugIdentical = DrugManager.regimenDrugsIdentical(getHSession(), regToSave); boolean isDrugDuplicated = DrugManager.regimenDrugsDuplicated(regToSave); if (isDrugIdentical) { MessageBox m = new MessageBox(getShell(), SWT.OK | SWT.ICON_ERROR); m.setText(Messages.getString("adddruggroup.m.message.title")); //$NON-NLS-1$ m.setMessage(Messages.getString("adddruggroup.m.message.label")); //$NON-NLS-1$ m.open(); if (tx != null) { tx.rollback(); } } else if (isDrugDuplicated) { MessageBox m = new MessageBox(getShell(), SWT.OK | SWT.ICON_ERROR); m.setText(Messages.getString("adddruggroup.m.message.title")); //$NON-NLS-1$ m.setMessage(Messages.getString("adddruggroup.m.message.duplicate")); //$NON-NLS-1$ m.open(); if (tx != null) { tx.rollback(); } } else { // Remove old copy of localRegimen, so proper update is // possible. if (tx.isActive()) if (localRegimen != null) { DeletionsManager.removeRegimen(getHSession(), localRegimen); localRegimen = null; } DrugManager.saveRegimen(getHSession(), regToSave); getHSession().flush(); tx.commit(); MessageBox m = new MessageBox(getShell(), SWT.OK | SWT.ICON_INFORMATION); m.setText(Messages.getString("adddruggroup.m.message.update")); //$NON-NLS-1$ m.setMessage(MessageFormat.format(Messages.getString("adddruggroup.drug.remove"), regToSave.getRegimenName())); m.open(); cmdCancelWidgetSelected(); } } catch (HibernateException he) { MessageBox m = new MessageBox(getShell(), SWT.OK | SWT.ICON_ERROR); m.setText(Messages.getString("adddruggroup.m.message.title")); //$NON-NLS-1$ m.setMessage(Messages.getString("adddruggroup.m.messageregimen.title")); //$NON-NLS-1$ m.open(); if (tx != null) { tx.rollback(); } getLog().error(Messages.getString("adddruggroup.m.message.title"), he); //$NON-NLS-1$ clearForm(); } break; } case SWT.NO: // Close the form cmdCancelWidgetSelected(); break; } } } /** * Method to displose screen when cancel button is pressed * */ @Override protected void cmdCancelWidgetSelected() { closeShell(true); } @Override protected void cmdClearWidgetSelected() { clearForm(); } @Override protected void clearForm() { txtDrugGroupName.setText(EMPTY); //$NON-NLS-1$ txtDrugGroupName.setFocus(); cmbRegimen.setText(EMPTY); //$NON-NLS-1$ cmbRegimen.setEnabled(false); tblDrugs.clearAll(); tblDrugs.removeAll(); tblDrugs.setItemCount(0); intDrugTableSize = 1; localRegimen = null; enableFields(false); } /** * checks the form for valid fields entries * * @return true if the requiResourceUtils.getColor(iDartColor.RED) fields * are filled in */ @Override protected boolean fieldsOk() { boolean result = true; if (!isAddNotUpdate() && (cmbRegimen.getText() == null || EMPTY.equals(cmbRegimen.getText()))) { //$NON-NLS-1$ MessageBox missing = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); missing.setText(Messages.getString("adddruggroup.drug.group.error")); //$NON-NLS-1$ missing.setMessage(Messages.getString("adddruggroup.drug.group.update")); //$NON-NLS-1$ missing.open(); txtDrugGroupName.setFocus(); result = false; result = false; return result; } if (txtDrugGroupName.getText().trim().equals(EMPTY)) { //$NON-NLS-1$ MessageBox missing = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); missing.setText(Messages.getString("adddruggroup.drug.group.reenter")); //$NON-NLS-1$ missing.setMessage(Messages.getString("adddruggroup.drug.group.blank")); //$NON-NLS-1$ missing.open(); txtDrugGroupName.setFocus(); result = false; } else if ((!isAddnotUpdate && !(localRegimen.getRegimenName().equalsIgnoreCase(txtDrugGroupName.getText().trim()))) && DrugManager.regimenNameExists(getHSession(), txtDrugGroupName.getText().trim())) { MessageBox duplicate = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); duplicate.setText(Messages.getString("adddruggroup.duplicate.blank")); //$NON-NLS-1$ duplicate.setMessage(Messages.getString("adddruggroup.duplicate.update")); //$NON-NLS-1$ duplicate.open(); txtDrugGroupName.setFocus(); result = false; } else if (cmbRegimen.getText().isEmpty()) { MessageBox noRegimen = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); noRegimen.setText(Messages.getString("adddruggroup.regimen.blank")); //$NON-NLS-1$ noRegimen.setMessage(Messages.getString("adddruggroup.regimen.error")); //$NON-NLS-1$ noRegimen.open(); cmbRegimen.setFocus(); result = false; } else if (tblDrugs.getItemCount() == 0) { MessageBox noDrugsAdded = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); noDrugsAdded.setText(Messages.getString("adddruggroup.drug.added")); //$NON-NLS-1$ noDrugsAdded.setMessage(Messages.getString("adddruggroup.drug.update")); //$NON-NLS-1$ noDrugsAdded.open(); btnAddDrug.setFocus(); result = false; } return result; } /** * This method is called when the user presses the "Add Drug to this * Regimen" button. * */ private void cmdAddDrugWidgetSelected() { // Add a new table item TableItem ti = new TableItem(tblDrugs, SWT.NONE); PrescriptionObject myPrescriptionObject = new PrescriptionObject(getHSession(), ti, true, getShell()); ti.setText(0, (Integer.toString(tblDrugs.getItemCount()))); myPrescriptionObject.setTableItem(ti); intDrugTableSize = tblDrugs.getItemCount(); } /** * This method is called if the user clicks on a row in the drugs table. The * user is then asked if they want to delete the drug that they've selected. * */ private void cmdRemoveDrug() { TableItem[] ti = tblDrugs.getSelection(); if (ti != null) { String drug = ti[0].getText(1); boolean questionResponse = showMessage(MessageDialog.QUESTION, MessageFormat.format(Messages.getString("adddruggroup.drug.remove"), drug), //$NON-NLS-1$ MessageFormat.format(Messages.getString("adddruggroup.comfirmation.drug.remove"), drug)); //$NON-NLS-1$ if (questionResponse) { // Delete from Regimen int index = tblDrugs.getSelectionIndex(); tblDrugs.remove(index); for (int i = index; i < tblDrugs.getItemCount(); i++) { TableItem oti = tblDrugs.getItem(i); int number = Integer.parseInt(oti.getText(0)); number--; oti.setText(0, String.valueOf(number)); //$NON-NLS-1$ } intDrugTableSize--; } } } /** * indicates if this GUI is being used to add a new regimen or used to * update an existing regimen * * @return boolean */ public boolean isAddNotUpdate() { return isAddnotUpdate; } private void cmdSearchWidgetSelected() { // if user is adding a new drug group, then check the drug group name if (isAddnotUpdate) { if (txtDrugGroupName.getText().trim().equals(EMPTY)) { //$NON-NLS-1$ MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR); mb.setText(Messages.getString("adddruggroup.drug.entered")); //$NON-NLS-1$ mb.setMessage(Messages.getString("adddruggroup.drug.enetered.error")); //$NON-NLS-1$ mb.open(); txtDrugGroupName.setFocus(); } else if (DrugManager.regimenNameExists(getHSession(), txtDrugGroupName.getText().trim())) { MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR); mb.setText(Messages.getString("adddruggroup.drug.grp.exists")); //$NON-NLS-1$ mb.setMessage(MessageFormat.format(Messages.getString("adddruggroup.drug.grp.name"), //$NON-NLS-1$ txtDrugGroupName.getText().trim())); mb.open(); txtDrugGroupName.setFocus(); } else { enableFields(true); } } // else, we're updating an existing drug group, so open up a search GUI else { Search regimenSearch = new Search(getHSession(), getShell(), CommonObjects.REGIMEN); if (regimenSearch.getValueSelected() != null) { clearForm(); localRegimen = DrugManager.getRegimen(getHSession(), regimenSearch.getValueSelected()[0]); loadRegimenDetails(); loadRegimenDrugs(); enableFields(true); } // if we've returned from the search GUI with the user having // pressed "cancel", enable the search button else { enableFields(false); txtDrugGroupName.setFocus(); } } } /** * This method loads the details of the regimen into the GUI. It used the * localRegimen object to get the values * */ public void loadRegimenDetails() { btnSearch.setEnabled(true); txtDrugGroupName.setText(localRegimen.getRegimenName()); cmbRegimen.setEnabled(true); cmbRegimen.setText(localRegimen.getDrugGroup()); } /** * This method loads the GUI with details from the Prescription object * passed to it. * */ private void loadRegimenDrugs() { String tempAmtPerTime = EMPTY; //$NON-NLS-1$ List<RegimenDrugs> drugs = localRegimen.getRegimenDrugs(); for (Iterator<RegimenDrugs> iter = drugs.iterator(); iter.hasNext();) { RegimenDrugs rd = iter.next(); Drug theDrug = rd.getDrug(); Form theForm = theDrug.getForm(); if (theForm.getFormLanguage1().equals(EMPTY)) //$NON-NLS-1$ // is a cream - no amnt per time { tempAmtPerTime = EMPTY; } else { if (new BigDecimal(rd.getAmtPerTime()).scale() == 0) { tempAmtPerTime = String.valueOf(new BigDecimal(rd.getAmtPerTime()).unscaledValue().intValue()); } else { tempAmtPerTime = String.valueOf(rd.getAmtPerTime()); } } TableItem ti = new TableItem(tblDrugs, SWT.NONE); String[] temp = new String[8]; temp[0] = String.valueOf(intDrugTableSize); // temp[1] = "0"; temp[1] = theDrug.getName(); temp[2] = theForm.getActionLanguage1(); temp[3] = tempAmtPerTime; temp[4] = theForm.getFormLanguage1(); temp[5] = String.valueOf(rd.getTimesPerDay()); temp[6] = Messages.getString("adddruggroup.drug.times"); //$NON-NLS-1$ ti.setText(temp); ti.setData(rd); intDrugTableSize += 1; } } /** * Method enableFields. * * @param enable * boolean */ @Override protected void enableFields(boolean enable) { cmbRegimen.setEnabled(enable); lblPicAddDrug.setEnabled(enable); btnAddDrug.setEnabled(enable); btnRemoveDrug.setEnabled(enable); btnSearch.setEnabled(!enable); btnSaveDrugGroup.setEnabled(enable); if (enable) { tblDrugs.setBackground(ResourceUtils.getColor(iDartColor.WHITE)); } else { tblDrugs.setBackground(ResourceUtils.getColor(iDartColor.WIDGET_LIGHT_SHADOW_BACKGROUND)); } } /** * This method closes and reopens a session. It should be used in screens * that don't close after a write * */ public void closeAndReopenSession() { try { if (getHSession() != null) { getHSession().close(); } setHSession(HibernateUtil.getNewSession()); } catch (HibernateException he) { getLog().error(he); he.printStackTrace(); } } /** * Method submitForm. * * @return boolean */ @Override protected boolean submitForm() { return false; } @Override protected void setLogger() { Logger log = Logger.getLogger(this.getClass()); setLog(log); } /** * * @param newRegimen * @return */ private boolean changesMade(Regimen newRegimen) { if (!newRegimen.getRegimenName().equalsIgnoreCase(localRegimen.getRegimenName())) { return true; } else if (!newRegimen.getDrugGroup().equalsIgnoreCase(localRegimen.getDrugGroup())) { return true; } else if (!newRegimen.getRegimenDrugs().containsAll(localRegimen.getRegimenDrugs()) && newRegimen.getRegimenDrugs().size() != localRegimen.getRegimenDrugs().size()) { return true; } return false; } }