Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
themeEmacs
titleDocumentVersionController.java
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
Code Block
languagejava
themeEmacs
titleDocumentVersionModelDao.java
languagejava
themeEmacs
titleDocumentVersion.java
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
languagejava
themeEmacs
titleAbstractDao.java
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
languagejava
themeEmacs
titleDocumentVersionRepositoryDocumentVersionModel.java
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
languagejava
themeEmacs
titleDocumentVersion.xml
<?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>

...