From 76903570a88a659972740af4ea8643f8c671a9e1 Mon Sep 17 00:00:00 2001 From: s22thong <sylvain.thong@gmail.com> Date: Tue, 25 Feb 2025 15:11:09 +0100 Subject: [PATCH] fix(DX): setters with empty checks for attributes in User class --- .../myfirstapplication/User.java | 95 +++++++++++++++++-- 1 file changed, 88 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/fr/imt_atlantique/myfirstapplication/User.java b/app/src/main/java/fr/imt_atlantique/myfirstapplication/User.java index 56620dc..863d360 100644 --- a/app/src/main/java/fr/imt_atlantique/myfirstapplication/User.java +++ b/app/src/main/java/fr/imt_atlantique/myfirstapplication/User.java @@ -4,10 +4,14 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; +import androidx.annotation.NonNull; + import java.text.DateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; public class User implements Parcelable { private String firstName; @@ -17,15 +21,21 @@ public class User implements Parcelable { private LocalDate birthDate; private String[] phoneNumbers; - public User(String firstName, String lastName, String birthCity, String birthDept, LocalDate birthDate, String[] phoneNumbers) { - this.firstName = firstName; - this.lastName = lastName; - this.birthCity = birthCity; - this.birthDept = birthDept; - this.birthDate = birthDate; - this.phoneNumbers = phoneNumbers; + public User(String firstName, String lastName, String birthCity, String birthDept, LocalDate birthDate, String[] phoneNumbers) throws Exception { + try { + setFirstName(firstName); + setLastName(lastName); + setBirthCity(birthCity); + setBirthDept(birthDept); + setBirthDate(birthDate); + setPhoneNumbers(phoneNumbers); + } catch (Exception e) { + throw new IllegalArgumentException(e.getMessage()); + } } + + protected User(Parcel in) { firstName = in.readString(); lastName = in.readString(); @@ -86,4 +96,75 @@ public class User implements Parcelable { public String[] getPhoneNumbers() { return phoneNumbers; } + + public void setFirstName(String firstName) { + if (firstName.isEmpty()) { + throw new IllegalArgumentException("The first name can not be empty."); + } + this.firstName = capitalizeFirstLetter(firstName); + } + + public void setLastName(String lastName) { + if (lastName.isEmpty()) { + throw new IllegalArgumentException("The last name can not be empty."); + } + this.lastName = capitalizeFirstLetter(lastName); + } + + public void setBirthCity(String birthCity) { + if (birthCity.isEmpty()) { + throw new IllegalArgumentException("The birth city can not be unspecified."); + } + this.birthCity = capitalizeFirstLetter(birthCity); + } + + public void setBirthDept(String birthDept) { + if (birthDept.isEmpty()) { + throw new IllegalArgumentException("The birth department can not be unspecified."); + } + this.birthDept = capitalizeFirstLetter(birthDept); + } + + public void setBirthDate(LocalDate birthDate) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (birthDate != null && birthDate.isAfter(LocalDate.now())) { + throw new IllegalArgumentException("The birth date cannot be in the future."); + } + } + this.birthDate = birthDate; + } + + public void setPhoneNumbers(String[] phoneNumbers) { + this.phoneNumbers = phoneNumbers; + } + + @NonNull + @Override + public String toString() { + return "User{" + + "firstName='" + + firstName + + '\'' + + ", lastName='" + + lastName + + '\'' + + ", birthCity='" + + birthCity + + '\'' + + ", birthDept='" + + birthDept + + '\'' + + ", birthDate=" + + birthDate + + ", phoneNumbers=" + + Arrays.toString(phoneNumbers) + + '}'; + } + + private String capitalizeFirstLetter(String input) { + if (input == null || input.isEmpty()) { + return input; + } + return input.substring(0, 1).toUpperCase() + input.substring(1); + } } -- GitLab