Skip to content

Commit

Permalink
Improved email romanization by introducing CharConverter
Browse files Browse the repository at this point in the history
  • Loading branch information
jkubrynski committed May 27, 2015
1 parent 418486d commit 22556b2
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/main/java/io/codearte/jfairy/EnFairyModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import io.codearte.jfairy.producer.person.PassportNumberProvider;
import io.codearte.jfairy.producer.person.locale.en.EnPassportNumberProvider;
import io.codearte.jfairy.producer.person.locale.en.SocialSecurityCardNumberProvider;
import io.codearte.jfairy.producer.util.CharConverter;
import io.codearte.jfairy.producer.util.locale.NonOpCharConverter;

import java.util.Random;

Expand All @@ -25,7 +27,7 @@ protected void configure() {
bind(NationalIdentityCardNumberProvider.class).to(SocialSecurityCardNumberProvider.class);
bind(VATIdentificationNumberProvider.class).to(EmployerIdentificationNumberProvider.class);
bind(PassportNumberProvider.class).to(EnPassportNumberProvider.class);

bind(CharConverter.class).to(NonOpCharConverter.class);
}

}
3 changes: 3 additions & 0 deletions src/main/java/io/codearte/jfairy/EsFairyModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import io.codearte.jfairy.producer.person.PassportNumberProvider;
import io.codearte.jfairy.producer.person.locale.es.DNINumberProvider;
import io.codearte.jfairy.producer.person.locale.es.EsPassportNumberProvider;
import io.codearte.jfairy.producer.util.CharConverter;
import io.codearte.jfairy.producer.util.locale.NonOpCharConverter;

import java.util.Random;

Expand All @@ -25,5 +27,6 @@ protected void configure() {
bind(NationalIdentityCardNumberProvider.class).to(DNINumberProvider.class);
bind(VATIdentificationNumberProvider.class).to(CIFProvider.class);
bind(PassportNumberProvider.class).to(EsPassportNumberProvider.class);
bind(CharConverter.class).to(NonOpCharConverter.class);
}
}
3 changes: 3 additions & 0 deletions src/main/java/io/codearte/jfairy/PlFairyModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import io.codearte.jfairy.producer.person.PassportNumberProvider;
import io.codearte.jfairy.producer.person.locale.pl.PlIdentityCardNumberProvider;
import io.codearte.jfairy.producer.person.locale.pl.PlPassportNumberProvider;
import io.codearte.jfairy.producer.util.CharConverter;
import io.codearte.jfairy.producer.util.locale.PlCharConverter;

import java.util.Random;

Expand All @@ -25,5 +27,6 @@ protected void configure() {
bind(NationalIdentityCardNumberProvider.class).to(PlIdentityCardNumberProvider.class);
bind(VATIdentificationNumberProvider.class).to(NIPProvider.class);
bind(PassportNumberProvider.class).to(PlPassportNumberProvider.class);
bind(CharConverter.class).to(PlCharConverter.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.codearte.jfairy.producer.company.CompanyProvider;
import io.codearte.jfairy.producer.person.locale.pl.PeselFactory;
import io.codearte.jfairy.producer.person.locale.pl.PeselProperties;
import io.codearte.jfairy.producer.util.CharConverter;
import org.apache.commons.lang3.RandomStringUtils;
import org.joda.time.DateTime;

Expand Down Expand Up @@ -45,6 +46,7 @@ public class PersonProvider implements Provider<Person> {
private final NationalIdentityCardNumberProvider nationalIdentityCardNumberProvider;
private final AddressProvider addressProvider;
private final CompanyProvider companyProvider;
private final CharConverter charConverter;
private final TimeProvider timeProvider;
private final PassportNumberProvider passportNumberProvider;

Expand All @@ -57,6 +59,7 @@ public PersonProvider(DataMaster dataMaster,
AddressProvider addressProvider,
CompanyProvider companyProvider,
PassportNumberProvider passportNumberProvider,
CharConverter charConverter,
TimeProvider timeProvider,
@Assisted PersonProperties.PersonProperty... personProperties) {

Expand All @@ -68,6 +71,7 @@ public PersonProvider(DataMaster dataMaster,
this.addressProvider = addressProvider;
this.passportNumberProvider = passportNumberProvider;
this.companyProvider = companyProvider;
this.charConverter = charConverter;
this.timeProvider = timeProvider;

for (PersonProperties.PersonProperty personProperty : personProperties) {
Expand Down Expand Up @@ -132,7 +136,7 @@ private String generateEmail(String firstName, String lastName) {
temp += ".";
}
}
return stripAccents(lowerCase(temp + lastName + '@' + dataMaster.getRandomValue(PERSONAL_EMAIL)));
return charConverter.romanize(lowerCase(temp + lastName + '@' + dataMaster.getRandomValue(PERSONAL_EMAIL)));
}

public void setSex(Person.Sex sex) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.codearte.jfairy.producer.util;

/**
* @author Jakub Kubrynski
*/
public interface CharConverter {

String romanize(String value);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.codearte.jfairy.producer.util.locale;

import io.codearte.jfairy.producer.util.CharConverter;

/**
* @author Jakub Kubrynski
*/
public class NonOpCharConverter implements CharConverter {

@Override
public String romanize(String value) {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.codearte.jfairy.producer.util.locale;

import io.codearte.jfairy.producer.util.CharConverter;
import org.apache.commons.lang3.StringUtils;

/**
* @author Jakub Kubrynski
*/
public class PlCharConverter implements CharConverter {

private static final String[] POLISH_CHARS = {"ą", "ć", "ę", "ł", "ń", "ś", "ó", "ź", "ż"};
private static final String[] LATIN_CHARS = {"a", "c", "e", "l", "n", "s", "o", "z", "z"};

@Override
public String romanize(String value) {
return StringUtils.replaceEachRepeatedly(value, POLISH_CHARS, LATIN_CHARS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.codearte.jfairy.producer.util.locale

import spock.lang.Specification

/**
* @author Jakub Kubrynski
*/
class PlCharConverterSpec extends Specification {

PlCharConverter charConverter = new PlCharConverter()

def "should romanize polish text"() {
given:
String input = "Zażółć gęślą jaźń"
when:
def output = charConverter.romanize(input)
then:
output == "Zazolc gesla jazn"
}
}

0 comments on commit 22556b2

Please sign in to comment.