diff --git a/Practice_03/Electronic.java b/Practice_03/Electronic.java new file mode 100644 index 0000000..c31d852 --- /dev/null +++ b/Practice_03/Electronic.java @@ -0,0 +1,88 @@ +package Practice_03; + +import java.util.*; +import java.time.*; +import java.time.format.DateTimeFormatter; + +public class Electronic { + + public enum Company { SAMSUNG, LG, APPLE } + public enum AuthMethod { FINGERPRINT, PIN, PATTERN, FACE } + + private static int registrationNo; + private String productNo; + private String modelName; + private Company company; + private LocalDate dateOfMade; + private AuthMethod[] authMethods; + + public Electronic(String modelName, Company company, AuthMethod[] authMethods) { + this.modelName = modelName; + this.company = company; + this.authMethods = authMethods; + this.productNo = generateProductNo(); + } + + private String generateProductNo() { + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")); + registrationNo++; + registrationNo %= 100000; + String registrationNoStr = String.format("%04d", registrationNo); + return date + registrationNoStr; + } + + public boolean containsAuthMethod(AuthMethod authMethod) { + return Arrays.asList(authMethods).contains(authMethod); + } + + public String getProductNo() { + return productNo; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Company getCompany() { + return company; + } + + public void setCompany(Company company) { + this.company = company; + } + + public LocalDate getDateOfMade() { + return dateOfMade; + } + + public AuthMethod[] getAuthMethods() { + return authMethods; + } + + public void setAuthMethods(AuthMethod[] authMethods) { + this.authMethods = authMethods; + } + + @Override + public int hashCode() { + return Objects.hash(productNo, modelName, company, authMethods); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Electronic that = (Electronic) obj; + return Objects.equals(this.productNo, that.productNo); + } + + @Override + public String toString() { + return String.format("Electronic { productNo=%s, modelName=%s, company=%s, authMethods=%s }", + productNo, modelName, company, Arrays.toString(authMethods)); + } +} diff --git a/Practice_03/Electronics.java b/Practice_03/Electronics.java new file mode 100644 index 0000000..23c28f7 --- /dev/null +++ b/Practice_03/Electronics.java @@ -0,0 +1,71 @@ +package Practice_03; + +import java.util.*; +import Practice_03.Electronic.*; + +public class Electronics { + private static Electronics instance; + private static Electronic[] electronicList; + + private Electronics() { + } + + public static Electronics getInstance() { + if (instance == null) { + instance = new Electronics(); + } + return instance; + } + + public Electronic findByProductNo(String productNo) { + for (Electronic electronic : electronicList) { + if (electronic.getProductNo().equals(productNo)) { + return electronic; + } + } + return null; + } + + public Electronic[] groupByCompanyName(Company company) { + List electronics = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (electronic.getCompany() == company) { + electronics.add(electronic); + } + } + return electronics.toArray(new Electronic[electronics.size()]); + } + + public Electronic[] groupByAuthMethod(AuthMethod authMethod) { + List groupAuthList = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (Arrays.equals(electronic.getAuthMethods(), new AuthMethod[] {authMethod})) { + groupAuthList.add(electronic); + } + } + return groupAuthList.toArray(new Electronic[groupAuthList.size()]); + } + + public static Electronic[] getElectronicList() { + return electronicList; + } + + public static void setElectronicList(Electronic[] electronicList) { + Electronics.electronicList = electronicList; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + + @Override + public String toString() { + return "Electronics{}"; + } +} diff --git a/Practice_03/User.java b/Practice_03/User.java new file mode 100644 index 0000000..3333bd0 --- /dev/null +++ b/Practice_03/User.java @@ -0,0 +1,118 @@ +package Practice_03; + +import java.time.*; +import java.util.*; + +public class User { + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private String userBirthDate; + private Electronic[] electronicDevices; + private LocalDateTime registerTime; + + public User() { + this.electronicDevices = new Electronic[10]; + this.registerTime = LocalDateTime.now(); + } + + public User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate) { + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevices = new Electronic[10]; + this.registerTime = LocalDateTime.now(); + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserPassword() { + return userPassword; + } + + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + + public String getUserPhoneNumber() { + return userPhoneNumber; + } + + public void setUserPhoneNumber(String userPhoneNumber) { + this.userPhoneNumber = userPhoneNumber; + } + + public String getUserEmail() { + return userEmail; + } + + public void setUserEmail(String userEmail) { + this.userEmail = userEmail; + } + + public String getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(String userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public Electronic[] getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(Electronic[] electronicDevices) { + this.electronicDevices = electronicDevices; + } + + public LocalDateTime getRegisterTime() { + return registerTime; + } + + public void setRegisterTime(LocalDateTime registerTime) { + this.registerTime = registerTime; + } + + @Override + public boolean equals(Object object) { + if (this == object) return true; + if (object == null || this.getClass() != object.getClass()) return false; + + User user = (User) object; + + if (!Objects.equals(userId, user.userId)) return false; + if (!Objects.equals(userPassword, user.userPassword)) return false; + if (!Objects.equals(userPhoneNumber, user.userPhoneNumber)) return false; + if (!Objects.equals(userEmail, user.userEmail)) return false; + if (!Objects.equals(userBirthDate, user.userBirthDate)) return false; + return Objects.equals(registerTime, user.registerTime); + } + + @Override + public int hashCode() { + return Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, registerTime); + } + + @Override + public String toString() { + return "User{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber='" + userPhoneNumber + '\'' + + ", userEmail='" + userEmail + '\'' + + ", userBirthDate='" + userBirthDate + '\'' + + ", electronicDevices=" + Arrays.toString(electronicDevices) + + ", registerTime=" + registerTime + + '}'; + } +} diff --git a/Practice_03/Users.java b/Practice_03/Users.java new file mode 100644 index 0000000..1a1a344 --- /dev/null +++ b/Practice_03/Users.java @@ -0,0 +1,69 @@ +package Practice_03; + +import java.util.*; + +public class Users { + private static Users instance; + private User[] userList; + + private Users() { + } + + public static Users getInstance() { + if (instance == null) { + instance = new Users(); + } + return instance; + } + + public User[] getUserList() { + return userList; + } + + public void setUserList(User[] userList) { + this.userList = userList; + } + + public User findByUserId(String userId) { + if (userList == null) { + return null; + } + for (User userInfo : userList) { + if (userInfo.getUserId().equals(userId)) { + return userInfo; + } + } + return null; + } + + public User copy(User user) { + User copiedUser = new User(); + copiedUser.setUserId(user.getUserId()); + copiedUser.setUserEmail(user.getUserEmail()); + copiedUser.setUserPassword(user.getUserPassword()); + copiedUser.setUserBirthDate(user.getUserBirthDate()); + copiedUser.setUserPhoneNumber(user.getUserPhoneNumber()); + copiedUser.setElectronicDevices(Arrays.copyOf(user.getElectronicDevices(), user.getElectronicDevices().length)); + return copiedUser; + } + + @Override + public boolean equals(Object object) { + if (this == object) return true; + if (object == null || getClass() != object.getClass()) return false; + Users users = (Users) object; + return Arrays.equals(userList, users.userList); + } + + @Override + public int hashCode() { + return Arrays.hashCode(userList); + } + + @Override + public String toString() { + return "Users{" + + "userList=" + Arrays.toString(userList) + + '}'; + } +}