Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java Assignment3 upload by LeeJaewon #32

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions me/day05/practice/AuthMethod.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package me.day05.practice;

public enum AuthMethod {
FINGERPRINT_AUTHENTICATION, PATTERN_AUTHENTICATION, PIN_AUTHENTICATION, FACIAL_AUTHENTICATION
}
5 changes: 5 additions & 0 deletions me/day05/practice/Company.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package me.day05.practice;

public enum Company {
SAMSUNG, LG, APPLE
}
95 changes: 95 additions & 0 deletions me/day05/practice/Electronic.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package me.day05.practice;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Objects;

public class Electronic {
private static Long registerNo;
private String productNo;
private String modelName;
private Company companyName;
private LocalDate dateOfMade;
private AuthMethod[] authMethods;

public Electronic() {
if (registerNo == null) {
registerNo = 0L;
}
this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("YYMMdd"))
+ (String.format("%04d", ++registerNo));
}

public static Long getRegisterNo() {
return registerNo;
}

public String getProductNo() {
return productNo;
}

public void setProductNo(String productNo) {
this.productNo = productNo;
}

public String getModelName() {
return modelName;
}

public void setModelName(String modelName) {
this.modelName = modelName;
}

public Company getCompanyName() {
return companyName;
}

public void setCompanyName(Company companyName) {
this.companyName = companyName;
}

public LocalDate getDateOfMade() {
return dateOfMade;
}

public void setDateOfMade(LocalDate dateOfMade) {
this.dateOfMade = dateOfMade;
}

public AuthMethod[] getAuthMethods() {
return authMethods;
}

public void setAuthMethods(AuthMethod[] authMethods) {
this.authMethods = authMethods;
}

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Electronic that = (Electronic)o;
return productNo.equals(that.productNo) && Objects.equals(modelName, that.modelName)
&& companyName == that.companyName && Objects.equals(dateOfMade, that.dateOfMade)
&& Arrays.equals(authMethods, that.authMethods);
}

@Override
public int hashCode() {
return Objects.hash(productNo);
}

@Override
public String toString() {
return "Electronic{" +
"productNo='" + productNo + '\'' +
", modelName='" + modelName + '\'' +
", companyName=" + companyName +
", dateOfMade=" + dateOfMade +
", authMethods=" + Arrays.toString(authMethods) +
'}';
}
}
48 changes: 48 additions & 0 deletions me/day05/practice/Electronics.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package me.day05.practice;

import java.util.Arrays;

public class Electronics {
private static Electronics electronics;
private Electronic[] electronicList;

private Electronics() {

}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


public static Electronics getInstance() {
if (electronics == null) {
electronics = new Electronics();
}
return Electronics.electronics;
}

public Electronic findByProductNo(String productNo) {
return Arrays.stream(this.electronicList)
.filter(electronic -> electronic.getProductNo().equals(productNo))
.findFirst()
.orElse(null);
}

Electronic[] groupByCompany(Company company) {
return Arrays.stream(this.electronicList)
.filter(electronic -> electronic.getCompanyName().equals(company))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CompanyName과 Company 용어를 통일하면 어떨까요?
getCompanyName()으로 Company를 반환하니 헷갈리네요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 반환되는 값이 Company array이니 메소드명을 groupByCompany()으로 바꾸는게 좋아보입니다!

.toArray(Electronic[]::new);
}

Electronic[] groupByAuthMethod(AuthMethod authMethod) {
return Arrays.stream(this.electronicList)
.filter(
electronic -> Arrays.stream(electronic.getAuthMethods())
.anyMatch(authMethods -> authMethods.equals(authMethod))
).toArray(Electronic[]::new);
}

public Electronic[] getElectronicList() {
return electronicList;
}

public void setElectronicList(Electronic[] electronicList) {
this.electronicList = electronicList;
}
}
109 changes: 109 additions & 0 deletions me/day05/practice/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package me.day05.practice;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Objects;

public class User implements Cloneable {
private String userId;
private String userPassword;
private String userPhoneNumber;
private String email;
private LocalDate userBirthDate;
private Electronic[] electronicDevices;
private LocalDateTime registerTime;

public User() {
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 getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public LocalDate getUserBirthDate() {
return userBirthDate;
}

public void setUserBirthDate(LocalDate 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 o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
User user = (User)o;
return userId.equals(user.userId);
}

@Override
public int hashCode() {
return Objects.hash(userId);
}

@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}

@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", userPassword='" + userPassword + '\'' +
", userPhoneNumber='" + userPhoneNumber + '\'' +
", email='" + email + '\'' +
", userBirthDate=" + userBirthDate +
", electronicDevices=" + Arrays.toString(electronicDevices) +
", registerTime=" + registerTime +
'}';
}
}
46 changes: 46 additions & 0 deletions me/day05/practice/Users.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package me.day05.practice;

import java.util.Arrays;

import me.day05.practice.exception.DuplicateUserException;

public class Users {
private static final int DEFAULT_CAPACITY = 20;
private static Users users;
private User[] userList;

private Users() {
userList = new User[DEFAULT_CAPACITY];
}

public static Users getInstance() {
if (users == null) {
Users.users = new Users();
}
return Users.users;
}

public User findByUserId(String userId) {
return Arrays.stream(this.userList)
.filter((user -> user.getUserId().equals(userId)))
.findFirst()
.orElse(null);
}

public User copy(User user) throws CloneNotSupportedException {
return (User)(user.clone());
}

public User[] getUserList() {
return userList;
}

public void setUserList(User[] userList) {
this.userList = userList;
}

private boolean isDuplicateUser(User user) {
return Arrays.stream(this.userList)
.anyMatch(users -> users.getUserId().equals(user.getUserId()));
}
}