/** * * Copyright * 2009-2015 Jayway Products AB * 2016-2017 Föreningen Sambruk * * Licensed under AGPL, Version 3.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/agpl.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package se.streamsource.streamflow.api.workspace.cases.contact; import org.qi4j.api.value.ValueBuilder; import org.qi4j.api.value.ValueBuilderFactory; import java.util.List; /** * Builder for ContactDTO. Can be used during creation or updating of existing contact */ public class ContactBuilder { private ValueBuilder<ContactDTO> contactBuilder; private ValueBuilderFactory vbf; public ContactBuilder(ContactDTO contact, ValueBuilderFactory vbf) { this.vbf = vbf; contactBuilder =contact.buildWith(); } public ContactBuilder(ValueBuilderFactory vbf) { this.vbf = vbf; contactBuilder = vbf.newValueBuilder(ContactDTO.class); } public ContactBuilder name(String name) { contactBuilder.prototype().name().set(name); return this; } public ContactBuilder company(String company) { contactBuilder.prototype().company().set(company); return this; } public ContactBuilder note(String note) { contactBuilder.prototype().note().set(note); return this; } public ContactBuilder contactPreference( ContactPreference contactPreference ) { contactBuilder.prototype().contactPreference().set( contactPreference ); return this; } public ContactBuilder phoneNumber(String phoneNumber) { List<ContactPhoneDTO> phoneNumbers = contactBuilder.prototype().phoneNumbers().get(); phoneNumbers.clear(); ValueBuilder<ContactPhoneDTO> phoneBuilder = vbf.newValueBuilder(ContactPhoneDTO.class); phoneBuilder.prototype().phoneNumber().set(phoneNumber); phoneNumbers.add(phoneBuilder.newInstance()); return this; } public ContactBuilder address(String address) { List<ContactAddressDTO> addresses = contactBuilder.prototype().addresses().get(); if (addresses.isEmpty()) { ValueBuilder<ContactAddressDTO> addressBuilder = vbf.newValueBuilder(ContactAddressDTO.class); addresses.add(addressBuilder.prototype()); } addresses.get(0).address().set(address); return this; } public ContactBuilder email(String email) { List<ContactEmailDTO> addresses = contactBuilder.prototype().emailAddresses().get(); addresses.clear(); ValueBuilder<ContactEmailDTO> addressBuilder = vbf.newValueBuilder(ContactEmailDTO.class); addressBuilder.prototype().emailAddress().set(email); addresses.add(addressBuilder.newInstance()); return this; } public ContactDTO newInstance() { return contactBuilder.newInstance(); } public ContactBuilder contactId(String id) { contactBuilder.prototype().contactId().set(id); return this; } public ContactBuilder isCompany(boolean isCompany) { contactBuilder.prototype().isCompany().set(isCompany); return this; } public ContactBuilder zipCode(String zip) { List<ContactAddressDTO> addresses = contactBuilder.prototype().addresses().get(); if (addresses.isEmpty()) { ValueBuilder<ContactAddressDTO> addressBuilder = vbf.newValueBuilder(ContactAddressDTO.class); addresses.add(addressBuilder.prototype()); } addresses.get(0).zipCode().set(zip); return this; } public ContactBuilder city(String city) { List<ContactAddressDTO> addresses = contactBuilder.prototype().addresses().get(); if (addresses.isEmpty()) { ValueBuilder<ContactAddressDTO> addressBuilder = vbf.newValueBuilder(ContactAddressDTO.class); addresses.add(addressBuilder.prototype()); } addresses.get(0).city().set(city); return this; } public ContactBuilder region(String region) { List<ContactAddressDTO> addresses = contactBuilder.prototype().addresses().get(); if (addresses.isEmpty()) { ValueBuilder<ContactAddressDTO> addressBuilder = vbf.newValueBuilder(ContactAddressDTO.class); addresses.add(addressBuilder.prototype()); } addresses.get(0).region().set(region); return this; } public ContactBuilder country(String country) { List<ContactAddressDTO> addresses = contactBuilder.prototype().addresses().get(); if (addresses.isEmpty()) { ValueBuilder<ContactAddressDTO> addressBuilder = vbf.newValueBuilder(ContactAddressDTO.class); addresses.add(addressBuilder.prototype()); } addresses.get(0).country().set(country); return this; } }