...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import java.util.*; import java.util.stream.Collectors; @RestController@Slf4j @RequiredArgsConstructor @Controller public class DocumentVersionController { private final DocumentVersionService @AutowireddocumentVersionService; private DocumentVersionRepository documentVersionRepository; /** * 문서 버전 목록 가져오기 */ @PostMapping("/getDocumentVersionList") public ResponseEntity<String> getDocumentVersionList(@RequestBody Map<String, Object> request) throws JsonProcessingException { String id = (String) request.get("id"); List<DocumentVersion> documentVersionList = documentVersionService.getDocumentVersions(id); List<Map<String, Object>> formattedData = documentVersionList.stream().map(version -> { Map<String, Object> versionData = new HashMap<>(); versionData.put("id", version.getId()); versionData.put("date", version.getCreatedAt()); versionData.put("author", version.getNamegetUsername()); return versionData; }).collect(Collectors.toList()); ObjectMapper objectMapper = new ObjectMapper(); String jsonResponse = objectMapper.writeValueAsString(formattedData); return ResponseEntity.ok() .header("Content-Type", "application/json; charset=UTF-8") .body(jsonResponse); } /** * 문서 버전 데이터 가져오기 */ @PostMapping("/getDocumentVersionData") public String getDocumentVersionData(@RequestBody Map<String, Object> request) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); String id = (String) request.get("id"); String json = documentVersionService.getDocumentVersionJson(id); return ResponseEntity.ok() .header("Content-Type", "application/json; charset=UTF-8") .body(json); } /** * 문서 버전 데이터 삭제 */ @DeleteMapping("/getDocumentVersionData") public ResponseEntity<Map<String, Object>> deleteDocumentVersionData(@RequestBody Map<String, Object> request) { String id = (String) request.get("id"); snoteServicedocumentVersionService.deleteDocumentVersion(id); return ResponseEntity.ok(Map.of("message", "Document deleted successfully.")); } } |
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
| ||||||
import javaxlombok.extern.persistenceslf4j.ColumnSlf4j; import javaxorg.springframework.persistencestereotype.EntityRepository; import javaxjava.persistenceutil.IdHashMap; import javaxjava.persistenceutil.TableList; import java.util.DateMap; @Entity @Table(name = " ") // 테이블 이름 @Slf4j @Repository public class DocumentVersionModelDao extends DocumentVersionAbstractDao { public @Id private String id; private String name; private String json; @Column(name = "create_at") private Date createdAt; @Column(name = "doc_id") private String docId; public String getId() { return id; } public void setId(String _id) { this.id = _id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJson() { return json; void insert(DocumentVersionModel documentVersionModel) { insert("DocumentVersion.insert", documentVersionModel); } public void delete(String id) { delete("DocumentVersion.remove", id); } public DocumentVersionModel getDocumentVersionById(String id) { Map<String, Object> params = new HashMap<>(); params.put("id", id); return (DocumentVersionModel) select("DocumentVersion.getDocumentVersionById", params); } public List<DocumentVersionModel> getDocumentVersionByDocId(String docId) { return list("DocumentVersion.getDocumentVersionByDocId", docId); } } |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import com.ibatis.sqlmap.client.SqlMapClient; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import javax.annotation.Resource; import java.util.List; @SuppressWarnings("deprecation") public abstract class AbstractDao extends SqlMapClientDaoSupport { protected AbstractDao() { } public voidfinal Object setJsoninsert(final String json)queryId, {final Object parameterObject) { this.json = json; return getSqlMapClientTemplate().insert(queryId, parameterObject); } public final Dateint getCreatedAtupdate()final {String queryId, final Object parameterObject) { return return createdAt; getSqlMapClientTemplate().update(queryId, parameterObject); } public voidfinal int setCreatedAtdelete(Datefinal createdAt)String {queryId, final Object parameterObject) { this.createdAt = createdAt; return getSqlMapClientTemplate().delete(queryId, parameterObject); } public Stringfinal Object getDocIdselect()final {String queryId, final Object parameterObject) { return getSqlMapClientTemplate().queryForObject(queryId, parameterObject); return } docId; } public void setDocId(String id@SuppressWarnings("rawtypes") public final List list(final String queryId, final Object parameterObject) { this.docId = id; } } return getSqlMapClientTemplate().queryForList(queryId, parameterObject); } } |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import org.springframework.data.jpa.repository.JpaRepositorylombok.Data; import org.springframework.stereotype.Repositorylombok.NoArgsConstructor; import synap.editor.server.model2.DocumentVersion; import java.utilio.ListSerializable; import java.utilsql.OptionalDate; @Repository@Data @NoArgsConstructor public interfaceclass DocumentVersionRepositoryDocumentVersionModel extends JpaRepository<DocumentVersion, String>implements Serializable { /**private long id; private String userId; * private Documentint ID에domainId; 해당하는 private 모든String DocumentVersionusername; 객체를 조회 */ List<DocumentVersion> findVersionsByDocId( private String docId); private String json; private Date /**createdAt; DocumentVersionModel(String userId, int domainId, *String 특정docId, 문서String 버전json) ID에 해당하는 DocumentVersion 객체를 조회 */ DocumentVersion findVersionsById(String id); }{ this.userId = userId; this.domainId = domainId; this.docId = docId; this.json = json; } } |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="DocumentVersion"> <resultMap id="documentVersion" class="synap.editor.server.model2.DocumentVersion(DocumentVersionModel path)"> <result property="id" column="id" columnIndex="1"/> <result property="userId" column="user_id" columnIndex="2"/> <result property="domainId" column="domain_id" columnIndex="3"/> <result property="docId" column="doc_id" columnIndex="34"/> <result property="json" column="json" columnIndex="45"/> <result property="createdAt" column="created_at" columnIndex="56"/> </resultMap> <resultMap id="documentVersionList" class="synap.editor.server.model2.DocumentVersion(DocumentVersionModel path)"> <result property="id" column="id" columnIndex="1"/> <result property="userId" column="user_id" columnIndex="2"/> <result property="domainId" column="domain_id" columnIndex="3"/> <result property="docId" column="doc_id" columnIndex="34"/> <result property="createdAt" column="created_at" columnIndex="45"/> </resultMap> <insert id="insert"> INSERT INTO revisiondocument_note_version(user_id, domain_id, doc_id, json, created_at) VALUES (#userId#, #domainId#, #docId# , #json#, SYSDATE()) </insert> <update id="remove"> UPDATE revision_note_version SET removed = true WHERE id = #id# </update> <update id="updateRemovedForOverflow" parameterClass="java.lang.Long<delete id="remove"> UPDATE revision_note_version rv JOIN ( SELECT id FROM revision_noteDELETE FROM document_version WHERE doc_id = #docId# AND removed = false ORDER BY id DESC LIMIT 1 OFFSET 500 ) AS subquery ON rv.id = subquery.id SET rv.removed = true; </update>#id# </delete> <select id="getNoteVersionByIdgetDocumentVersionById" resultMap="revisionNoteVersiondocumentVersion"> SELECT id, user_id, domain_id, doc_id, json, created_at, removed FROM revisiondocument_note_version WHERE id = #id# </select> <select id="getNoteVersionByDocIdgetDocumentVersionByDocId" resultClass="java.util.List" resultMap="revisionNoteVersionListdocumentVersionList"> SELECT id, user_id, domain_id, doc_id, created_at, removed FROM revisiondocument_note_version WHERE doc_id = #docId# AND removed = false ORDER BY id DESC LIMIT 500 </select> </sqlMap> |
...