Advertisement
Guest User

Untitled

a guest
Apr 28th, 2024
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.44 KB | None | 0 0
  1. package searchengine.model;
  2.  
  3. import jakarta.persistence.*;
  4. import lombok.Data;
  5. import lombok.NoArgsConstructor;
  6.  
  7. @Entity
  8. @Table(name = "search_index", indexes = {@Index(name = "lemma_id_FK", columnList = "lemma_id"), @Index(name = "page_id_FK", columnList = "page_id")})
  9. @Data
  10. @NoArgsConstructor
  11.  
  12.  
  13. public class IndexEntity {
  14.     @Id
  15.     @TableGenerator(
  16.             name = "indexEntityGen", // Уникальное имя генератора
  17.             table = "indexIdGen", // Название таблицы для хранения идентификаторов
  18.             pkColumnName = "indexKeyGen", // Название столбца с ключом генератора
  19.             valueColumnName = "indexNextValGen", // Название столбца со значением следующего идентификатора
  20.             pkColumnValue = "IndexEntity", // Значение, связанное с этим генератором
  21.             allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
  22.     )
  23.     @GeneratedValue(strategy = GenerationType.TABLE, generator = "indexEntityGen")
  24.     private int id;
  25.     @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.REFRESH)
  26.     @JoinColumn(foreignKey = @ForeignKey(name = "FK_index_page_id"), name = "page_id", nullable = false)
  27.     private PageEntity page;
  28.     @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.REFRESH)
  29.     @JoinColumn(foreignKey = @ForeignKey(name = "FK_index_lemma_id"), name = "lemma_id", nullable = false)
  30.     private LemmaEntity lemmaEntity;
  31.     @Column
  32.     private int ranking;
  33.  
  34.     public IndexEntity(PageEntity page, LemmaEntity LemmaEntity, int rank) {
  35.         this.page = page;
  36.         this.lemmaEntity = LemmaEntity;
  37.         this.ranking = rank;
  38.     }
  39.  
  40. }
  41. ------------------------------------------------------------------------------------------------------
  42. package searchengine.model;
  43.  
  44. import jakarta.persistence.*;
  45. import lombok.Data;
  46. import lombok.NoArgsConstructor;
  47.  
  48. @Entity
  49. @Table(name = "lemma",indexes = {@Index(name = "lemma_string_FK",columnList = "lemma")})
  50. @Data
  51. @NoArgsConstructor
  52.  
  53. public class LemmaEntity {
  54.     @Id
  55.     @TableGenerator(
  56.             name = "lemmaEntityGen", // Уникальное имя генератора
  57.             table = "lemmaIdGen", // Название таблицы для хранения идентификаторов
  58.             pkColumnName = "lemmaKeyGen", // Название столбца с ключом генератора
  59.             valueColumnName = "lemmaNextValGen", // Название столбца со значением следующего идентификатора
  60.             pkColumnValue = "LemmaEntity", // Значение, связанное с этим генератором
  61.             allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
  62.     )
  63.     @GeneratedValue(strategy = GenerationType.TABLE, generator = "lemmaEntityGen")
  64.     private int id;
  65.     @ManyToOne(cascade = CascadeType.REFRESH,fetch = FetchType.LAZY)
  66.     private SiteEntity site;
  67.     @Column(columnDefinition = "VARCHAR(255)")
  68.     private String lemma;
  69.     private int frequency;
  70.     public LemmaEntity(SiteEntity Site, String lemma, int frequency) {
  71.         this.site = Site;
  72.         this.lemma = lemma;
  73.         this.frequency = frequency;
  74.     }
  75.     @Override
  76.     public String toString() {
  77.         return lemma;
  78.     }
  79. }
  80. ------------------------------------------------------------------------------------------------------
  81. package searchengine.model;
  82.  
  83. import jakarta.persistence.*;
  84. import lombok.Data;
  85. import lombok.NoArgsConstructor;
  86.  
  87. @Entity
  88. @Table(name = "page", indexes = @Index(columnList = "path"))
  89. @Data
  90. @NoArgsConstructor
  91. public class PageEntity {
  92.     @Id
  93.     @TableGenerator(
  94.             name = "pageEntityGen", // Уникальное имя генератора
  95.             table = "pageIdGen", // Название таблицы для хранения идентификаторов
  96.             pkColumnName = "pageKeyGen", // Название столбца с ключом генератора
  97.             valueColumnName = "pageNextValGen", // Название столбца со значением следующего идентификатора
  98.             pkColumnValue = "PageEntity", // Значение, связанное с этим генератором
  99.             allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
  100.     )
  101.     @GeneratedValue(strategy = GenerationType.TABLE, generator = "pageEntityGen")
  102.     private int id;
  103.     @ManyToOne(cascade = CascadeType.REFRESH,fetch = FetchType.LAZY)
  104.     @JoinColumn(nullable = false)
  105.     private SiteEntity site;
  106.     @Column(columnDefinition = "VARCHAR(255)", nullable = false)
  107.     private String path;
  108.     @Column(nullable = false)
  109.     private int code;
  110.     @Column(columnDefinition = "MEDIUMTEXT", nullable = false)
  111.     private String content;
  112.     @Enumerated(EnumType.STRING)
  113.     private PageStatus pageStatus;
  114.     public PageEntity(SiteEntity Site, String path, int code, String content, PageStatus pageStatus) {
  115.         this.site = Site;
  116.         this.path = path;
  117.         this.code = code;
  118.         this.content = content;
  119.         this.pageStatus = pageStatus;
  120.     }
  121.     @Override
  122.     public String toString() {
  123.         return "id: " + id + " path: " + path;
  124.     }
  125. }
  126. --------------------------------------------------------------
  127. package searchengine.model;
  128.  
  129. import jakarta.persistence.*;
  130. import lombok.Data;
  131. import lombok.NoArgsConstructor;
  132.  
  133. import java.time.LocalDateTime;
  134.  
  135. @Entity
  136. @Table(name = "site")
  137. @Data
  138. @NoArgsConstructor
  139. public class SiteEntity {
  140.     private static final String VARCHAR_TYPE = "VARCHAR(255)";
  141.     @Id
  142.     @TableGenerator(
  143.             name = "siteEntityGen", // Уникальное имя генератора
  144.             table = "siteIdGen", // Название таблицы для хранения идентификаторов
  145.             pkColumnName = "siteKeyGen", // Название столбца с ключом генератора
  146.             valueColumnName = "siteNextValGen", // Название столбца со значением следующего идентификатора
  147.             pkColumnValue = "SiteEntity", // Значение, связанное с этим генератором
  148.             allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
  149.     )
  150.     @GeneratedValue(strategy = GenerationType.TABLE, generator = "siteEntityGen")
  151.     private int id;
  152.     @Enumerated(EnumType.STRING)
  153.     private SiteStatus status;
  154.     @Column(name = "status_time", nullable = false)
  155.     private LocalDateTime statusTime;
  156.     @Column(name = "last_error", columnDefinition = "TEXT")
  157.     private String lastError;
  158.     @Column(columnDefinition = VARCHAR_TYPE, nullable = false)
  159.     private String url;
  160.     @Column(columnDefinition = VARCHAR_TYPE, nullable = false)
  161.     private String name;
  162.     public SiteEntity(SiteStatus status, LocalDateTime statusTime, String lastError, String url, String name) {
  163.         this.status = status;
  164.         this.statusTime = statusTime;
  165.         this.lastError = lastError;
  166.         this.url = url;
  167.         this.name = name;
  168.     }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement