From 80e52e1fe5c0d65c545c5babde951b8f509882a2 Mon Sep 17 00:00:00 2001 From: jy-b Date: Mon, 17 Apr 2023 21:49:32 +0900 Subject: [PATCH 1/4] Assignment of Day05 JongYoonBae --- README.md | 20 +-- src/me/day05/practice/AuthMethod.java | 25 ++++ src/me/day05/practice/Company.java | 22 ++++ src/me/day05/practice/Electronic.java | 143 ++++++++++++++++++++ src/me/day05/practice/Electronics.java | 117 ++++++++++++++++ src/me/day05/practice/Practice01.java | 13 ++ src/me/day05/practice/Practice02.java | 10 ++ src/me/day05/practice/Practice03.java | 11 ++ src/me/day05/practice/Test.java | 84 ++++++++++++ src/me/day05/practice/User.java | 176 +++++++++++++++++++++++++ src/me/day05/practice/Users.java | 74 +++++++++++ 11 files changed, 678 insertions(+), 17 deletions(-) create mode 100644 src/me/day05/practice/AuthMethod.java create mode 100644 src/me/day05/practice/Company.java create mode 100644 src/me/day05/practice/Electronic.java create mode 100644 src/me/day05/practice/Electronics.java create mode 100644 src/me/day05/practice/Practice01.java create mode 100644 src/me/day05/practice/Practice02.java create mode 100644 src/me/day05/practice/Practice03.java create mode 100644 src/me/day05/practice/Test.java create mode 100644 src/me/day05/practice/User.java create mode 100644 src/me/day05/practice/Users.java diff --git a/README.md b/README.md index 0dff600..8a6114b 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,12 @@
### 자바 과제3

