File tree Expand file tree Collapse file tree 3 files changed +95
-0
lines changed
src/main/java/com/yello/server/domain/group/entity Expand file tree Collapse file tree 3 files changed +95
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .yello .server .domain .group .entity ;
2
+
3
+ import com .yello .server .global .common .dto .AuditingTimeEntity ;
4
+ import javax .persistence .Convert ;
5
+ import javax .persistence .Entity ;
6
+ import javax .persistence .FetchType ;
7
+ import javax .persistence .GeneratedValue ;
8
+ import javax .persistence .GenerationType ;
9
+ import javax .persistence .Id ;
10
+ import javax .persistence .JoinColumn ;
11
+ import javax .persistence .ManyToOne ;
12
+ import lombok .AccessLevel ;
13
+ import lombok .AllArgsConstructor ;
14
+ import lombok .Builder ;
15
+ import lombok .Getter ;
16
+ import lombok .NoArgsConstructor ;
17
+
18
+ @ Getter
19
+ @ Entity
20
+ @ Builder
21
+ @ NoArgsConstructor (access = AccessLevel .PROTECTED )
22
+ @ AllArgsConstructor
23
+ public class UserGroupData extends AuditingTimeEntity {
24
+
25
+ @ Id
26
+ @ GeneratedValue (strategy = GenerationType .IDENTITY )
27
+ private Long id ;
28
+
29
+ @ ManyToOne (fetch = FetchType .LAZY )
30
+ @ JoinColumn (name = "group_name" , referencedColumnName = "groupName" )
31
+ private UserGroup group ;
32
+
33
+ @ Convert (converter = UserGroupDataTagConterver .class )
34
+ private UserGroupDataTag tag ;
35
+
36
+ private String value ;
37
+ }
Original file line number Diff line number Diff line change
1
+ package com .yello .server .domain .group .entity ;
2
+
3
+ import java .text .MessageFormat ;
4
+ import java .util .Arrays ;
5
+ import lombok .Getter ;
6
+ import lombok .RequiredArgsConstructor ;
7
+
8
+ @ Getter
9
+ @ RequiredArgsConstructor
10
+ public enum UserGroupDataTag {
11
+ ADDRESS ("ADDRESS" ),
12
+ POPULATION ("POPULATION" );
13
+
14
+ private final String intial ;
15
+
16
+ public static UserGroupDataTag fromCode (String dbData ) {
17
+ return Arrays .stream (UserGroupDataTag .values ())
18
+ .filter (v -> v .getIntial ().equals (dbData ))
19
+ .findAny ()
20
+ .orElseThrow (() -> new IllegalArgumentException (
21
+ MessageFormat .format ("존재하지 않는 그룹 정보 key 타입 입니다. {0}" , dbData )));
22
+ }
23
+
24
+ public String intial () {
25
+ return intial ;
26
+ }
27
+ }
Original file line number Diff line number Diff line change
1
+ package com .yello .server .domain .group .entity ;
2
+
3
+ import javax .persistence .AttributeConverter ;
4
+ import javax .persistence .Converter ;
5
+ import lombok .extern .log4j .Log4j2 ;
6
+
7
+ @ Converter
8
+ @ Log4j2
9
+ public class UserGroupDataTagConterver implements AttributeConverter <UserGroupDataTag , String > {
10
+
11
+ @ Override
12
+ public String convertToDatabaseColumn (UserGroupDataTag userGroupType ) {
13
+ if (userGroupType == null ) {
14
+ return null ;
15
+ }
16
+ return userGroupType .getIntial ();
17
+ }
18
+
19
+ @ Override
20
+ public UserGroupDataTag convertToEntityAttribute (String dbData ) {
21
+ if (dbData == null ) {
22
+ return null ;
23
+ }
24
+ try {
25
+ return UserGroupDataTag .fromCode (dbData );
26
+ } catch (IllegalArgumentException exception ) {
27
+ log .error ("failure to convert cause unexpected code" + dbData + exception );
28
+ throw exception ;
29
+ }
30
+ }
31
+ }
You can’t perform that action at this time.
0 commit comments