private void saveAsVCard(Contact contact, String fileName) throws IOException { String charSet = "CHARSET=" + Charset.defaultCharset().name(); String vCard = "BEGIN:VCARD" + "\nVERSION:2.1" + "\n" + getName(contact, charSet) + "FN;" + charSet + ":" + contact.getFirstName() + " " + contact.getLastName() + "\nORG;" + charSet + ":" + contact.getCompany() + "\nTITLE:" + contact.getJobTitle() + "\nNOTE:" + contact.getNote() + "\nTEL;WORK;VOICE:" + contact.getPhone() + "\nTEL;CELL;VOICE:" + contact.getMobile() + "\nADR;WORK;" + charSet + ":" + ";;" + contact.getStreet() + ";" + contact.getCity() + ";" + contact.getState() + ";" + contact.getZip() + ";" + contact.getCountry() + "\nURL;WORK:" + contact.getWebPage() + "\nEMAIL;PREF;INTERNET:" + contact.getEmail() + "\n"; if (!contact.getJpegString().equals("")) { vCard += "PHOTO;TYPE=JPEG;ENCODING=BASE64:\n " + contact.getJpegString() + "\n"; } vCard += "END:VCARD\n"; PrintWriter out = new PrintWriter(fileName, "Cp1252"); out.println(vCard); out.close(); }
@Persist public void doSave(@Optional IProgressMonitor monitor) throws IOException, InterruptedException { if (monitor == null) { monitor = new NullProgressMonitor(); } monitor.beginTask("Saving contact details to vCard...", 16); Contact originalContact = detailComposite.getOriginalContact(); Contact modifiedContact = detailComposite.getModifiedContact(); saveAsVCard(modifiedContact, modifiedContact.getSourceFile()); originalContact.setCity(modifiedContact.getCity()); Thread.sleep(50); monitor.worked(1); originalContact.setCompany(modifiedContact.getCompany()); Thread.sleep(50); monitor.worked(1); originalContact.setCountry(modifiedContact.getCountry()); Thread.sleep(50); monitor.worked(1); originalContact.setEmail(modifiedContact.getEmail()); Thread.sleep(50); monitor.worked(1); originalContact.setFirstName(modifiedContact.getFirstName()); Thread.sleep(50); monitor.worked(1); originalContact.setJobTitle(modifiedContact.getJobTitle()); Thread.sleep(50); monitor.worked(1); originalContact.setLastName(modifiedContact.getLastName()); Thread.sleep(50); monitor.worked(1); originalContact.setMiddleName(modifiedContact.getMiddleName()); Thread.sleep(50); monitor.worked(1); originalContact.setMobile(modifiedContact.getMobile()); Thread.sleep(50); monitor.worked(1); originalContact.setNote(modifiedContact.getNote()); Thread.sleep(50); monitor.worked(1); originalContact.setPhone(modifiedContact.getPhone()); Thread.sleep(50); monitor.worked(1); originalContact.setState(modifiedContact.getState()); Thread.sleep(50); monitor.worked(1); originalContact.setStreet(modifiedContact.getStreet()); Thread.sleep(50); monitor.worked(1); originalContact.setTitle(modifiedContact.getTitle()); Thread.sleep(50); monitor.worked(1); originalContact.setWebPage(modifiedContact.getWebPage()); Thread.sleep(50); monitor.worked(1); originalContact.setZip(modifiedContact.getZip()); Thread.sleep(50); monitor.worked(1); updatePartTitle(originalContact); monitor.done(); dirtyable.setDirty(false); }