-> 제출자 - 최은빈 +> 제출자 - 배종윤 > 출시일 - 23.04.11. > 제출일 - 23.04.17. - [Day5](https://echoiing-fastcampus.notion.site/3-49385516d4e7430da0bfb85012f22cd9) 문제를 풀어서 제출하시오. -- 파일 이름 작성법 - - ````me.day05.practice```` 패키지 생성 - - ````Practice01, Practice02, Practice03, ...```` 클래스 생성하여 작성 -- 제출방법 - - 본인의 이름으로 ````branch````를 생성하여 ````push````후 ````pull request```` 작성 - - 예시 - - branch 이름 - ````FirstNameLastName```` - - commit 메시지 - ````Java Assignment3 upload by FirstNameLastName```` - - pull request는 본인이 하고 싶은 말이나 질문을 적어주세요. - - ````코드리뷰 빡세게 부탁드립니다.```` ````클린한 코드인지 봐주세요.```` ````이 코드의 조금 더 나은 방법이 있을까요.```` - - ````~~번 문제 풀지 못했습니다.```` ````~~번 문제 풀이 방법을 알려주시면 감사하겠습니다.```` - - ````결과는 나왔는데 맞는지 모르겠습니다.```` -- 주의사항 - - 본인 ```branch``` -> ```main branch``` PR한 상태로 제출부탁드립니다. - - ```main branch```에 본인 ```branch```의 ```commit```을 ```merge``` 하지 마시기 바랍니다. - +- branch name : JongYoonBae +- Test File : Test.java
diff --git a/src/me/day05/practice/AuthMethod.java b/src/me/day05/practice/AuthMethod.java new file mode 100644 index 0000000..ea70640 --- /dev/null +++ b/src/me/day05/practice/AuthMethod.java @@ -0,0 +1,25 @@ +package me.day05.practice; + +enum AuthMethod { + FINGER_PRINT("Finger Print"), + PATTERN("Pattern"), + PIN("PIN"), + FACE("Face"), + FOOT("Foot"); + + private final String authType; + + AuthMethod(String authType) { + this.authType = authType; + } + + public String getAuthType() { + return authType; + } + + //useless in this time + /*public static boolean isValidAuthType(List authMethod){ + return Arrays.stream(AuthMethod.values()) + .anyMatch(authType -> authMethod.contains(authType)); + }*/ +} diff --git a/src/me/day05/practice/Company.java b/src/me/day05/practice/Company.java new file mode 100644 index 0000000..63196eb --- /dev/null +++ b/src/me/day05/practice/Company.java @@ -0,0 +1,22 @@ +package me.day05.practice; + +enum Company { + LG("LG"), + SAMSUNG("SAMSUNG"), + APPLE("APPLE"), + GOOGLE("GOOGLE"); + private final String companyName; + Company(String companyName) { + this.companyName = companyName; + } + + public String getCompanyName() { + return companyName; + } + + //useless in this time + /*public static boolean isValidCompany(Company company){ + return Arrays.asList(Company.values()).stream() + .anyMatch(companyName -> companyName == company); + }*/ +} diff --git a/src/me/day05/practice/Electronic.java b/src/me/day05/practice/Electronic.java new file mode 100644 index 0000000..9a874e7 --- /dev/null +++ b/src/me/day05/practice/Electronic.java @@ -0,0 +1,143 @@ +package me.day05.practice; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Objects; + +public class Electronic { + private String productNo; + private static int productId; + private String modelName; + private String companyName; + private LocalDate dateOfMade; + private List authMethod; + + Electronic(Builder builder){ + //System.out.println(builder.toString()); + modelName = builder.modelName; + companyName = builder.companyName; + dateOfMade = builder.dateOfMade; + productNo = this.dateOfMade.format(DateTimeFormatter.ofPattern("yyMMdd"))+String.format("%04d",productId+1); + authMethod = builder.authMethod; + productId++; + } + + /* + assignment 1 + getter(), setter(), hashcode(), equals(), toString() + */ + //add conditions in getter & setter if necessary + + public String getProductNo() { + return productNo; + } + + public void setProductNo(String productNo) { + this.productNo = productNo; + } + + public static int getProductId() { + return productId; + } + + public static void setProductId(int productId) { + Electronic.productId = productId; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public LocalDate getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(LocalDate dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public List getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(List authMethod) { + this.authMethod = authMethod; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Electronic that)) return false; + return productNo.equals(that.productNo) && modelName.equals(that.modelName) && companyName.equals(that.companyName) && dateOfMade.equals(that.dateOfMade) && authMethod.equals(that.authMethod); + } + + @Override + public int hashCode() { + return Objects.hash(productNo, modelName, companyName, dateOfMade, authMethod); + } + + @Override + public String toString() { + return "Electronic{" + + "productNo='" + productNo + '\'' + + ", modelName='" + modelName + '\'' + + ", companyName='" + companyName + '\'' + + ", dateOfMade=" + dateOfMade + + ", authMethod=" + authMethod + + '}'+"\n"; + } + + public static class Builder{ + private String modelName; + private String companyName; + private LocalDate dateOfMade; + private List authMethod; + + public Builder modelName (String modelName) { + this.modelName = modelName; + return this; + } + + public Builder companyName (String companyName){ + this.companyName = companyName; + return this; + } + + public Builder dateOfMade (LocalDate dateOfMade){ + this.dateOfMade = dateOfMade; + return this; + } + + public Builder authMethod (List authMethod){ + this.authMethod = authMethod; + return this; + } + + public Electronic build() { + return new Electronic(this); + } + + @Override + public String toString() { + return "Builder{" + + "modelName='" + modelName + '\'' + + ", companyName='" + companyName + '\'' + + ", dateOfMade=" + dateOfMade + + ", authMethod=" + authMethod + + '}'; + } + } +} diff --git a/src/me/day05/practice/Electronics.java b/src/me/day05/practice/Electronics.java new file mode 100644 index 0000000..be5e6ea --- /dev/null +++ b/src/me/day05/practice/Electronics.java @@ -0,0 +1,117 @@ +package me.day05.practice; + +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +public class Electronics { + private List electronicList = new ArrayList<>(); + + static Electronics instance; + //set constructor as private for SingleTon + private Electronics(){ + + } + + //TODO: add validation check of modelName, dateOfMade + public boolean addElectronic(String modelName, Company company, LocalDate dateOfMade, List authMethod){ + //duplication check + Optional electronicOpt = electronicList + .stream().filter(electronic -> modelName.equals(electronic.getModelName())) + .findFirst(); + + if (electronicOpt.isPresent()) { + System.out.printf("%s Already Exists\n",modelName); + return false; + } + + electronicList.add(new Electronic.Builder() + .modelName(modelName) + .companyName(company.getCompanyName()) + .dateOfMade(dateOfMade) + .authMethod(authMethod) + .build()); + + return true; + } + + public void initElectronics(){ + String[] modelNames = {"Ipad pro 11","Galaxy Tab S8+","V50s","Ipad pro 11","Galaxy S23"}; + Company[] companies = {Company.APPLE, Company.SAMSUNG, Company.LG, Company.APPLE, Company.SAMSUNG}; + LocalDate[] dateOfMade = {LocalDate.parse("2021-04-21"),LocalDate.parse("2022-02-10"), LocalDate.parse("2019-10-10"), LocalDate.parse("2021-04-21"), LocalDate.parse("2023-02-02")}; + List [] authMethods = new List[]{Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT),Arrays.asList(AuthMethod.FINGER_PRINT,AuthMethod.PIN,AuthMethod.PATTERN),Arrays.asList(AuthMethod.PATTERN,AuthMethod.FINGER_PRINT,AuthMethod.PIN), Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT),Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT, AuthMethod.PATTERN)}; + for(int i = 0 ; i < modelNames.length ; i++){ + addElectronic(modelNames[i], companies[i], dateOfMade[i], authMethods[i]); + } + //System.out.println(electronicList.toString()); + } + + public static Electronics getInstance(){ + if(instance == null){ + instance = new Electronics(); + } + return instance; + } + + public Electronic findByProductNo(String productNo){ + Optional electronicOpt = electronicList + .stream().filter(user -> productNo.equals(user.getProductNo())) + .findFirst(); + if (electronicOpt.isPresent()) { + return electronicOpt.get(); + } + System.out.printf("Product 'productNo : %s' Not Found\n",productNo); + return null; + } + + public List groupByCompanyName(Company company) { + List electronics = electronicList + .stream().filter(electronic -> electronic.getCompanyName().equals(company.name())) + .collect(Collectors.toList()); + + if (electronics.isEmpty()) { + System.out.printf("Product Made by '%s' Not Found\n",company.name()); + return null; + } + return electronics; + } + + public List groupByAuthMethod(AuthMethod authMethod) { + List electronics = electronicList + .stream().filter(electronic -> electronic.getAuthMethod().contains(authMethod)) + .collect(Collectors.toList()); + + if (electronics.isEmpty()) { + System.out.printf("Product Provide %s Authentication Not Found\n",authMethod); + return null; + } + return electronics; + } + + @Override + public String toString() { + return "Electronics{" + + "electronicList=" + electronicList + + '}'; + } + + public List getElectronicList() { + return electronicList; + } + + public void setElectronicList(List electronicList) { + this.electronicList = electronicList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Electronics that)) return false; + return Objects.equals(electronicList, that.electronicList); + } + + @Override + public int hashCode() { + return Objects.hash(electronicList); + } +} diff --git a/src/me/day05/practice/Practice01.java b/src/me/day05/practice/Practice01.java new file mode 100644 index 0000000..c9fffc9 --- /dev/null +++ b/src/me/day05/practice/Practice01.java @@ -0,0 +1,13 @@ +package me.day05.practice; + +public class Practice01 { + /* + assignment 1 + File 참조 + Class : User + Electronic + Enum : AuthMethod + Company + */ +} + diff --git a/src/me/day05/practice/Practice02.java b/src/me/day05/practice/Practice02.java new file mode 100644 index 0000000..d6bd417 --- /dev/null +++ b/src/me/day05/practice/Practice02.java @@ -0,0 +1,10 @@ +package me.day05.practice; + +public class Practice02 { + /* + assignment 2 + 2-1 : Users Class -> getInstance() + 2-2 : Users Class -> findByUserId(String userId) + 2-3 : User Class -> copy(User user) + */ +} diff --git a/src/me/day05/practice/Practice03.java b/src/me/day05/practice/Practice03.java new file mode 100644 index 0000000..afeef5a --- /dev/null +++ b/src/me/day05/practice/Practice03.java @@ -0,0 +1,11 @@ +package me.day05.practice; + +public class Practice03 { + /* + assignment 3 + 3-1 : Electronics Class -> getInstance() + 3-2 : Electronics Class -> findByProductNo(String productNo) + 3-3 : Electronics Class -> groupByCompanyName(Company company) + 3-4 : Electronics Class -> groupByAuthMethod(AuthMethod authMethod) + */ +} diff --git a/src/me/day05/practice/Test.java b/src/me/day05/practice/Test.java new file mode 100644 index 0000000..f7a45b8 --- /dev/null +++ b/src/me/day05/practice/Test.java @@ -0,0 +1,84 @@ +package me.day05.practice; + +import java.time.LocalDate; + +public class Test { + public static void main(String[] args) { + Electronics electronics = Electronics.getInstance(); + Users users = Users.getInstance(); + + System.out.println("======================"); + System.out.println("Duplication Test"); + + + //initialize Electronics for test + electronics.initElectronics(); + //initialize Users for test + users.initUsers(); + + Electronic electronic; + + + System.out.println("\n\n\n======================"); + User originalUser = new User.Builder().userId("copyTester1") + .userPassword("copyTester1PW") + .userPhoneNumber("010-9999-9999") + .userEmail("copyTester1@gmail.com") + .userBirthDate(LocalDate.parse("1999-12-31")) + .build(); + //shallow copy object + User copyUser = originalUser; + System.out.println("Shallow copy"); + System.out.println("Original User : " + originalUser + ""); + System.out.println("Copy User : " + copyUser + "\n"); + + System.out.println("Modify Element's value : copyUserId only"); + copyUser.setUserId("copyTester2(modified)"); + System.out.println("Original User : " + originalUser + ""); + System.out.println("Copy User : " + copyUser + "\n"); + + //undo userId value + copyUser.setUserId("copyTester1"); + //deep copy Object + copyUser = User.copy(originalUser); + + System.out.println("Deep copy"); + System.out.println("Original User : " + originalUser + ""); + System.out.println("Copy User : " + copyUser + "\n"); + System.out.println("Modify Element's value : copyUserId only"); + copyUser.setUserId("copyTester2(modified)"); + System.out.println("Original User : " + originalUser + ""); + System.out.println("Copy User : " + copyUser + "\n"); + + + //find by product number + System.out.println("\n\n\n======================"); + System.out.println("Find by Product No\n"); + electronic = electronics.findByProductNo("2101210001"); + printObject(electronic); + System.out.println("Find Product No : 2104210001"); + electronic = electronics.findByProductNo("2104210001"); + printObject(electronic); + + + //find by Company + System.out.println("\nFind by Company\n"); + printObject(electronics.groupByCompanyName(Company.GOOGLE)); + System.out.println("Find Product Made by : SAMSUNG"); + printObject(electronics.groupByCompanyName(Company.SAMSUNG)); + + //find by AuthMethod + System.out.println("\nFind by AuthMethod\n"); + printObject(electronics.groupByAuthMethod(AuthMethod.FOOT)); + System.out.println("Find Product by Provide AuthMethod : Pattern"); + printObject(electronics.groupByAuthMethod(AuthMethod.PATTERN)); + + } + + public static void printObject(Object o){ + //print object values if Object != null + if(o!=null){ + System.out.println(o.toString()); + } + } +} diff --git a/src/me/day05/practice/User.java b/src/me/day05/practice/User.java new file mode 100644 index 0000000..5856867 --- /dev/null +++ b/src/me/day05/practice/User.java @@ -0,0 +1,176 @@ +package me.day05.practice; + +import java.time.LocalDate; +import java.util.Objects; + +public class User { + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private LocalDate userBirthDate; + private Electronics electronicDevices; + private Long registerTime; + + public User(Builder builder) { + userId = builder.userId; + userPassword = builder.userPassword; + userPhoneNumber = builder.userPhoneNumber; + userEmail = builder.userEmail; + userBirthDate = builder.userBirthDate; + electronicDevices = builder.electronicDevices; + registerTime = System.currentTimeMillis(); + } + /* + assignment 2-3 + Deep coy method + */ + public User(User user) { + this.userId = user.userId; + this.userPassword = user.userPassword; + this.userPhoneNumber = user.userPhoneNumber; + this.userEmail = user.userEmail; + this.userBirthDate = user.userBirthDate; + this.electronicDevices = user.electronicDevices; + this.registerTime = user.registerTime; + } + public static User copy(User user){ + return new User(user); + } + + /* + assignment 1 + getter(), setter(), hashcode(), equals(), toString() + */ + //add conditions in getter & setter if necessary + public String getUserId() { + return userId; + } + //Setter for Testing Shallow & DeepCopy + 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 LocalDate getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(LocalDate userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public Electronics getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(Electronics electronicDevices) { + this.electronicDevices = electronicDevices; + } + + public Long getRegisterTime() { + return registerTime; + } + + public void setRegisterTime(Long registerTime) { + this.registerTime = registerTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof User user)) return false; + return userId == user.userId && userPassword.equals(user.userPassword) && Objects.equals(userPhoneNumber, user.userPhoneNumber) && Objects.equals(userBirthDate, user.userBirthDate) && Objects.equals(electronicDevices, user.electronicDevices) && registerTime.equals(user.registerTime); + } + + @Override + public int hashCode() { + return Objects.hash(userId, userPassword, userPhoneNumber, userBirthDate, electronicDevices, registerTime); + } + + @Override + public String toString() { + return "User{" + + "userId=" + userId + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber='" + userPhoneNumber + '\'' + + ", userBirthDate=" + userBirthDate + + ", electronics=" + electronicDevices + + ", registerTime=" + registerTime + + '}' + "\n"; + } + + public static class Builder{ + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private LocalDate userBirthDate; + private Electronics electronicDevices; + + public Builder userId (String userId) { + this.userId = userId; + return this; + } + + public Builder userPassword (String userPassword){ + this.userPassword = userPassword; + return this; + } + + public Builder userPhoneNumber (String userPhoneNumber){ + this.userPhoneNumber = userPhoneNumber; + return this; + } + public Builder userEmail (String userEmail){ + this.userEmail = userEmail; + return this; + } + + public Builder userBirthDate (LocalDate userBirthDate){ + this.userBirthDate = userBirthDate; + return this; + } + /*public Builder registerTime (Long registerTime){ + this.registerTime = registerTime; + return this; + }*/ + + public User build() { + return new User(this); + } + + @Override + public String toString() { + return "Builder{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userBirthDate=" + userBirthDate + + ", electronicDevices=" + electronicDevices + + '}'; + } + } +} diff --git a/src/me/day05/practice/Users.java b/src/me/day05/practice/Users.java new file mode 100644 index 0000000..0b744be --- /dev/null +++ b/src/me/day05/practice/Users.java @@ -0,0 +1,74 @@ +package me.day05.practice; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class Users { + private List userList = new ArrayList<>(); + static Users instance; + + //set constructor as private for SingleTon + private Users(){ + + } + /* + assignment 2-1 + getInstance method + */ + public static Users getInstance(){ + if(instance == null){ + instance = new Users(); + } + return instance; + } + + + /* + assignment 2-2 + find user by user's id + */ + public User findByUserId(String userId){ + Optional userOpt = userList + .stream().filter(user -> userId.equals(user.getUserId())) + .findFirst(); + if (userOpt.isPresent()) { + return userOpt.get(); + } + System.out.printf("'%s' Not Found\n",userId); + return null; + } + + //Todo : add validation check of userId, userPassword, userPhoneNumber, userEmail, userBirthDate + public boolean addUser(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate){ + //duplication check + if(findByUserId(userId) != null){ + System.out.printf("'%s' Already Exists\n",userId); + return false; + } + + userList.add(new User.Builder() + .userId(userId) + .userPassword(userPassword) + .userPhoneNumber(userPhoneNumber) + .userEmail(userEmail) + .userBirthDate(userBirthDate) + .build()); + + return true; + } + + public void initUsers(){ + String[] userId = {"tester01","tester02","tester03","tester01"}; + String[] userPassword = {"tester01PW","tester02PW","tester03PW","tester01PW"}; + String[] userPhoneNumber = {"010-0000-0001", "010-0000-0002", "010-0000-0003", "010-0000-0001",}; + String[] userEmail = {"tester01@gmail.com", "tester02@gmail.com", "tester03@gmail.com", "tester01@gmail.com"}; + LocalDate[] userBirthDate = {LocalDate.parse("1965-12-14"),LocalDate.parse("1982-07-31"), LocalDate.parse("2019-10-10"), LocalDate.parse("2000-01-01")}; + for(int i = 0 ; i < userId.length ; i++){ + addUser(userId[i], userPassword[i],userPhoneNumber[i], userEmail[i], userBirthDate[i]); + } + //System.out.println(userList.toString()); + } + +} From 8121a44479e5854a2279e6c2c5854185ffd1021d Mon Sep 17 00:00:00 2001 From: jy-b Date: Mon, 17 Apr 2023 22:05:39 +0900 Subject: [PATCH 2/4] Assignment of Day05 by JongYoonBae add missing method --- src/me/day05/practice/Electronics.java | 32 ++++++++++++++++++----- src/me/day05/practice/Users.java | 35 ++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/src/me/day05/practice/Electronics.java b/src/me/day05/practice/Electronics.java index be5e6ea..71a9d2b 100644 --- a/src/me/day05/practice/Electronics.java +++ b/src/me/day05/practice/Electronics.java @@ -53,6 +53,10 @@ public static Electronics getInstance(){ return instance; } + /* + assignment 3-2 + find product by product Number + */ public Electronic findByProductNo(String productNo){ Optional electronicOpt = electronicList .stream().filter(user -> productNo.equals(user.getProductNo())) @@ -64,6 +68,10 @@ public Electronic findByProductNo(String productNo){ return null; } + /* + assignment 3-3 + find product list by company name + */ public List groupByCompanyName(Company company) { List electronics = electronicList .stream().filter(electronic -> electronic.getCompanyName().equals(company.name())) @@ -76,6 +84,10 @@ public List groupByCompanyName(Company company) { return electronics; } + /* + assignment 3-4 + find product list by authentication method + */ public List groupByAuthMethod(AuthMethod authMethod) { List electronics = electronicList .stream().filter(electronic -> electronic.getAuthMethod().contains(authMethod)) @@ -87,14 +99,15 @@ public List groupByAuthMethod(AuthMethod authMethod) { } return electronics; } - - @Override - public String toString() { - return "Electronics{" + - "electronicList=" + electronicList + - '}'; + /* + assignment 3 + getter(), setter(), hashcode(), equals(), toString() + */ + public static void setInstance(Electronics instance) { + Electronics.instance = instance; } + public List getElectronicList() { return electronicList; } @@ -103,6 +116,13 @@ public void setElectronicList(List electronicList) { this.electronicList = electronicList; } + @Override + public String toString() { + return "Electronics{" + + "electronicList=" + electronicList + + '}'; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/me/day05/practice/Users.java b/src/me/day05/practice/Users.java index 0b744be..97cd49d 100644 --- a/src/me/day05/practice/Users.java +++ b/src/me/day05/practice/Users.java @@ -3,6 +3,7 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; public class Users { @@ -71,4 +72,38 @@ public void initUsers(){ //System.out.println(userList.toString()); } + /* + assignment 2 + getter(), setter(), hashcode(), equals(), toString() + */ + public List getUserList() { + return userList; + } + + public void setUserList(List userList) { + this.userList = userList; + } + + public static void setInstance(Users instance) { + Users.instance = instance; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Users users)) return false; + return Objects.equals(userList, users.userList); + } + + @Override + public int hashCode() { + return Objects.hash(userList); + } + + @Override + public String toString() { + return "Users{" + + "userList=" + userList + + '}'; + } } From 1d5c4a6583fca2517669af399f0e0fd30f00d8ee Mon Sep 17 00:00:00 2001 From: jy-b Date: Tue, 18 Apr 2023 03:49:28 +0900 Subject: [PATCH 3/4] Assignment of Day05 by JongYoonBae add Electronic[] electronicArray, User[] userArray add method for arrays add findByUserId test --- src/me/day05/practice/Define.java | 5 ++ src/me/day05/practice/Electronic.java | 8 +- src/me/day05/practice/Electronics.java | 102 +++++++++++++++++++++++-- src/me/day05/practice/Test.java | 59 +++++++++++--- src/me/day05/practice/Users.java | 67 ++++++++++++++-- 5 files changed, 214 insertions(+), 27 deletions(-) create mode 100644 src/me/day05/practice/Define.java diff --git a/src/me/day05/practice/Define.java b/src/me/day05/practice/Define.java new file mode 100644 index 0000000..ccd6e3e --- /dev/null +++ b/src/me/day05/practice/Define.java @@ -0,0 +1,5 @@ +package me.day05.practice; + +public class Define { + public static final int DEFAULT_CAPACITY = 20; +} diff --git a/src/me/day05/practice/Electronic.java b/src/me/day05/practice/Electronic.java index 9a874e7..02ec88c 100644 --- a/src/me/day05/practice/Electronic.java +++ b/src/me/day05/practice/Electronic.java @@ -14,13 +14,17 @@ public class Electronic { private List authMethod; Electronic(Builder builder){ - //System.out.println(builder.toString()); modelName = builder.modelName; companyName = builder.companyName; dateOfMade = builder.dateOfMade; productNo = this.dateOfMade.format(DateTimeFormatter.ofPattern("yyMMdd"))+String.format("%04d",productId+1); authMethod = builder.authMethod; - productId++; + //init productId > 9998 + if (productId > 9998) { + productId = 0; + } else { + productId++; + } } /* diff --git a/src/me/day05/practice/Electronics.java b/src/me/day05/practice/Electronics.java index 71a9d2b..b003b56 100644 --- a/src/me/day05/practice/Electronics.java +++ b/src/me/day05/practice/Electronics.java @@ -5,16 +5,22 @@ import java.util.stream.Collectors; public class Electronics { - private List electronicList = new ArrayList<>(); + private List electronicList; + private Electronic[] electronicArray; + + private int electronicArraySize; static Electronics instance; //set constructor as private for SingleTon private Electronics(){ - + this.electronicArray = new Electronic[Define.DEFAULT_CAPACITY]; + electronicList = new ArrayList<>(); + electronicArraySize = 0; } //TODO: add validation check of modelName, dateOfMade public boolean addElectronic(String modelName, Company company, LocalDate dateOfMade, List authMethod){ + //Use List //duplication check Optional electronicOpt = electronicList .stream().filter(electronic -> modelName.equals(electronic.getModelName())) @@ -34,16 +40,49 @@ public boolean addElectronic(String modelName, Company company, LocalDate dateOf return true; } + public boolean addElectronicToArray(String modelName, Company company, LocalDate dateOfMade, List authMethod){ + //use Array + //duplication check + for(Electronic electronic: electronicArray){ + if(electronic != null && electronic.getModelName().equals(modelName)){ + System.out.printf("%s Already Exists\n",modelName); + return false; + } + } + + if(electronicArraySize == electronicArray.length){ + resize(electronicArraySize + 10); + } + + electronicArray[electronicArraySize] = (new Electronic.Builder() + .modelName(modelName) + .companyName(company.getCompanyName()) + .dateOfMade(dateOfMade) + .authMethod(authMethod) + .build()); + electronicArraySize++; + return true; + } + + private void resize(int newLength){ + electronicArray = Arrays.copyOf(this.electronicArray, newLength); + } public void initElectronics(){ String[] modelNames = {"Ipad pro 11","Galaxy Tab S8+","V50s","Ipad pro 11","Galaxy S23"}; Company[] companies = {Company.APPLE, Company.SAMSUNG, Company.LG, Company.APPLE, Company.SAMSUNG}; LocalDate[] dateOfMade = {LocalDate.parse("2021-04-21"),LocalDate.parse("2022-02-10"), LocalDate.parse("2019-10-10"), LocalDate.parse("2021-04-21"), LocalDate.parse("2023-02-02")}; List [] authMethods = new List[]{Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT),Arrays.asList(AuthMethod.FINGER_PRINT,AuthMethod.PIN,AuthMethod.PATTERN),Arrays.asList(AuthMethod.PATTERN,AuthMethod.FINGER_PRINT,AuthMethod.PIN), Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT),Arrays.asList(AuthMethod.FACE, AuthMethod.PIN,AuthMethod.FINGER_PRINT, AuthMethod.PATTERN)}; + //use List + System.out.println("Use List"); for(int i = 0 ; i < modelNames.length ; i++){ addElectronic(modelNames[i], companies[i], dateOfMade[i], authMethods[i]); } - //System.out.println(electronicList.toString()); + System.out.println("Use Array"); + //use Array + for(int i = 0 ; i < modelNames.length ; i++){ + addElectronicToArray(modelNames[i], companies[i], dateOfMade[i], authMethods[i]); + } } public static Electronics getInstance(){ @@ -68,6 +107,16 @@ public Electronic findByProductNo(String productNo){ return null; } + public Electronic findByProductNoFromArray(String productNo){ + for(Electronic electronic : electronicArray){ + if(electronic != null && electronic.getProductNo().equals(productNo)) { + return electronic; + } + } + System.out.printf("Product 'productNo : %s' Not Found\n",productNo); + return null; + } + /* assignment 3-3 find product list by company name @@ -84,6 +133,24 @@ public List groupByCompanyName(Company company) { return electronics; } + public Electronic[] groupByCompanyNameFromArray(Company company) { + Electronic[] matchedElectronics = new Electronic[electronicArraySize]; + int count=0; + for(Electronic electronic : electronicArray){ + if(electronic != null && electronic.getCompanyName().equals(company.name())){ + matchedElectronics[count] = electronic; + count++; + } + } + if(matchedElectronics.length==0){ + System.out.printf("Product Made by '%s' Not Found\n",company.name()); + return null; + } + + //resize matchedElectronics to delete null + return Arrays.copyOf(matchedElectronics,count); + } + /* assignment 3-4 find product list by authentication method @@ -99,14 +166,27 @@ public List groupByAuthMethod(AuthMethod authMethod) { } return electronics; } + + public Electronic[] groupByAuthMethodFromArray(AuthMethod authMethod) { + Electronic[] matchedElectronics = new Electronic[electronicArraySize]; + int count=0; + for(Electronic electronic : electronicArray){ + if(electronic != null && electronic.getAuthMethod().contains(authMethod)){ + matchedElectronics[count] = electronic; + count++; + } + } + if(matchedElectronics.length==0){ + System.out.printf("Product Provide %s Authentication Not Found\n",authMethod); + return null; + } + //resize matchedElectronics to delete null + return Arrays.copyOf(matchedElectronics,count); + } /* assignment 3 getter(), setter(), hashcode(), equals(), toString() */ - public static void setInstance(Electronics instance) { - Electronics.instance = instance; - } - public List getElectronicList() { return electronicList; @@ -116,6 +196,14 @@ public void setElectronicList(List electronicList) { this.electronicList = electronicList; } + public Electronic[] getElectronicArray() { + return electronicArray; + } + + public void setElectronicArray(Electronic[] electronicArray) { + this.electronicArray = electronicArray; + } + @Override public String toString() { return "Electronics{" + diff --git a/src/me/day05/practice/Test.java b/src/me/day05/practice/Test.java index f7a45b8..f4d0438 100644 --- a/src/me/day05/practice/Test.java +++ b/src/me/day05/practice/Test.java @@ -1,6 +1,7 @@ package me.day05.practice; import java.time.LocalDate; +import java.util.Arrays; public class Test { public static void main(String[] args) { @@ -13,11 +14,10 @@ public static void main(String[] args) { //initialize Electronics for test electronics.initElectronics(); + System.out.println(); //initialize Users for test users.initUsers(); - Electronic electronic; - System.out.println("\n\n\n======================"); User originalUser = new User.Builder().userId("copyTester1") @@ -50,29 +50,68 @@ public static void main(String[] args) { System.out.println("Original User : " + originalUser + ""); System.out.println("Copy User : " + copyUser + "\n"); - - //find by product number System.out.println("\n\n\n======================"); - System.out.println("Find by Product No\n"); - electronic = electronics.findByProductNo("2101210001"); - printObject(electronic); + System.out.println("Use List"); + //find by user ID + System.out.println("Find by User ID\n"); + System.out.println("Find User ID : tester10"); + printObject(users.findByUserId("tester10")); + System.out.println("Find User ID : tester01"); + printObject(users.findByUserId("tester01")); + //find by product number + System.out.println("\nFind by Product No\n"); + System.out.println("Find Product No : 2101210001"); + printObject(electronics.findByProductNo("2101210001")); System.out.println("Find Product No : 2104210001"); - electronic = electronics.findByProductNo("2104210001"); - printObject(electronic); + printObject(electronics.findByProductNo("2104210001")); //find by Company System.out.println("\nFind by Company\n"); + System.out.println("Find Product Made by : GOOGLE"); printObject(electronics.groupByCompanyName(Company.GOOGLE)); System.out.println("Find Product Made by : SAMSUNG"); printObject(electronics.groupByCompanyName(Company.SAMSUNG)); - //find by AuthMethod System.out.println("\nFind by AuthMethod\n"); + System.out.println("Find Product by Provide AuthMethod : FOOT"); printObject(electronics.groupByAuthMethod(AuthMethod.FOOT)); System.out.println("Find Product by Provide AuthMethod : Pattern"); printObject(electronics.groupByAuthMethod(AuthMethod.PATTERN)); + + + System.out.println("\n\nUse Array"); + //find by user ID + System.out.println("Find by User ID\n"); + System.out.println("Find User ID : tester10"); + printObject(users.findByUserIdFromArray("tester10")); + System.out.println("Find User ID : tester01"); + printObject(users.findByUserIdFromArray("tester01")); + //find by product number + System.out.println("\nFind by Product No\n"); + System.out.println("Find Product No : 2101210001"); + printObject(Arrays.asList(electronics.findByProductNoFromArray("2104210001"))); + System.out.println("Find Product No : 2101210005"); + printObject(Arrays.asList(electronics.findByProductNoFromArray("2104210005"))); + + //find by Company + System.out.println("\nFind by Company\n"); + System.out.println("Find Product Made by : GOOGLE"); + printObject(Arrays.asList(electronics.groupByCompanyNameFromArray(Company.GOOGLE))); + System.out.println("Find Product Made by : SAMSUNG"); + printObject(Arrays.asList(electronics.groupByCompanyNameFromArray(Company.SAMSUNG))); + + + //find by AuthMethod + System.out.println("\nFind by AuthMethod\n"); + System.out.println("Find Product by Provide AuthMethod : FOOT"); + printObject(electronics.groupByAuthMethod(AuthMethod.FOOT)); + System.out.println("Find Product by Provide AuthMethod : Pattern"); + printObject(Arrays.asList(electronics.groupByAuthMethodFromArray(AuthMethod.PATTERN))); + + + } public static void printObject(Object o){ diff --git a/src/me/day05/practice/Users.java b/src/me/day05/practice/Users.java index 97cd49d..343c965 100644 --- a/src/me/day05/practice/Users.java +++ b/src/me/day05/practice/Users.java @@ -1,18 +1,19 @@ package me.day05.practice; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public class Users { private List userList = new ArrayList<>(); + private User[] userArray; + private int userArraySize; static Users instance; //set constructor as private for SingleTon private Users(){ - + this.userList = new ArrayList<>(); + this.userArray = new User[Define.DEFAULT_CAPACITY]; + this.userArraySize = 0; } /* assignment 2-1 @@ -41,8 +42,20 @@ public User findByUserId(String userId){ return null; } + public User findByUserIdFromArray(String userId){ + for(User user: userArray){ + if(user != null && user.getUserId().equals(userId)){ + return user; + } + } + + System.out.printf("'%s' Not Found\n",userId); + return null; + } + //Todo : add validation check of userId, userPassword, userPhoneNumber, userEmail, userBirthDate public boolean addUser(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate){ + //Use List //duplication check if(findByUserId(userId) != null){ System.out.printf("'%s' Already Exists\n",userId); @@ -56,20 +69,54 @@ public boolean addUser(String userId, String userPassword, String userPhoneNumbe .userEmail(userEmail) .userBirthDate(userBirthDate) .build()); + return true; + } + + public boolean addUserToArray(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate){ + //use Array + //duplication check + if(userArraySize > 0){ + if(findByUserIdFromArray(userId) != null){ + System.out.printf("'%s' Already Exists\n",userId); + return false; + } + } + + if(userArraySize == userArray.length){ + resize(userArraySize + 10); + } + userArray[userArraySize] = (new User.Builder() + .userId(userId) + .userPassword(userPassword) + .userPhoneNumber(userPhoneNumber) + .userEmail(userEmail) + .userBirthDate(userBirthDate) + .build()); + userArraySize++; return true; } + private void resize(int newLength){ + userArray = Arrays.copyOf(this.userArray, newLength); + } + public void initUsers(){ String[] userId = {"tester01","tester02","tester03","tester01"}; String[] userPassword = {"tester01PW","tester02PW","tester03PW","tester01PW"}; String[] userPhoneNumber = {"010-0000-0001", "010-0000-0002", "010-0000-0003", "010-0000-0001",}; String[] userEmail = {"tester01@gmail.com", "tester02@gmail.com", "tester03@gmail.com", "tester01@gmail.com"}; LocalDate[] userBirthDate = {LocalDate.parse("1965-12-14"),LocalDate.parse("1982-07-31"), LocalDate.parse("2019-10-10"), LocalDate.parse("2000-01-01")}; + System.out.println("Use List"); for(int i = 0 ; i < userId.length ; i++){ + //use List addUser(userId[i], userPassword[i],userPhoneNumber[i], userEmail[i], userBirthDate[i]); } - //System.out.println(userList.toString()); + System.out.println("Use Array"); + for (int i = 0 ; i < userId.length ; i++){ + //use Array + addUserToArray(userId[i], userPassword[i],userPhoneNumber[i], userEmail[i], userBirthDate[i]); + } } /* @@ -80,12 +127,16 @@ public List getUserList() { return userList; } + public void setUserArray(User[] userArray) { + this.userArray = userArray; + } + public void setUserList(List userList) { this.userList = userList; } - public static void setInstance(Users instance) { - Users.instance = instance; + public User[] getUserArray() { + return userArray; } @Override From 9006bd436944550a64b7d6ad7e019688273d3e82 Mon Sep 17 00:00:00 2001 From: jy-b Date: Thu, 27 Apr 2023 13:28:49 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20[2=EC=B0=A8]=20Java=20Assignmen?= =?UTF-8?q?t5=20upload=20by=20JONGYOON=20BAE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [Modify toString() of Electronics List] --- src/me/day05/practice/Electronics.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/me/day05/practice/Electronics.java b/src/me/day05/practice/Electronics.java index b003b56..d18de10 100644 --- a/src/me/day05/practice/Electronics.java +++ b/src/me/day05/practice/Electronics.java @@ -206,9 +206,7 @@ public void setElectronicArray(Electronic[] electronicArray) { @Override public String toString() { - return "Electronics{" + - "electronicList=" + electronicList + - '}'; + return electronicList.toString(); } @Override