java rewrite

This commit is contained in:
2022-06-03 23:59:59 +08:00
parent 76608d5713
commit b59dcfd93c
68 changed files with 2218 additions and 1769 deletions

View File

@@ -0,0 +1,6 @@
module net.woggioni.jpacrepo.api {
requires static lombok;
requires static java.xml.bind;
exports net.woggioni.jpacrepo.api.model;
exports net.woggioni.jpacrepo.api.service;
}

View File

@@ -0,0 +1,12 @@
package net.woggioni.jpacrepo.api.model;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum CompressionFormat {
XZ("xz"), GZIP("gz"), Z_STANDARD("zst");
@Getter
private final String value;
}

View File

@@ -0,0 +1,93 @@
package net.woggioni.jpacrepo.api.model;
import lombok.Data;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.ElementCollection;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Index;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.time.OffsetDateTime;
import java.util.Set;
@Data
@Entity
@Access(AccessType.FIELD)
@NamedQueries(value = {
@NamedQuery(name = "searchByFileName", query = "SELECT p FROM PkgData p WHERE p.fileName = :fileName"),
@NamedQuery(name = "searchByName", query = "SELECT p FROM PkgData p WHERE p.id.name = :name"),
@NamedQuery(name = "searchById", query = "SELECT p FROM PkgData p WHERE p.id = :id"),
@NamedQuery(name = "searchByHash", query = "SELECT p FROM PkgData p WHERE p.md5sum = :md5sum")
})
@Table(indexes = {
@Index(columnList = "md5sum", unique = true),
@Index(columnList = "fileName", unique = true)
})
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class PkgData {
@EmbeddedId
private PkgId id;
private String base;
private String description;
private String url;
private OffsetDateTime buildDate;
private String packager;
private long size;
private String license;
private String md5sum;
private String fileName;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> replaces;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> conflict;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> provides;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> depend;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> optdepend;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> makedepend;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> makeopkgopt;
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> backup;
private OffsetDateTime updTimestamp;
@PreUpdate
@PrePersist
private void writeTimestamp() {
updTimestamp = OffsetDateTime.now();
}
}

View File

@@ -0,0 +1,30 @@
package net.woggioni.jpacrepo.api.model;
import lombok.Data;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Embeddable;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
@Data
@Embeddable
@Access(AccessType.FIELD)
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class PkgId implements Serializable {
private String name;
private String version;
private String arch;
@Enumerated(EnumType.ORDINAL)
private CompressionFormat compressionFormat;
}

View File

@@ -0,0 +1,13 @@
package net.woggioni.jpacrepo.api.service;
import net.woggioni.jpacrepo.api.model.PkgData;
import javax.ejb.Local;
import java.util.List;
@Local
public interface PacmanServiceLocal extends PacmanServiceRemote {
long countResults(String name, String version, String arch);
List<PkgData> searchPackage(String name, String version, String arch, int page, int pageSize, String fileName);
}

View File

@@ -0,0 +1,9 @@
package net.woggioni.jpacrepo.api.service;
import javax.ejb.Remote;
@Remote
public interface PacmanServiceRemote {
void syncDB();
void deletePackage(String filename);
}