use of ezvcard.property.Address in project qksms by moezbhatti.
the class ContactOperations method convertAddresses.
private void convertAddresses(List<NonEmptyContentValues> contentValues, VCard vcard) {
for (Address address : vcard.getAddresses()) {
NonEmptyContentValues cv = new NonEmptyContentValues(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
String street = address.getStreetAddress();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.STREET, street);
String poBox = address.getPoBox();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.POBOX, poBox);
String city = address.getLocality();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.CITY, city);
String state = address.getRegion();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.REGION, state);
String zipCode = address.getPostalCode();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, zipCode);
String country = address.getCountry();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, country);
String label = address.getLabel();
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.LABEL, label);
int addressKind = DataMappings.getAddressType(address);
cv.put(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, addressKind);
contentValues.add(cv);
}
}
use of ezvcard.property.Address in project data-transfer-project by google.
the class ToVCardAddressTransformer method apply.
@Override
public Address apply(Map<String, String> addressMap, TransformerContext context) {
Address address = new Address();
address.setStreetAddress(addressMap.get("street"));
address.setLocality(addressMap.get("city"));
address.setCountry(addressMap.get("countryOrRegion"));
address.setPostalCode(addressMap.get("postalCode"));
address.setRegion(addressMap.get("state"));
return address;
}
use of ezvcard.property.Address in project ofbiz-framework by apache.
the class VCard method importVCard.
/**
* import a vcard from byteBuffer. the reader use is ez-vcard, see official site https://github.com/mangstadt/ez-vcard/
* @param dctx
* @param context
* @return
* @throws IOException
*/
public static Map<String, Object> importVCard(DispatchContext dctx, Map<String, ? extends Object> context) throws IOException {
LocalDispatcher dispatcher = dctx.getDispatcher();
Delegator delegator = dctx.getDelegator();
Locale locale = (Locale) context.get("locale");
Map<String, Object> result = ServiceUtil.returnSuccess();
ByteBuffer byteBuffer = (ByteBuffer) context.get("infile");
byte[] inputByteArray = byteBuffer.array();
InputStream in = new ByteArrayInputStream(inputByteArray);
Map<String, Object> serviceCtx = new HashMap<String, Object>();
boolean isGroup = false;
List<Map<String, String>> partiesCreated = new ArrayList<Map<String, String>>();
List<Map<String, String>> partiesExist = new ArrayList<Map<String, String>>();
// TODO this is not used yet
String partyName = "";
try (VCardReader vCardReader = new VCardReader(in)) {
ezvcard.VCard vcard = null;
while ((vcard = vCardReader.readNext()) != null) {
// Todo create a generic service to resolve duplicate party
FormattedName formattedName = vcard.getFormattedName();
if (formattedName != null) {
String refCardId = formattedName.getValue();
GenericValue partyIdentification = EntityQuery.use(delegator).from("PartyIdentification").where("partyIdentificationTypeId", "VCARD_FN_ORIGIN", "idValue", refCardId).queryFirst();
if (partyIdentification != null) {
partiesExist.add(UtilMisc.toMap("partyId", (String) partyIdentification.get("partyId")));
continue;
}
// TODO manage update
}
// check if it's already load
isGroup = false;
if (vcard.getKind() != null)
isGroup = vcard.getKind().isGroup();
StructuredName structuredName = vcard.getStructuredName();
if (UtilValidate.isEmpty(structuredName))
continue;
if (!isGroup) {
serviceCtx.put("firstName", structuredName.getGiven());
serviceCtx.put("lastName", structuredName.getFamily());
partyName = structuredName.getGiven() + " " + structuredName.getFamily();
}
// Resolve all postal Address
for (Address address : vcard.getAddresses()) {
boolean workAddress = false;
for (AddressType addressType : address.getTypes()) {
if (AddressType.PREF.equals(addressType) || AddressType.WORK.equals(addressType)) {
workAddress = true;
break;
}
}
if (!workAddress)
continue;
serviceCtx.put("address1", address.getStreetAddressFull());
serviceCtx.put("city", address.getLocality());
serviceCtx.put("postalCode", address.getPostalCode());
GenericValue countryGeo = EntityQuery.use(delegator).from("Geo").where(EntityCondition.makeCondition("geoTypeId", EntityOperator.EQUALS, "COUNTRY"), EntityCondition.makeCondition("geoName", EntityOperator.LIKE, address.getCountry())).cache().queryFirst();
if (countryGeo != null) {
serviceCtx.put("countryGeoId", countryGeo.get("geoId"));
}
GenericValue stateGeo = EntityQuery.use(delegator).from("Geo").where(EntityCondition.makeCondition("geoTypeId", EntityOperator.EQUALS, "STATE"), EntityCondition.makeCondition("geoName", EntityOperator.LIKE, address.getRegion())).cache().queryFirst();
if (stateGeo != null) {
serviceCtx.put("stateProvinceGeoId", stateGeo.get("geoId"));
}
}
int nbEmailAddr = (vcard.getEmails() != null) ? vcard.getEmails().size() : 0;
for (Email email : vcard.getEmails()) {
if (nbEmailAddr > 1) {
boolean workEmail = false;
for (EmailType emailType : email.getTypes()) {
if (EmailType.PREF.equals(emailType) || EmailType.WORK.equals(emailType)) {
workEmail = true;
break;
}
}
if (!workEmail)
continue;
}
String emailAddr = email.getValue();
if (UtilValidate.isEmail(emailAddr)) {
serviceCtx.put("emailAddress", emailAddr);
} else {
// TODO change uncorrect labellisation
String emailFormatErrMsg = UtilProperties.getMessage(resourceError, "SfaImportVCardEmailFormatError", locale);
vCardReader.close();
return ServiceUtil.returnError(UtilProperties.getMessage(resourceError, "MarketingEmailFormatError", UtilMisc.toMap("firstName", structuredName.getGiven(), "lastName", structuredName.getFamily(), "emailFOrmatErrMsg", emailFormatErrMsg), locale));
}
}
int nbPhone = (vcard.getTelephoneNumbers() != null) ? vcard.getTelephoneNumbers().size() : 0;
for (Telephone phone : vcard.getTelephoneNumbers()) {
if (nbPhone > 1) {
boolean workPhone = false;
for (TelephoneType phoneType : phone.getTypes()) {
if (TelephoneType.PREF.equals(phoneType) || TelephoneType.WORK.equals(phoneType)) {
workPhone = true;
break;
}
}
if (!workPhone)
continue;
}
String phoneAddr = phone.getText();
boolean internationalPhone = phoneAddr.startsWith("+") || phoneAddr.startsWith("00");
phoneAddr = StringUtil.removeNonNumeric(phoneAddr);
int indexLocal = 0;
if (internationalPhone) {
indexLocal = 4;
if (!phoneAddr.startsWith("00")) {
phoneAddr = phoneAddr.concat("00");
}
serviceCtx.put("areaCode", phoneAddr.substring(0, indexLocal));
}
serviceCtx.put("contactNumber", phoneAddr.substring(indexLocal));
}
/* TODO improve this part to manage party organization */
GenericValue userLogin = (GenericValue) context.get("userLogin");
serviceCtx.put("userLogin", userLogin);
String serviceName = (String) context.get("serviceName");
Map<String, Object> serviceContext = UtilGenerics.cast(context.get("serviceContext"));
if (UtilValidate.isNotEmpty(serviceContext)) {
for (Map.Entry<String, Object> entry : serviceContext.entrySet()) {
serviceCtx.put(entry.getKey(), entry.getValue());
}
}
Map<String, Object> resp = dispatcher.runSync(serviceName, serviceCtx);
if (ServiceUtil.isError(resp)) {
return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resp));
}
partiesCreated.add(UtilMisc.toMap("partyId", (String) resp.get("partyId")));
if (formattedName != null) {
// store the origin creation
Map<String, Object> createPartyIdentificationMap = dctx.makeValidContext("createPartyIdentification", ModelService.IN_PARAM, context);
createPartyIdentificationMap.put("partyId", resp.get("partyId"));
createPartyIdentificationMap.put("partyIdentificationTypeId", "VCARD_FN_ORIGIN");
createPartyIdentificationMap.put("idValue", formattedName.getValue());
resp = dispatcher.runSync("createPartyIdentification", createPartyIdentificationMap);
if (ServiceUtil.isError(resp)) {
return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resp));
}
}
}
} catch (IOException | GenericEntityException | GenericServiceException e) {
Debug.logError(e, module);
return ServiceUtil.returnError(UtilProperties.getMessage(resourceError, "SfaImportVCardError", UtilMisc.toMap("errorString", e.getMessage()), locale));
}
result.put("partiesCreated", partiesCreated);
result.put("partiesExist", partiesExist);
return result;
}
use of ezvcard.property.Address in project ofbiz-framework by apache.
the class VCard method exportVCard.
public static Map<String, Object> exportVCard(DispatchContext dctx, Map<String, ? extends Object> context) {
Delegator delegator = dctx.getDelegator();
String partyId = (String) context.get("partyId");
Locale locale = (Locale) context.get("locale");
File file = null;
try {
ezvcard.VCard vcard = new ezvcard.VCard();
StructuredName structuredName = new StructuredName();
GenericValue person = EntityQuery.use(delegator).from("Person").where("partyId", partyId).queryOne();
if (person != null) {
if (UtilValidate.isNotEmpty(person.getString("firstName")))
structuredName.setGiven(person.getString("firstName"));
if (UtilValidate.isNotEmpty(person.getString("lastName")))
structuredName.setFamily(person.getString("lastName"));
vcard.setStructuredName(structuredName);
}
String fullName = PartyHelper.getPartyName(delegator, partyId, false);
vcard.setFormattedName(fullName);
GenericValue postalAddress = PartyWorker.findPartyLatestPostalAddress(partyId, delegator);
if (postalAddress != null) {
Address address = new Address();
address.setStreetAddress(postalAddress.getString("address1"));
address.setLocality(postalAddress.getString("city"));
address.setPostalCode(postalAddress.getString("postalCode"));
GenericValue state = postalAddress.getRelatedOne("StateProvinceGeo", false);
if (state != null) {
address.setRegion(state.getString("geoName"));
}
GenericValue countryGeo = postalAddress.getRelatedOne("CountryGeo", false);
if (countryGeo != null) {
String country = postalAddress.getRelatedOne("CountryGeo", false).getString("geoName");
address.setCountry(country);
address.getTypes().add(AddressType.WORK);
;
// TODO : this can be better set by checking contactMechPurposeTypeId
}
vcard.addAddress(address);
}
GenericValue telecomNumber = PartyWorker.findPartyLatestTelecomNumber(partyId, delegator);
if (telecomNumber != null) {
Telephone tel = new Telephone(telecomNumber.getString("areaCode") + telecomNumber.getString("contactNumber"));
tel.getTypes().add(TelephoneType.WORK);
vcard.addTelephoneNumber(tel);
// TODO : this can be better set by checking contactMechPurposeTypeId
}
GenericValue emailAddress = PartyWorker.findPartyLatestContactMech(partyId, "EMAIL_ADDRESS", delegator);
if (emailAddress != null && UtilValidate.isNotEmpty(emailAddress.getString("infoString"))) {
vcard.addEmail(new Email(emailAddress.getString("infoString")));
}
// TODO : convert to directdownload of a vcf file
String saveToDirectory = EntityUtilProperties.getPropertyValue("sfa", "save.outgoing.directory", "", delegator);
if (UtilValidate.isEmpty(saveToDirectory)) {
saveToDirectory = System.getProperty("ofbiz.home");
}
String saveToFilename = fullName + ".vcf";
file = FileUtil.getFile(saveToDirectory + "/" + saveToFilename);
Ezvcard.write(vcard).go(file);
} catch (FileNotFoundException e) {
Debug.logError(e, module);
return ServiceUtil.returnError(UtilProperties.getMessage(resourceError, "SfaExportVCardErrorOpeningFile", UtilMisc.toMap("errorString", file.getAbsolutePath()), locale));
} catch (IOException e) {
Debug.logError(e, module);
return ServiceUtil.returnError(UtilProperties.getMessage(resourceError, "SfaExportVCardErrorWritingFile", UtilMisc.toMap("errorString", file.getAbsolutePath()), locale));
} catch (GenericEntityException e) {
return ServiceUtil.returnError(UtilProperties.getMessage(resourceError, "SfaExportVCardError", UtilMisc.toMap("errorString", e.getMessage()), locale));
}
return ServiceUtil.returnSuccess();
}
use of ezvcard.property.Address in project ez-vcard by mangstadt.
the class AddressScribeTest method parseText.
@Test
public void parseText() {
sensei.assertParseText("P.O. Box 1234\\;;Apt\\, 11;123 Main St;Austin;TX;12345;USA").run(withAllFields);
Address multipleValuesUnderV2_1 = new Address(withAllFields);
multipleValuesUnderV2_1.setExtendedAddress("Apt, 11,P.O. Box 12");
multipleValuesUnderV2_1.setStreetAddress("123 Main St,555 Main St");
sensei.assertParseText("P.O. Box 1234\\;;Apt\\, 11,P.O. Box 12;123 Main St,555 Main St;Austin;TX;12345;USA").versions(V2_1).run(multipleValuesUnderV2_1);
sensei.assertParseText("P.O. Box 1234\\;;Apt\\, 11,P.O. Box 12;123 Main St,555 Main St;Austin;TX;12345;USA").versions(V3_0, V4_0).run(withMultipleValuesFields);
sensei.assertParseText("P.O. Box 1234\\;;;;Austin;TX;12345;").run(withSomeFields);
sensei.assertParseText(";;;;;;").run(empty);
sensei.assertParseText("").run(empty);
}
Aggregations