Skip to content

Commit

Permalink
Added street address.
Browse files Browse the repository at this point in the history
Added street, street no. and apartement no. in EN and PL versions to be generated in the addresssss.

Localised address string.

Added interface and implementation to provide localised address strings.

Import fix.
  • Loading branch information
OlgaMaciaszek committed Feb 15, 2015
1 parent 3689cb6 commit bb5cdc3
Show file tree
Hide file tree
Showing 10 changed files with 167 additions and 31 deletions.
26 changes: 24 additions & 2 deletions src/main/java/eu/codearte/jfairy/producer/person/Address.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,21 @@
public class Address {

private final String postalCode;

private final String city;

public Address(String postalCode, String city) {
private final String street;

private final String streetNumber;

private final String apartmentNumber;

public Address(String postalCode, String city, String street, String streetNumber, String apartmentNumber) {
this.postalCode = postalCode;
this.city = city;
this.street = street;
this.streetNumber = streetNumber;
this.apartmentNumber = apartmentNumber;
}

public String getPostalCode() {
Expand All @@ -18,8 +28,20 @@ public String getCity() {
return city;
}

public String street() {
return street;
}

public String streetNumber() {
return streetNumber;
}

public String apartmentNumber() {
return apartmentNumber;
}

@Override
public String toString() {
public String toString() { //TODO OMS: make address strings with street address in localised versions
return postalCode + " " + city;
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package eu.codearte.jfairy.producer.person;

import com.google.inject.Inject;
import com.google.inject.Provider;
import eu.codearte.jfairy.data.DataMaster;
import eu.codearte.jfairy.producer.BaseProducer;

import javax.inject.Inject;

class AddressProvider implements Provider<Address> {

private static final String POSTAL_CODE_FORMAT = "postal_code";

private static final String CITY = "city";

private static final String STREET = "street";

private final BaseProducer baseProducer;

private final DataMaster dataMaster;

@Inject
Expand All @@ -24,9 +29,12 @@ public Address get() {
String postalCodeFormat = dataMaster.getRandomValue(POSTAL_CODE_FORMAT);

String city = dataMaster.getRandomValue(CITY);
String street = dataMaster.getRandomValue(STREET);
String postalCode = baseProducer.numerify(postalCodeFormat);
String streetNumber = String.valueOf(baseProducer.randomInt(25));
String apartmentNumber = baseProducer.trueOrFalse() ? String.valueOf(baseProducer.randomInt(350)) : "";

return new Address(postalCode, city);
return new Address(postalCode, city, street, streetNumber, apartmentNumber);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package eu.codearte.jfairy.producer.person;

import javax.inject.Singleton;

/**
* @author omaciaszek
* @since 15.02.15
*/
@Singleton
public interface AddressStringProvider {

String addressString(Address address);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package eu.codearte.jfairy.producer.person.locale.en;

import eu.codearte.jfairy.producer.person.Address;
import eu.codearte.jfairy.producer.person.AddressStringProvider;

/**
* @author omaciaszek
* @since 15.02.15
*/
public class EnAddressStringProvider implements AddressStringProvider {

@Override
public String addressString(Address address) {
return address.streetNumber() + " " + address.street() + " Str." + apartmentString(address)
+ ", " + address.getPostalCode() + " " + address.getCity();
}

private String apartmentString(Address address) {
String apartmentString;
if (address.apartmentNumber().equals("")) {
apartmentString = "";
} else {
apartmentString = " No. " + address.apartmentNumber();
}
return apartmentString;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package eu.codearte.jfairy.producer.person.locale.pl;

import eu.codearte.jfairy.producer.person.Address;
import eu.codearte.jfairy.producer.person.AddressStringProvider;

/**
* @author omaciaszek
* @since 15.02.15
*/
public class PlAddressStringProvider implements AddressStringProvider {

@Override
public String addressString(Address address) {
return
"ul. " + address.street() + " " + address.streetNumber() + apartmentString(
address) + ", " + address.getPostalCode()
+ " " + address.getCity();
}

private String apartmentString(Address address) {
String apartmentString;
if (address.apartmentNumber().equals("")) {
apartmentString = "";
} else {
apartmentString = " lok. " + address.apartmentNumber();
}
return apartmentString;
}
}
4 changes: 3 additions & 1 deletion src/main/resources/jfairy_en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ data:

postal_code: ['#####']

city: [New York, Washington]
city: [New York, Washington, San Francisco, Miami]

street: [Atkins Avenue, Aster Court, Cove Lane, Ford Street, Highland Place, Herzi Street, Tabor Court, Stillwell Avenue, Summer Place, Washington Walk]

country: ['Canada', 'USA', 'Poland']
2 changes: 2 additions & 0 deletions src/main/resources/jfairy_pl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ data:

city: [Białystok, Bielsko-Biała, Bydgoszcz, Bytom, Chorzów, Częstochowa, Dąbrowa Górnicza, Elbląg, Gdańsk, Gdynia, Gliwice, Gorzów Wielkopolski, Grudziądz, Jastrzębie Zdrój, Jaworzno, Kalisz, Katowice, Kielce, Koszalin, Kraków, Legnica, Lublin, Łódź, Olsztyn, Opole, Poznań, Płock, Radom, Ruda Śląska, Rybnik, Rzeszów, Sosnowiec, Szczecin, Słupsk, Tarnów, Toruń, Tychy, Warszawa, Wałbrzych, Wrocław, Włocławek, Zabrze, Zielona Góra]

street: [Ogrodowa, A. Mickiewicza, Chłodna, Targowa, Prosta, Biała, Żelazna, Miedziana, Złota, Kacza, Browarna]

country: ['Polska']
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import org.joda.time.DateTime
import spock.lang.Ignore
import spock.lang.Specification

import static PersonProperties.female
import static PersonProperties.male
import static PersonProperties.telephoneFormat
import static eu.codearte.jfairy.producer.person.PersonProperties.female
import static eu.codearte.jfairy.producer.person.PersonProperties.male
import static eu.codearte.jfairy.producer.person.PersonProperties.telephoneFormat

class PersonSpec extends Specification {

Expand Down Expand Up @@ -53,6 +53,7 @@ class PersonSpec extends Specification {
person.isMale() || person.isFemale()
person.nationalIdentificationNumber()
person.nationalIdentityCardNumber()
person.address

emailValidator.isValid(person.email())
}
Expand Down Expand Up @@ -115,7 +116,7 @@ class PersonSpec extends Specification {
given:
def person = fairy.person()
when:
def address = person.getAddress()
def address = person.address
then:
address
}
Expand All @@ -124,7 +125,7 @@ class PersonSpec extends Specification {
given:
def person = fairy.person()
when:
def postalCode = person.getAddress().postalCode
def postalCode = person.address.postalCode
then:
postalCode
}
Expand All @@ -133,12 +134,25 @@ class PersonSpec extends Specification {
given:
def person = fairy.person()
when:
def city = person.getAddress().city
def city = person.address.city
then:
city
}

def "Should generate middle name only sometimes"() {
def "should create street address"() {
given:
def person = fairy.person()
when:
def address = person.getAddress()
then:
address.street()
and:
address.streetNumber().isNumber()
and:
(address.apartmentNumber().isNumber() || address.apartmentNumber() == "")
}

def "should generate middle name only sometimes"() {
given:
def persons = []
(1..100).each { persons.add(fairy.person()) }
Expand All @@ -147,8 +161,23 @@ class PersonSpec extends Specification {
def allWithMiddleName = persons.findAll { p -> !p.middleName().isEmpty() }
then:
allWithoutMiddleName.size() > 0
and:
allWithMiddleName.size() > 0
}

def "should generate apartmentNumber only sometimes"() {
given:
def persons = []
(1..50).each { persons.add(fairy.person()) }
when:
def allWithoutApartmentNumber = persons.findAll { p -> p.address.apartmentNumber().isEmpty() }
def allWithApartmentNumber = persons.findAll { p -> !p.address.apartmentNumber().isEmpty() }
then:
allWithoutApartmentNumber.size() > 0
and:
allWithApartmentNumber.size() > 0

}


}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import eu.codearte.jfairy.producer.DateProducer
import org.joda.time.DateTime
import spock.lang.Specification

import static PolishIdentityCardNumber.ISSUING_BEGIN
import static PolishIdentityCardNumber.LETTER_WEIGHT
import static PolishIdentityCardNumber.MAX_DIGITS_PART_VALUE
import static eu.codearte.jfairy.producer.person.locale.pl.PolishIdentityCardNumber.ISSUING_BEGIN
import static eu.codearte.jfairy.producer.person.locale.pl.PolishIdentityCardNumber.LETTER_WEIGHT
import static eu.codearte.jfairy.producer.person.locale.pl.PolishIdentityCardNumber.MAX_DIGITS_PART_VALUE

/**
* @author mariuszs
Expand Down
35 changes: 19 additions & 16 deletions src/test/groovy/snippets/SampleSnippet.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,27 @@ def fairy = Fairy.create(Locale.forLanguageTag("en"))
println fairy.textProducer().word(3)
println fairy.textProducer().sentence(5)

println fairy.person().firstName();
println fairy.person().firstName();
println fairy.person().firstName()
println fairy.person().firstName()

def person = fairy.person()
println " First name: " + person.firstName();
println " Middle name: " + person.middleName();
println " Last name: " + person.lastName();
println " Username: " + person.username();
println " Password: " + person.password();
println " isMale: " + person.isMale();
println " isFemale: " + person.isFemale();
println " Phone: " + person.telephoneNumber();
println "Date of birth: " + person.dateOfBirth();
println " Age: " + person.age();
println " Pesel: " + person.nationalIdentificationNumber();
println " ID: " + person.nationalIdentityCardNumber();
println " Postal Code: " + person.address.postalCode;
println " City: " + person.address.city;
println " First name: " + person.firstName()
println " Middle name: " + person.middleName()
println " Last name: " + person.lastName()
println " Username: " + person.username()
println " Password: " + person.password()
println " isMale: " + person.isMale()
println " isFemale: " + person.isFemale()
println " Phone: " + person.telephoneNumber()
println "Date of birth: " + person.dateOfBirth()
println " Age: " + person.age()
println " Pesel: " + person.nationalIdentificationNumber()
println " ID: " + person.nationalIdentityCardNumber()
println " Postal Code: " + person.address.postalCode
println " City: " + person.address.city
println " Street: " + person.address.street()
println "Street number:" + person.address.streetNumber()
println " Full address: " + person.address.toString()

println ""

Expand Down

0 comments on commit bb5cdc3

Please sign in to comment.