public void update(JList nameList, String scoutName) {
        // should run validateInfo() before this method

        for (int i = 0; i < nameList.getModel().getSize(); ++i) {
            String advancementName = (String) nameList.getModel().getElementAt(i);
            if (advancementName.equalsIgnoreCase(txtName.getText()) && !txtName.getText().equals(nameList.getSelectedValue().toString())) {
                Util.setError(lblNameError, "Scout name already exists");
                return;
            }
        }

        Calendar birthDate;
        if ((birthDate = convertDateStringToCalendar(txtBirthDate.getText())) == null) {
            return;
        }

        Calendar rankDate;
        if ((rankDate = convertDateStringToCalendar(txtRankDate.getText())) == null) {
            return;
        }

        scout.setName(txtName.getText());
        scout.setBirthDate(birthDate.getTime());
        scout.setCurrentAdvancementId(LogicAdvancement.findByName(cboCurrentRank.getSelectedItem().toString()).getId());
        scout.setAdvancementDate(rankDate.getTime());
        scout.setTypeId(ScoutTypeConst.BOY_SCOUT.getId());

        if (!Util.isEmpty(txtPositionName)) {
            Calendar positionDate;
            if ((positionDate = convertDateStringToCalendar(txtPositionDate.getText())) == null) {
                return;
            }

            scout.setPosition(txtPositionName.getText());
            scout.setPostionDate(positionDate.getTime());
        }

        Scout tempScout = LogicScout.findByName(scoutName);
        scout.setId(tempScout.getId());
        LogicScout.update(scout);

        List<Contact> contactList = new ArrayList<Contact>();
        if (tableModelContacts.getRowCount() > 0) {
            for (int i = 0; i < tblContacts.getRowCount(); ++i) {
                Contact contact = new Contact();
                contact.setTypeId(ContactTypeConst.getIdByName((String)tableModelContacts.getValueAt(i, COL_TYPE)));
                contact.setName((String) tableModelContacts.getValueAt(i, COL_NAME));
                contact.setRelation((String) tableModelContacts.getValueAt(i, COL_RELATION));
                contact.setData((String) tableModelContacts.getValueAt(i, COL_DATA));
                contact.setScoutId(scout.getId());
                contactList.add(contact);
            }
        }

        LogicContact.updateList(contactList, scout.getId());
    }