Skip to content
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
33 changes: 33 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/DoubleUnit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mergedoc.backend.unit.entity;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DoubleUnit extends Unit{

@OneToMany(mappedBy = "doubleUnit", cascade = CascadeType.ALL)
private List<MappedUnit> mappedUnitList = new ArrayList<>();

@Builder
public DoubleUnit(String title){
this.setTitle(title);
this.setForm(Form.Double);
}

//==연관관계 편의 메서드==//
public void addMappedUnit(MappedUnit mappedUnit){
mappedUnitList.add(mappedUnit);
mappedUnit.builder().doubleUnit(this);
}

}
7 changes: 7 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/Form.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.mergedoc.backend.unit.entity;

public enum Form {
Single,
Double,
Merged
}
65 changes: 65 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/MappedUnit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.mergedoc.backend.unit.entity;

import com.mergedoc.backend.Base.BaseEntity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

import static javax.persistence.FetchType.*;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class MappedUnit extends BaseEntity {

@Id @GeneratedValue
@Column(name = "mapped_id")
private Long id;

private String title;

@Enumerated(EnumType.STRING)
private Form form;

private int orders;

@Builder
public MappedUnit( String title, Form form, int orders, DoubleUnit doubleUnit, MergedUnit mergedUnit, Unit originUnit) {
this.title = title;
this.form = form;
this.orders = orders;
this.doubleUnit = doubleUnit;
this.mergedUnit = mergedUnit;
this.originUnit = originUnit;
}

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "double_id")
private DoubleUnit doubleUnit;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "merged_id")
private MergedUnit mergedUnit;

@OneToOne(fetch = LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "origin_id")
private Unit originUnit; //single, double

/*
//==연관관계 편의 메서드==//
public void addDoubleUnit(DoubleUnit doubleUnit){
this.doubleUnit = doubleUnit;
doubleUnit.getMappedUnitList().add(this);
}

public void addMergedUnit(MergedUnit mergedUnit){
this.mergedUnit = mergedUnit;
mergedUnit.getMappedUnitList().add(this);
}
*/

}
33 changes: 33 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/MergedUnit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mergedoc.backend.unit.entity;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class MergedUnit extends Unit{

@OneToMany(mappedBy = "mergedUnit", cascade = CascadeType.ALL)
private List<MappedUnit> mappedUnitList = new ArrayList<>();

@Builder
public MergedUnit(String title){
this.setTitle(title);
this.setForm(Form.Merged);
}

//==연관관계 편의 메서드==//
public void addMappedUnit(MappedUnit mappedUnit){
mappedUnitList.add(mappedUnit);
mappedUnit.builder().mergedUnit(this);
}

}
29 changes: 29 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/Tag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.mergedoc.backend.unit.entity;
import com.mergedoc.backend.Base.BaseEntity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Tag extends BaseEntity {

@Id @GeneratedValue
@Column(name = "tag_id")
private Long id;

private String content;

private int count;

@Builder
public Tag(String content, int count) {
this.content = content;
this.count = count;
}
}
9 changes: 9 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/Type.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.mergedoc.backend.unit.entity;

public enum Type {
Plain,
Project,
QnA,
Double,
Merged
}
31 changes: 31 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/Unit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.mergedoc.backend.unit.entity;

import com.mergedoc.backend.Base.BaseEntity;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;


@Entity
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Unit extends BaseEntity {

@Id @GeneratedValue
@Column(name = "unit_id")
private Long id;

private String title;

@Enumerated(EnumType.STRING)
private Form form;

@Enumerated(EnumType.STRING)
private Type type;

}
34 changes: 34 additions & 0 deletions src/main/java/com/mergedoc/backend/unit/entity/UnitTag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.mergedoc.backend.unit.entity;

import com.mergedoc.backend.Base.BaseEntity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UnitTag extends BaseEntity {

@Id @GeneratedValue
@Column(name = "unit_tag_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "unit_id")
private Unit unit;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private Tag tag;

@Builder
public UnitTag(Unit unit, Tag tag){
this.unit = unit;
this.tag = tag;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.mergedoc.backend.unit.repository;

import com.mergedoc.backend.unit.entity.*;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.Table;


@Repository
@RequiredArgsConstructor
public class UnitRepository {

private final EntityManager em;

//저장

//public void saveSingleUnit(SingleUnit singleUnit){em.persist(singleUnit);}

public void saveDoubleUnit(DoubleUnit doubleUnit){em.persist(doubleUnit);}

public void saveMergedUnit(MergedUnit mergedUnit){em.persist(mergedUnit);}

public void saveMappedUnit(MappedUnit mappedUnit){em.persist(mappedUnit);}

public void saveTag(Tag tag){em.persist(tag);}

public void saveUnitTag(UnitTag unitTag){em.persist(unitTag);}

//조회
/*public SingleUnit findSingleUnit(Long singleUnitId){
return em.find(singleUnitId);
}*/
public DoubleUnit findDoubleUnit(Long doubleUnitId){
return em.find(DoubleUnit.class, doubleUnitId);
}

public MergedUnit findMergedUnit(Long mergedUnitId){
return em.find(MergedUnit.class, mergedUnitId);
}

public MappedUnit findMappedUnit(Long mappedUnitId){
return em.find(MappedUnit.class, mappedUnitId);
}

public Tag findTag(Long tagId){
return em.find(Tag.class, tagId);
}

public UnitTag findUnitTag(Long unitTagId){
return em.find(UnitTag.class,unitTagId);
}

//삭제
//public void deleteSingleUnit(SingleUnit singleUnit){em.remove(singleUnit);}

public void deleteDoubleUnit(DoubleUnit doubleUnit){em.remove(doubleUnit);}

public void deleteMergedUnit(MergedUnit mergedUnit){em.remove(mergedUnit);}

public void deleteMappedUnit(MappedUnit mappedUnit){em.remove(mappedUnit);}

public void deleteTag(Tag tag){em.remove(tag);}

public void deleteUnitTag(UnitTag unitTag){em.remove(unitTag);}

}
Loading