UsersFactory.java
package es.um.atica.faker.users.domain.factory;
import java.util.List;
import java.util.stream.Collectors;
import es.um.atica.faker.users.domain.model.User;
import es.um.atica.faker.users.domain.model.UserAge;
import es.um.atica.faker.users.domain.model.UserId;
import es.um.atica.faker.users.domain.model.UserName;
import es.um.atica.faker.users.domain.model.UserOriginCountry;
import es.um.atica.faker.users.domain.model.UserPreference;
import es.um.atica.faker.users.domain.policy.UserPolicyData;
import es.um.atica.faker.users.domain.policy.UserPolicyList;
public class UsersFactory {
public static User createUser(UserId id, UserName name, UserAge age, UserOriginCountry country, List<UserPreference> prefs) {
return User.of(id, name, age, country, prefs);
}
public static User createUserWithDefaultPreferences(UserId id, UserName name, UserAge age, UserOriginCountry country) {
// Apply Policy Criteria
UserPolicyData policyData = UserPolicyData.of(age.getValue());
List<UserPreference> prefs = UserPolicyList
.applicablePolicies(policyData)
.stream()
.map(p->p.applyDefaultPreferences(policyData))
.flatMap(List::stream)
.collect(Collectors.toList());
return User.of(id, name, age, country, prefs);
}
}