private void updateContact(Contact contact, DataSourceItem dsi, Stats stats) throws ServiceException { int cid = contact.getId(); ContactData cd = new ContactData(contact); if (!cd.isEmpty()) { ParsedContact pc = new ParsedContact(localData.getContact(dsi.itemId)); cd.modifyParsedContact(pc); localData.modifyContact(dsi.itemId, pc); updateContactMapping(dsi.itemId, contact); stats.updated++; LOG.debug("Modified local contact: itemId=%d, cid=%d", dsi.itemId, cid); } else { LOG.debug( "Removing contact with cid %d since changes would " + "result in an empty contact", cid); deleteContact(dsi.itemId, stats); } }