SourceFragment.java
package com.taxonomy.provenance.model;
import jakarta.persistence.*;
/**
* A traceable fragment (section, paragraph, page range) within a
* {@link SourceVersion}.
*/
@Entity
@Table(name = "source_fragment")
public class SourceFragment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "source_version_id", nullable = false)
private SourceVersion sourceVersion;
@Column(name = "section_path", length = 500)
private String sectionPath;
@Column(name = "paragraph_ref", length = 100)
private String paragraphRef;
@Column(name = "page_from")
private Integer pageFrom;
@Column(name = "page_to")
private Integer pageTo;
@Column(name = "fragment_text", length = 4000)
private String fragmentText;
@Column(name = "fragment_hash", length = 128)
private String fragmentHash;
@Column(name = "parent_fragment_id")
private Long parentFragmentId;
@Column(name = "chunk_level")
private Integer chunkLevel;
protected SourceFragment() {}
public SourceFragment(SourceVersion sourceVersion, String fragmentText) {
this.sourceVersion = sourceVersion;
this.fragmentText = fragmentText;
}
// ── Accessors ──────────────────────────────────────────────────────────────
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public SourceVersion getSourceVersion() { return sourceVersion; }
public void setSourceVersion(SourceVersion sourceVersion) { this.sourceVersion = sourceVersion; }
public String getSectionPath() { return sectionPath; }
public void setSectionPath(String sectionPath) { this.sectionPath = sectionPath; }
public String getParagraphRef() { return paragraphRef; }
public void setParagraphRef(String paragraphRef) { this.paragraphRef = paragraphRef; }
public Integer getPageFrom() { return pageFrom; }
public void setPageFrom(Integer pageFrom) { this.pageFrom = pageFrom; }
public Integer getPageTo() { return pageTo; }
public void setPageTo(Integer pageTo) { this.pageTo = pageTo; }
public String getFragmentText() { return fragmentText; }
public void setFragmentText(String fragmentText) { this.fragmentText = fragmentText; }
public String getFragmentHash() { return fragmentHash; }
public void setFragmentHash(String fragmentHash) { this.fragmentHash = fragmentHash; }
public Long getParentFragmentId() { return parentFragmentId; }
public void setParentFragmentId(Long parentFragmentId) { this.parentFragmentId = parentFragmentId; }
public Integer getChunkLevel() { return chunkLevel; }
public void setChunkLevel(Integer chunkLevel) { this.chunkLevel = chunkLevel; }
}