use of ezvcard.property.StructuredName in project data-transfer-project by google.
the class VCardToGoogleContactConverterTest method testConversionToGoogleNames.
@Test
public void testConversionToGoogleNames() {
// Set up vCard with a primary name and one secondary name
String primaryGivenName = "Mark";
String primaryFamilyName = "Twain";
String primarySourceType = "CONTACT";
StructuredName primaryName = makeStructuredName(primaryGivenName, primaryFamilyName, primarySourceType);
String altGivenName = "Samuel";
String altFamilyName = "Clemens";
String altSourceType = "PROFILE";
StructuredName altName = makeStructuredName(altGivenName, altFamilyName, altSourceType);
VCard vCard = new VCard();
vCard.addProperty(primaryName);
vCard.addPropertyAlt(StructuredName.class, Collections.singleton(altName));
// Run test
Person person = VCardToGoogleContactConverter.convert(vCard);
// Check results
// Correct number of names
assertThat(person.getNames().size()).isEqualTo(1);
// Check primary names
List<Name> actualPrimaryNames = person.getNames().stream().filter(a -> a.getMetadata().getPrimary()).collect(Collectors.toList());
List<Pair<String, String>> actualPrimaryNameValues = actualPrimaryNames.stream().map(VCardToGoogleContactConverterTest::getGivenAndFamilyValues).collect(Collectors.toList());
assertThat(actualPrimaryNameValues).containsExactly(Pair.of(primaryGivenName, primaryFamilyName));
List<String> actualPrimaryNameSourceValues = actualPrimaryNames.stream().map(a -> a.getMetadata().getSource().getType()).collect(Collectors.toList());
assertThat(actualPrimaryNameSourceValues).containsExactly(primarySourceType);
// Check secondary names - there shouldn't be any
List<Name> actualSecondaryNames = person.getNames().stream().filter(a -> !a.getMetadata().getPrimary()).collect(Collectors.toList());
assertThat(actualSecondaryNames).isEmpty();
}
use of ezvcard.property.StructuredName in project ez-vcard by mangstadt.
the class HCardPageTest method createFullVCard.
private VCard createFullVCard() throws IOException {
VCard vcard = new VCard();
StructuredName n = new StructuredName();
n.setFamily("Claus");
n.setGiven("Santa");
n.getAdditionalNames().add("Saint Nicholas");
n.getAdditionalNames().add("Father Christmas");
n.getPrefixes().add("Mr");
n.getPrefixes().add("Dr");
n.getSuffixes().add("M.D.");
n.setSortAs("Claus");
vcard.setStructuredName(n);
vcard.setClassification("public");
vcard.setMailer("Thunderbird");
vcard.setFormattedName("Santa Claus");
vcard.setNickname("Kris Kringle");
vcard.addTitle("Manager");
vcard.addRole("Executive");
vcard.addRole("Team Builder");
vcard.addEmail("johndoe@hotmail.com", EmailType.HOME, EmailType.WORK);
vcard.addEmail("doe.john@company.com", EmailType.WORK);
Telephone tel = new Telephone(new TelUri.Builder("+1-555-222-3333").extension("101").build());
vcard.addTelephoneNumber(tel);
tel = new Telephone(new TelUri.Builder("+1-555-333-4444").build());
tel.getTypes().add(TelephoneType.WORK);
vcard.addTelephoneNumber(tel);
vcard.addTelephoneNumber("(555) 111-2222", TelephoneType.HOME, TelephoneType.VOICE, TelephoneType.PREF);
Address adr = new Address();
adr.setStreetAddress("123 Main St");
adr.setExtendedAddress("Apt 11");
adr.setLocality("Austin");
adr.setRegion("Tx");
adr.setPostalCode("12345");
adr.setCountry("USA");
adr.setLabel("123 Main St." + NEWLINE + "Austin TX, 12345" + NEWLINE + "USA");
adr.getTypes().add(AddressType.HOME);
vcard.addAddress(adr);
adr = new Address();
adr.setPoBox("123");
adr.setStreetAddress("456 Wall St.");
adr.setLocality("New York");
adr.setRegion("NY");
adr.setPostalCode("11111");
adr.setCountry("USA");
adr.getTypes().add(AddressType.PREF);
adr.getTypes().add(AddressType.WORK);
vcard.addAddress(adr);
vcard.setOrganization("Google", "GMail");
Birthday bday = new Birthday(date("1970-03-08"), false);
vcard.setBirthday(bday);
vcard.addUrl("http://company.com");
vcard.setCategories("business owner", "jolly");
vcard.addImpp(Impp.aim("myhandle"));
vcard.addImpp(Impp.yahoo("myhandle@yahoo.com"));
vcard.addNote("I am proficient in Tiger-Crane Style," + NEWLINE + "and I am more than proficient in the exquisite art of the Samurai sword.");
vcard.setGeo(123.456, -98.123);
vcard.setTimezone(new Timezone(new UtcOffset(false, -6, 0), "America/Chicago"));
InputStream in = getClass().getResourceAsStream("hcard-portrait.jpg");
Photo photo = new Photo(in, ImageType.JPEG);
vcard.addPhoto(photo);
in = getClass().getResourceAsStream("hcard-sound.ogg");
Sound sound = new Sound(in, SoundType.OGG);
vcard.addSound(sound);
vcard.setUid(new Uid("urn:uuid:ffce1595-cbe9-4418-9d0d-b015655d45f6"));
vcard.setRevision(date("2000-03-10 13:22:44"));
return vcard;
}
use of ezvcard.property.StructuredName in project ez-vcard by mangstadt.
the class HCardPageTest method create_then_parse.
@Test
public void create_then_parse() throws Exception {
// create template
VCard expected = createFullVCard();
HCardPage template = new HCardPage();
template.add(expected);
String html = template.write();
// write to file for manual inspection
FileWriter writer = new FileWriter(new File("target", "vcard.html"));
writer.write(html);
writer.close();
// parse template
HCardParser reader = new HCardParser(html);
VCard actual = reader.readNext();
reader.close();
assertEquals("Claus", actual.getSortString().getValue());
assertEquals(expected.getClassification().getValue(), actual.getClassification().getValue());
assertEquals(expected.getMailer().getValue(), actual.getMailer().getValue());
assertEquals(expected.getFormattedName().getValue(), actual.getFormattedName().getValue());
assertEquals(expected.getUid().getValue(), actual.getUid().getValue());
assertEquals(expected.getNickname().getValues(), actual.getNickname().getValues());
assertEquals(expected.getOrganization().getValues(), actual.getOrganization().getValues());
assertEquals(expected.getCategories().getValues(), actual.getCategories().getValues());
assertEquals(expected.getBirthday().getDate(), actual.getBirthday().getDate());
assertEquals(expected.getRevision().getValue(), actual.getRevision().getValue());
assertEquals(expected.getGeo().getLatitude(), actual.getGeo().getLatitude());
assertEquals(expected.getGeo().getLongitude(), actual.getGeo().getLongitude());
assertEquals(expected.getTimezone().getOffset(), actual.getTimezone().getOffset());
// text value is not written
assertNull(actual.getTimezone().getText());
{
StructuredName e = expected.getStructuredName();
StructuredName a = actual.getStructuredName();
assertEquals(e.getFamily(), a.getFamily());
assertEquals(e.getGiven(), a.getGiven());
assertEquals(e.getAdditionalNames(), a.getAdditionalNames());
assertEquals(e.getPrefixes(), a.getPrefixes());
assertEquals(e.getSuffixes(), a.getSuffixes());
assertTrue(a.getSortAs().isEmpty());
}
assertEquals(expected.getTitles().size(), actual.getTitles().size());
for (int i = 0; i < expected.getTitles().size(); i++) {
Title e = expected.getTitles().get(i);
Title a = actual.getTitles().get(i);
assertEquals(e.getValue(), a.getValue());
}
assertEquals(expected.getRoles().size(), actual.getRoles().size());
for (int i = 0; i < expected.getRoles().size(); i++) {
Role e = expected.getRoles().get(i);
Role a = actual.getRoles().get(i);
assertEquals(e.getValue(), a.getValue());
}
assertEquals(expected.getNotes().size(), actual.getNotes().size());
for (int i = 0; i < expected.getNotes().size(); i++) {
Note e = expected.getNotes().get(i);
Note a = actual.getNotes().get(i);
assertEquals(e.getValue(), a.getValue());
}
assertEquals(expected.getUrls().size(), actual.getUrls().size());
for (int i = 0; i < expected.getUrls().size(); i++) {
Url e = expected.getUrls().get(i);
Url a = actual.getUrls().get(i);
assertEquals(e.getValue(), a.getValue());
}
assertEquals(expected.getImpps().size(), actual.getImpps().size());
for (int i = 0; i < expected.getImpps().size(); i++) {
Impp e = expected.getImpps().get(i);
Impp a = actual.getImpps().get(i);
assertEquals(e.getUri(), a.getUri());
}
assertEquals(expected.getEmails().size(), actual.getEmails().size());
for (int i = 0; i < expected.getEmails().size(); i++) {
Email e = expected.getEmails().get(i);
Email a = actual.getEmails().get(i);
assertEquals(e.getValue(), a.getValue());
assertEquals(e.getTypes(), a.getTypes());
}
assertEquals(expected.getTelephoneNumbers().size(), actual.getTelephoneNumbers().size());
for (int i = 0; i < expected.getTelephoneNumbers().size(); i++) {
Telephone e = expected.getTelephoneNumbers().get(i);
Telephone a = actual.getTelephoneNumbers().get(i);
if (e.getText() != null) {
assertEquals(e.getText(), a.getText());
} else {
TelUri uri = e.getUri();
if (uri.getExtension() == null) {
assertEquals(e.getUri().getNumber(), a.getText());
} else {
assertEquals(e.getUri().getNumber() + " x" + uri.getExtension(), a.getText());
}
}
assertEquals(e.getTypes(), a.getTypes());
}
assertEquals(expected.getAddresses().size(), actual.getAddresses().size());
for (int i = 0; i < expected.getAddresses().size(); i++) {
Address e = expected.getAddresses().get(i);
Address a = actual.getAddresses().get(i);
assertEquals(e.getPoBox(), a.getPoBox());
assertEquals(e.getExtendedAddress(), a.getExtendedAddress());
assertEquals(e.getStreetAddress(), a.getStreetAddress());
assertEquals(e.getLocality(), a.getLocality());
assertEquals(e.getRegion(), a.getRegion());
assertEquals(e.getPostalCode(), a.getPostalCode());
assertEquals(e.getCountry(), a.getCountry());
assertEquals(e.getLabel(), a.getLabel());
assertEquals(e.getTypes(), a.getTypes());
}
assertEquals(expected.getPhotos().size(), actual.getPhotos().size());
for (int i = 0; i < expected.getPhotos().size(); i++) {
Photo e = expected.getPhotos().get(i);
Photo a = actual.getPhotos().get(i);
assertEquals(e.getContentType(), a.getContentType());
assertArrayEquals(e.getData(), a.getData());
}
assertEquals(expected.getSounds().size(), actual.getSounds().size());
for (int i = 0; i < expected.getSounds().size(); i++) {
Sound e = expected.getSounds().get(i);
Sound a = actual.getSounds().get(i);
assertEquals(e.getContentType(), a.getContentType());
assertArrayEquals(e.getData(), a.getData());
}
assertEquals("ez-vcard " + Ezvcard.VERSION, actual.getProductId().getValue());
}
use of ezvcard.property.StructuredName in project ez-vcard by mangstadt.
the class JCardWriterTest method createExample.
public static VCard createExample() {
VCard vcard = new VCard();
vcard.setFormattedName("SimonPerreault");
StructuredName n = new StructuredName();
n.setFamily("Perreault");
n.setGiven("Simon");
n.getSuffixes().add("ing.jr");
n.getSuffixes().add("M.Sc.");
vcard.setStructuredName(n);
Birthday bday = new Birthday(PartialDate.builder().month(2).date(3).build());
vcard.setBirthday(bday);
Anniversary anniversary = new Anniversary(PartialDate.builder().year(2009).month(8).date(8).hour(14).minute(30).second(0).offset(new UtcOffset(false, -5, 0)).build());
vcard.setAnniversary(anniversary);
vcard.setGender(Gender.male());
vcard.addLanguage("fr").setPref(1);
vcard.addLanguage("en").setPref(2);
vcard.setOrganization("Viagenie").setType("work");
Address adr = new Address();
adr.setExtendedAddress("SuiteD2-630");
adr.setStreetAddress("2875Laurier");
adr.setLocality("Quebec");
adr.setRegion("QC");
adr.setPostalCode("G1V2M2");
adr.setCountry("Canada");
adr.getTypes().add(AddressType.WORK);
vcard.addAddress(adr);
TelUri telUri = new TelUri.Builder("+1-418-656-9254").extension("102").build();
Telephone tel = new Telephone(telUri);
tel.getTypes().add(TelephoneType.WORK);
tel.getTypes().add(TelephoneType.VOICE);
tel.setPref(1);
vcard.addTelephoneNumber(tel);
tel = new Telephone(new TelUri.Builder("+1-418-262-6501").build());
tel.getTypes().add(TelephoneType.WORK);
tel.getTypes().add(TelephoneType.CELL);
tel.getTypes().add(TelephoneType.VOICE);
tel.getTypes().add(TelephoneType.VIDEO);
tel.getTypes().add(TelephoneType.TEXT);
vcard.addTelephoneNumber(tel);
vcard.addEmail("simon.perreault@viagenie.ca", EmailType.WORK);
Geo geo = new Geo(46.772673, -71.282945);
geo.setType("work");
vcard.setGeo(geo);
Key key = new Key("http://www.viagenie.ca/simon.perreault/simon.asc", null);
key.setType("work");
vcard.addKey(key);
vcard.setTimezone(new Timezone(new UtcOffset(false, -5, 0)));
vcard.addUrl("http://nomis80.org").setType("home");
return vcard;
}
use of ezvcard.property.StructuredName in project ez-vcard by mangstadt.
the class StructuredNameScribe method _parseHtml.
@Override
protected StructuredName _parseHtml(HCardElement element, ParseContext context) {
StructuredName property = new StructuredName();
property.setFamily(s(element.firstValue("family-name")));
property.setGiven(s(element.firstValue("given-name")));
property.getAdditionalNames().addAll(element.allValues("additional-name"));
property.getPrefixes().addAll(element.allValues("honorific-prefix"));
property.getSuffixes().addAll(element.allValues("honorific-suffix"));
return property;
}
Aggregations