improved data architecture
This commit is contained in:
@@ -9,6 +9,8 @@ open module net.woggioni.jpacrepo {
|
||||
requires static jakarta.cdi;
|
||||
requires static jakarta.ws.rs;
|
||||
|
||||
requires liquibase.core;
|
||||
requires liquibase.jakarta.cdi;
|
||||
requires net.woggioni.jwo;
|
||||
requires net.woggioni.jpacrepo.impl;
|
||||
requires org.slf4j;
|
||||
|
@@ -0,0 +1,49 @@
|
||||
package net.woggioni.jpacrepo.factory;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.enterprise.inject.Produces;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
import liquibase.integration.jakarta.cdi.CDILiquibaseConfig;
|
||||
import liquibase.integration.jakarta.cdi.annotations.LiquibaseType;
|
||||
import liquibase.resource.ClassLoaderResourceAccessor;
|
||||
import liquibase.resource.ResourceAccessor;
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@ApplicationScoped
|
||||
public class LiquibaseFactory {
|
||||
|
||||
@Resource
|
||||
private DataSource myDataSource;
|
||||
|
||||
@Produces
|
||||
@LiquibaseType
|
||||
public CDILiquibaseConfig createConfig() {
|
||||
CDILiquibaseConfig config = new CDILiquibaseConfig();
|
||||
config.setChangeLog("/META-INF/liquibase/jpacrepo.xml");
|
||||
config.setDefaultSchema("jpacrepo");
|
||||
config.setShouldRun(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
@Produces
|
||||
@LiquibaseType
|
||||
@SneakyThrows
|
||||
public DataSource createDataSource() {
|
||||
Connection conn = myDataSource.getConnection();
|
||||
Statement stmt = conn.createStatement();
|
||||
stmt.execute("CREATE SCHEMA IF NOT EXISTS \"jpacrepo\";");
|
||||
return myDataSource;
|
||||
}
|
||||
|
||||
@Produces
|
||||
@LiquibaseType
|
||||
public ResourceAccessor create() {
|
||||
return new ClassLoaderResourceAccessor(getClass().getClassLoader());
|
||||
}
|
||||
}
|
@@ -1,22 +1,39 @@
|
||||
package net.woggioni.jpacrepo.factory;
|
||||
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.enterprise.context.RequestScoped;
|
||||
import jakarta.enterprise.inject.Default;
|
||||
import jakarta.enterprise.inject.Disposes;
|
||||
import jakarta.enterprise.inject.Produces;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityManagerFactory;
|
||||
import jakarta.persistence.Persistence;
|
||||
import net.woggioni.jpacrepo.config.AppConfig;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
@ApplicationScoped
|
||||
//@ApplicationScoped
|
||||
public class PersistenceUnitFactory {
|
||||
|
||||
@Produces
|
||||
private EntityManagerFactory createEntityManagerFactory(AppConfig appConfig) {
|
||||
Properties properties = new Properties();
|
||||
properties.put("jakarta.persistence.schema-generation.database.action",
|
||||
appConfig.getInitialSchemaAction().getValue());
|
||||
properties.put("jakarta.persistence.jtaDataSource", appConfig.getDataSourceJndi());
|
||||
return Persistence.createEntityManagerFactory("jpacrepo_pu", properties);
|
||||
}
|
||||
//
|
||||
// @Produces
|
||||
// private EntityManagerFactory createEntityManagerFactory(AppConfig appConfig) {
|
||||
// Properties properties = new Properties();
|
||||
// properties.put("jakarta.persistence.schema-generation.database.action",
|
||||
// appConfig.getInitialSchemaAction().getValue());
|
||||
// properties.put("jakarta.persistence.jtaDataSource", appConfig.getDataSourceJndi());
|
||||
// return Persistence.createEntityManagerFactory("jpacrepo_pu", properties);
|
||||
// }
|
||||
//
|
||||
// @Produces
|
||||
// @Default
|
||||
// @RequestScoped
|
||||
// public EntityManager create(EntityManagerFactory emf) {
|
||||
// return emf.createEntityManager();
|
||||
// }
|
||||
//
|
||||
// public void dispose(@Disposes @Default EntityManager entityManager) {
|
||||
// if (entityManager.isOpen()) {
|
||||
// entityManager.close();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
@@ -11,7 +11,7 @@ import jakarta.ejb.Lock;
|
||||
import jakarta.ejb.LockType;
|
||||
import jakarta.ejb.Remote;
|
||||
import jakarta.ejb.Schedule;
|
||||
import jakarta.ejb.Stateless;
|
||||
import jakarta.ejb.Singleton;
|
||||
import jakarta.ejb.TransactionAttribute;
|
||||
import jakarta.ejb.TransactionAttributeType;
|
||||
import jakarta.ejb.TransactionManagement;
|
||||
@@ -30,12 +30,13 @@ import net.woggioni.jpacrepo.api.wire.PkgTuple;
|
||||
import net.woggioni.jpacrepo.cache.PackageCache;
|
||||
import net.woggioni.jpacrepo.config.AppConfig;
|
||||
import net.woggioni.jpacrepo.impl.model.CompressionFormatImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataParser;
|
||||
import net.woggioni.jpacrepo.persistence.QueryEngine;
|
||||
import net.woggioni.jpacrepo.service.jpa.Queries;
|
||||
import net.woggioni.jpacrepo.version.PkgIdComparator;
|
||||
import net.woggioni.jwo.CollectionUtils;
|
||||
import net.woggioni.jwo.Con;
|
||||
import net.woggioni.jwo.Hash;
|
||||
import net.woggioni.jwo.JWO;
|
||||
import net.woggioni.jwo.Sup;
|
||||
import net.woggioni.jwo.Tuple2;
|
||||
@@ -63,7 +64,9 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Stateless
|
||||
import static java.util.function.Predicate.not;
|
||||
|
||||
@Singleton
|
||||
@Lock(LockType.READ)
|
||||
@TransactionManagement(TransactionManagementType.CONTAINER)
|
||||
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
|
||||
@@ -71,7 +74,7 @@ import java.util.stream.Stream;
|
||||
@Remote({PacmanServiceRemote.class})
|
||||
public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
|
||||
@PersistenceContext
|
||||
@PersistenceContext(name = "jpacrepo_pu")
|
||||
private EntityManager em;
|
||||
|
||||
@Inject
|
||||
@@ -123,9 +126,10 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
});
|
||||
long[] count = new long[]{0};
|
||||
long totalPackages = fileListStreamSupplier.get().count();
|
||||
var parser = new PkgDataParser(em);
|
||||
|
||||
Con<Boolean> persistPackages = (Boolean drain) -> {
|
||||
while ((drain && inProgress.size() > 0) || inProgress.size() > maxInProgress) {
|
||||
while ((drain && !inProgress.isEmpty()) || inProgress.size() > maxInProgress) {
|
||||
Optional.ofNullable(completionService.poll(1, TimeUnit.SECONDS))
|
||||
.ifPresent((Con<Future<PkgData>>) future -> {
|
||||
inProgress.remove(future);
|
||||
@@ -135,7 +139,7 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
} catch (ExecutionException ee) {
|
||||
throw ee.getCause();
|
||||
}
|
||||
persistPackage(em, pkgData, ++count[0], totalPackages);
|
||||
persistPackage(em, parser, pkgData, ++count[0], totalPackages);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -146,7 +150,11 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
}).get()) {
|
||||
inProgress.add(completionService.submit(() -> {
|
||||
try {
|
||||
return PkgDataImpl.parseFile(file, CompressionFormatImpl.guess(file));
|
||||
var pkgData = PkgDataParser.parseFile(file, CompressionFormatImpl.guess(file));
|
||||
if(logger.isDebugEnabled()) {
|
||||
logger.debug("Parsed package file {}", file);
|
||||
}
|
||||
return pkgData;
|
||||
} catch (Exception ex) {
|
||||
logger.error(String.format("Error parsing '%s'", file.toAbsolutePath()), ex);
|
||||
throw ex;
|
||||
@@ -162,12 +170,12 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
packageCache.invalidateCache();
|
||||
}
|
||||
|
||||
private void persistPackage(EntityManager em, PkgData pkgData, long count, long totalPackages) {
|
||||
private void persistPackage(EntityManager em, PkgDataParser parser, PkgData pkgData, long count, long totalPackages) {
|
||||
if (Queries.countPackagesByHash(em, pkgData.getMd5sum()).getSingleResult() == 0) {
|
||||
Queries.getPackageByFileName(em, pkgData.getFileName())
|
||||
.getResultList()
|
||||
.forEach(p -> deletePkgData(em, p));
|
||||
em.persist(pkgData);
|
||||
em.persist(parser.hydrateJPA(pkgData));
|
||||
logger.info("({}/{}) Persisting package {}", count, totalPackages, pkgData.getFileName());
|
||||
}
|
||||
}
|
||||
@@ -231,7 +239,7 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
|
||||
@Override
|
||||
public List<PkgData> searchByHash(@Nonnull String hash) {
|
||||
return Queries.searchPackagesByHash(em, hash).getResultList();
|
||||
return Queries.searchPackagesByHash(em, Hash.hexToBytes(hash)).getResultList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -241,7 +249,9 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
|
||||
@Override
|
||||
public List<String> listHashes() {
|
||||
return Queries.listHashes(em).getResultList();
|
||||
return Queries.listHashes(em)
|
||||
.getResultStream().map(JWO::bytesToHex)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -278,8 +288,7 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
PkgId pkgId = tuple.get(0, PkgId.class);
|
||||
String filename = tuple.get(1, String.class);
|
||||
long size = tuple.get(2, Long.class);
|
||||
String md5sum = tuple.get(3, String.class);
|
||||
;
|
||||
String md5sum = JWO.bytesToHex(tuple.get(3, byte[].class));
|
||||
PkgTuple pkgTuple = new PkgTuple();
|
||||
pkgTuple.setFileName(filename);
|
||||
pkgTuple.setSize(size);
|
||||
@@ -296,22 +305,26 @@ public class PacmanServiceEJB implements PacmanServiceLocal {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PkgData getPackage(PkgId pkgId) {
|
||||
return em.find(PkgData.class, pkgId);
|
||||
public Optional<PkgData> getPackage(PkgId pkgId) {
|
||||
var query = Queries.getPackageById(em, pkgId);
|
||||
query.setMaxResults(1);
|
||||
return Optional.of(query.getResultList())
|
||||
.filter(not(List::isEmpty))
|
||||
.map(l -> l.get(0));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public boolean addPackage(String fileName, InputStream input) {
|
||||
java.nio.file.Path file = Files.createTempFile(ctx.getRepoFolder(), fileName, null);
|
||||
List<PkgData> savedFiles = searchByFileName(fileName);
|
||||
if (savedFiles.size() > 0) return false;
|
||||
if (!savedFiles.isEmpty()) return false;
|
||||
else {
|
||||
try (OutputStream output = Files.newOutputStream(file)) {
|
||||
JWO.copy(input, output, 0x10000);
|
||||
PkgData pkg = PkgDataImpl.parseFile(file,
|
||||
PkgData pkg = PkgDataParser.parseFile(file,
|
||||
CompressionFormatImpl.guess(Paths.get(fileName)));
|
||||
pkg.setFileName(fileName);
|
||||
Optional.ofNullable(em.find(PkgData.class, pkg.getId())).ifPresent((Con<PkgData>) (pkgData -> {
|
||||
getPackage(pkg.getPkgId()).ifPresent((Con<PkgData>) (pkgData -> {
|
||||
em.remove(pkgData);
|
||||
Files.delete(ctx.getRepoFolder().resolve(pkgData.getFileName()));
|
||||
}));
|
||||
|
@@ -39,6 +39,7 @@ import net.woggioni.jpacrepo.api.model.PkgId;
|
||||
import net.woggioni.jpacrepo.api.security.Roles;
|
||||
import net.woggioni.jpacrepo.api.service.PacmanServiceLocal;
|
||||
import net.woggioni.jpacrepo.api.wire.PkgDataList;
|
||||
import net.woggioni.jpacrepo.api.wire.PkgIdList;
|
||||
import net.woggioni.jpacrepo.api.wire.PkgTuple;
|
||||
import net.woggioni.jpacrepo.api.wire.StringList;
|
||||
import net.woggioni.jpacrepo.config.AppConfig;
|
||||
@@ -121,7 +122,9 @@ public class PacmanWebService {
|
||||
@QueryParam("arch") String arch,
|
||||
@QueryParam("compressionFormat") CompressionFormat compressionFormat
|
||||
) {
|
||||
return Response.ok(service.searchPkgId(name, version, arch, compressionFormat)).build();
|
||||
return Response.ok(
|
||||
new PkgIdList(service.searchPkgId(name, version, arch, compressionFormat))
|
||||
).build();
|
||||
}
|
||||
|
||||
@GET
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package net.woggioni.jpacrepo.service.jpa;
|
||||
|
||||
import jakarta.persistence.EntityGraph;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.Tuple;
|
||||
import jakarta.persistence.TypedQuery;
|
||||
@@ -26,6 +27,7 @@ import java.util.Optional;
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class Queries {
|
||||
private static final String ENTITY_GRAPH_PROPERTY = "jakarta.persistence.fetchgraph";
|
||||
private interface PredicateSupplier<T> {
|
||||
Predicate get(CriteriaBuilder cb, Root<T> root);
|
||||
}
|
||||
@@ -47,7 +49,9 @@ public class Queries {
|
||||
Root<PkgData> root = criteriaQuery.from(entity);
|
||||
Predicate predicate = cb.equal(root.get(PkgData_.fileName), fileName);
|
||||
criteriaQuery.select(root).where(predicate);
|
||||
return em.createQuery(criteriaQuery);
|
||||
var query = em.createQuery(criteriaQuery);
|
||||
query.setHint(ENTITY_GRAPH_PROPERTY, getPkgDataEntityGraph(em));
|
||||
return query;
|
||||
}
|
||||
|
||||
public static TypedQuery<Instant> getUpdateTimestampByFileName(EntityManager em, String fileName) {
|
||||
@@ -72,7 +76,7 @@ public class Queries {
|
||||
Root<PkgData> pkgDataRoot = criteriaQuery.from(entity);
|
||||
Subquery<String> subQuery = criteriaQuery.subquery(String.class);
|
||||
Root<PkgData> pkgDataRootSub = subQuery.from(entity);
|
||||
Path<PkgId> pkgIdPathSub = pkgDataRootSub.get(PkgData_.id);
|
||||
Path<PkgId> pkgIdPathSub = pkgDataRootSub.get(PkgData_.pkgId);
|
||||
Predicate havingPredicate = cb.greaterThan(cb.count(
|
||||
pkgIdPathSub.get(PkgId_.version)), minNumberOfDifferentVersions);
|
||||
subQuery.select(pkgIdPathSub.get(PkgId_.name))
|
||||
@@ -82,7 +86,7 @@ public class Queries {
|
||||
).having(havingPredicate);
|
||||
Predicate predicate = cb.and(
|
||||
cb.lessThan(pkgDataRoot.get(PkgData_.buildDate), cutoff),
|
||||
pkgDataRoot.get(PkgData_.id).get(PkgId_.name).in(subQuery.getSelection())
|
||||
pkgDataRoot.get(PkgData_.pkgId).get(PkgId_.name).in(subQuery.getSelection())
|
||||
);
|
||||
criteriaQuery.select(pkgDataRoot.get(PkgData_.fileName))
|
||||
.where(predicate)
|
||||
@@ -90,7 +94,7 @@ public class Queries {
|
||||
return em.createQuery(criteriaQuery);
|
||||
}
|
||||
|
||||
public static TypedQuery<Long> countPackagesByHash(EntityManager em, String hash) {
|
||||
public static TypedQuery<Long> countPackagesByHash(EntityManager em, byte[] hash) {
|
||||
CriteriaBuilder cb = em.getCriteriaBuilder();
|
||||
CriteriaQuery<Long> criteriaQuery = cb.createQuery(Long.class);
|
||||
Metamodel metamodel = em.getMetamodel();
|
||||
@@ -109,10 +113,12 @@ public class Queries {
|
||||
EntityType<PkgData> entity = metamodel.entity(PkgData.class);
|
||||
Root<PkgData> pkgDataRoot = criteriaQuery.from(entity);
|
||||
criteriaQuery.select(pkgDataRoot).where(predicateSupplier.get(cb, pkgDataRoot));
|
||||
return em.createQuery(criteriaQuery);
|
||||
var query = em.createQuery(criteriaQuery);
|
||||
query.setHint(ENTITY_GRAPH_PROPERTY, getPkgDataEntityGraph(em));
|
||||
return query;
|
||||
}
|
||||
|
||||
public static TypedQuery<PkgData> searchPackagesByHash(EntityManager em, String hash) {
|
||||
public static TypedQuery<PkgData> searchPackagesByHash(EntityManager em, byte[] hash) {
|
||||
return searchPackagesByPredicate(em, (cb, root) -> cb.equal(root.get(PkgData_.md5sum), hash));
|
||||
}
|
||||
|
||||
@@ -131,13 +137,28 @@ public class Queries {
|
||||
return em.createQuery(criteriaQuery);
|
||||
}
|
||||
|
||||
public static TypedQuery<PkgData> getPackageById(EntityManager em, PkgId pkgId) {
|
||||
var cb = em.getCriteriaBuilder();
|
||||
var cq = cb.createQuery(PkgData.class);
|
||||
var root = cq.from(PkgData_.class_);
|
||||
cq.select(root).where(
|
||||
cb.equal(
|
||||
root.get(PkgData_.pkgId),
|
||||
pkgId
|
||||
)
|
||||
);
|
||||
var query = em.createQuery(cq);
|
||||
query.setHint(ENTITY_GRAPH_PROPERTY, getPkgDataEntityGraph(em));
|
||||
return query;
|
||||
}
|
||||
|
||||
public static TypedQuery<String> searchPackageName(EntityManager em, String needle) {
|
||||
CriteriaBuilder cb = em.getCriteriaBuilder();
|
||||
CriteriaQuery<String> criteriaQuery = cb.createQuery(String.class);
|
||||
Metamodel metamodel = em.getMetamodel();
|
||||
EntityType<PkgData> entity = metamodel.entity(PkgData.class);
|
||||
Root<PkgData> root = criteriaQuery.from(entity);
|
||||
Path<PkgId> pkgIdPath = root.get(PkgData_.id);
|
||||
Path<PkgId> pkgIdPath = root.get(PkgData_.pkgId);
|
||||
Predicate predicate = cb.like(
|
||||
cb.lower(pkgIdPath.get(PkgId_.name)),
|
||||
"%%" + needle + "%%"
|
||||
@@ -159,9 +180,9 @@ public class Queries {
|
||||
return em.createQuery(criteriaQuery);
|
||||
}
|
||||
|
||||
public static TypedQuery<String> listHashes(EntityManager em) {
|
||||
public static TypedQuery<byte[]> listHashes(EntityManager em) {
|
||||
CriteriaBuilder cb = em.getCriteriaBuilder();
|
||||
CriteriaQuery<String> criteriaQuery = cb.createQuery(String.class);
|
||||
CriteriaQuery<byte[]> criteriaQuery = cb.createQuery(byte[].class);
|
||||
Metamodel metamodel = em.getMetamodel();
|
||||
EntityType<PkgData> entity = metamodel.entity(PkgData.class);
|
||||
Root<PkgData> root = criteriaQuery.from(entity);
|
||||
@@ -180,7 +201,7 @@ public class Queries {
|
||||
Metamodel metamodel = em.getMetamodel();
|
||||
EntityType<PkgData> entity = metamodel.entity(PkgData.class);
|
||||
Root<PkgData> root = criteriaQuery.from(entity);
|
||||
Path<PkgId> pkgIdRoot = root.get(PkgData_.id);
|
||||
Path<PkgId> pkgIdRoot = root.get(PkgData_.pkgId);
|
||||
Predicate[] predicates = JWO.streamCat(
|
||||
Optional.ofNullable(name)
|
||||
.map(it -> cb.equal(pkgIdRoot.get(PkgId_.name), it)).stream(),
|
||||
@@ -219,7 +240,7 @@ public class Queries {
|
||||
Metamodel metamodel = em.getMetamodel();
|
||||
EntityType<PkgData> entity = metamodel.entity(PkgData.class);
|
||||
Root<PkgData> root = criteriaQuery.from(entity);
|
||||
Path<PkgId> idPath = root.get(PkgData_.id);
|
||||
Path<PkgId> idPath = root.get(PkgData_.pkgId);
|
||||
criteriaQuery.multiselect(
|
||||
idPath,
|
||||
root.get(PkgData_.fileName),
|
||||
@@ -244,7 +265,7 @@ public class Queries {
|
||||
CriteriaBuilder builder = em.getCriteriaBuilder();
|
||||
criteriaQuery = builder.createQuery(PkgData.class);
|
||||
Root<PkgData> entity = criteriaQuery.from(PkgData.class);
|
||||
Path<PkgId> pkgIdPath = entity.get(PkgData_.id);
|
||||
Path<PkgId> pkgIdPath = entity.get(PkgData_.pkgId);
|
||||
Predicate predicate = builder.and(JWO.streamCat(
|
||||
JWO.optional2Stream(
|
||||
Optional.ofNullable(name)
|
||||
@@ -275,7 +296,25 @@ public class Queries {
|
||||
builder.asc(pkgIdPath.get(PkgId_.compressionFormat)),
|
||||
builder.asc(entity.get(PkgData_.fileName))
|
||||
);
|
||||
return em.createQuery(criteriaQuery);
|
||||
var query = em.createQuery(criteriaQuery);
|
||||
query.setHint(ENTITY_GRAPH_PROPERTY, getPkgDataEntityGraph(em));
|
||||
return query;
|
||||
}
|
||||
|
||||
private static EntityGraph<PkgData> getPkgDataEntityGraph(EntityManager em) {
|
||||
var graph = em.createEntityGraph(PkgData.class);
|
||||
graph.addAttributeNodes(PkgData_.base);
|
||||
graph.addAttributeNodes(PkgData_.packager);
|
||||
graph.addAttributeNodes(PkgData_.license);
|
||||
graph.addSubgraph(PkgData_.depend);
|
||||
graph.addSubgraph(PkgData_.backup);
|
||||
graph.addSubgraph(PkgData_.conflict);
|
||||
graph.addSubgraph(PkgData_.replaces);
|
||||
graph.addSubgraph(PkgData_.makedepend);
|
||||
graph.addSubgraph(PkgData_.makepkgopt);
|
||||
graph.addSubgraph(PkgData_.optdepend);
|
||||
graph.addSubgraph(PkgData_.provides);
|
||||
return graph;
|
||||
}
|
||||
|
||||
}
|
||||
|
243
src/main/resources/META-INF/liquibase/jpacrepo.xml
Normal file
243
src/main/resources/META-INF/liquibase/jpacrepo.xml
Normal file
@@ -0,0 +1,243 @@
|
||||
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
|
||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-1">
|
||||
<createTable tableName="pkgdata">
|
||||
<column name="compressionformat" type="SMALLINT"/>
|
||||
<column name="base_id" type="BIGINT"/>
|
||||
<column name="builddate" type="TIMESTAMP WITH TIME ZONE"/>
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_pkey"/>
|
||||
</column>
|
||||
<column name="packager_id" type="BIGINT"/>
|
||||
<column name="size" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="updtimestamp" type="TIMESTAMP WITH TIME ZONE"/>
|
||||
<column name="arch" type="VARCHAR(16)"/>
|
||||
<column name="md5sum" type="BYTEA"/>
|
||||
<column name="version" type="VARCHAR(64)"/>
|
||||
<column name="name" type="VARCHAR(64)"/>
|
||||
<column name="description" type="VARCHAR(1024)"/>
|
||||
<column name="filename" type="VARCHAR(1024)"/>
|
||||
<column name="url" type="VARCHAR(1024)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-2">
|
||||
<createTable tableName="dependency">
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="dependency_pkey"/>
|
||||
</column>
|
||||
<column name="name" type="VARCHAR(1024)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-3">
|
||||
<createTable tableName="license">
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="license_pkey"/>
|
||||
</column>
|
||||
<column name="name" type="VARCHAR(1024)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-4">
|
||||
<createTable tableName="packager">
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="packager_pkey"/>
|
||||
</column>
|
||||
<column name="name" type="VARCHAR(1024)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-5">
|
||||
<createTable tableName="pkgbase">
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgbase_pkey"/>
|
||||
</column>
|
||||
<column name="name" type="VARCHAR(1024)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-6">
|
||||
<addUniqueConstraint columnNames="filename" constraintName="pkgdata_filename_key" tableName="pkgdata"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-7">
|
||||
<addUniqueConstraint columnNames="md5sum" constraintName="pkgdata_md5sum_key" tableName="pkgdata"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-8">
|
||||
<addUniqueConstraint columnNames="name, version, arch, compressionformat" constraintName="pkgdata_name_version_arch_compressionformat_key" tableName="pkgdata"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-9">
|
||||
<addUniqueConstraint columnNames="name" constraintName="dependency_name_key" tableName="dependency"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-10">
|
||||
<addUniqueConstraint columnNames="name" constraintName="license_name_key" tableName="license"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-11">
|
||||
<addUniqueConstraint columnNames="name" constraintName="packager_name_key" tableName="packager"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-12">
|
||||
<addUniqueConstraint columnNames="name" constraintName="pkgbase_name_key" tableName="pkgbase"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-13">
|
||||
<createSequence cacheSize="1" cycle="false" dataType="bigint" incrementBy="50" maxValue="9223372036854775807" minValue="1" sequenceName="dependency_seq" startValue="1"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-14">
|
||||
<createSequence cacheSize="1" cycle="false" dataType="bigint" incrementBy="50" maxValue="9223372036854775807" minValue="1" sequenceName="license_seq" startValue="1"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-15">
|
||||
<createSequence cacheSize="1" cycle="false" dataType="bigint" incrementBy="50" maxValue="9223372036854775807" minValue="1" sequenceName="packager_seq" startValue="1"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-16">
|
||||
<createSequence cacheSize="1" cycle="false" dataType="bigint" incrementBy="50" maxValue="9223372036854775807" minValue="1" sequenceName="pkgbase_seq" startValue="1"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-17">
|
||||
<createSequence cacheSize="1" cycle="false" dataType="bigint" incrementBy="50" maxValue="9223372036854775807" minValue="1" sequenceName="pkgdata_seq" startValue="1"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-18">
|
||||
<createTable tableName="pkgdata_backup">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_backup_pkey"/>
|
||||
</column>
|
||||
<column name="backup_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_backup_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-19">
|
||||
<createTable tableName="pkgdata_conflict">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_conflict_pkey"/>
|
||||
</column>
|
||||
<column name="conflict_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_conflict_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-20">
|
||||
<createTable tableName="pkgdata_depend">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_depend_pkey"/>
|
||||
</column>
|
||||
<column name="depend_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_depend_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-21">
|
||||
<createTable tableName="pkgdata_license">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_license_pkey"/>
|
||||
</column>
|
||||
<column name="license_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_license_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-22">
|
||||
<createTable tableName="pkgdata_makedepend">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_makedepend_pkey"/>
|
||||
</column>
|
||||
<column name="makedepend_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_makedepend_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-23">
|
||||
<createTable tableName="pkgdata_makepkgopt">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_makepkgopt_pkey"/>
|
||||
</column>
|
||||
<column name="makepkgopt_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_makepkgopt_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-24">
|
||||
<createTable tableName="pkgdata_optdepend">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_optdepend_pkey"/>
|
||||
</column>
|
||||
<column name="optdepend_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_optdepend_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-25">
|
||||
<createTable tableName="pkgdata_provides">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_provides_pkey"/>
|
||||
</column>
|
||||
<column name="provides_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_provides_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-26">
|
||||
<createTable tableName="pkgdata_replaces">
|
||||
<column name="pkgdata_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_replaces_pkey"/>
|
||||
</column>
|
||||
<column name="replaces_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pkgdata_replaces_pkey"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-27">
|
||||
<addForeignKeyConstraint baseColumnNames="conflict_id" baseTableName="pkgdata_conflict" constraintName="fk24nqbo323snpnlwweh6im6r9b" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-28">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_makedepend" constraintName="fk429xi3idno5yap1nlivrnpy06" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-29">
|
||||
<addForeignKeyConstraint baseColumnNames="optdepend_id" baseTableName="pkgdata_optdepend" constraintName="fk4ura4v2u5x16yp8ok6bfvxr4h" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-30">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_provides" constraintName="fk656rbinf6abvk4f982q21i68o" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-31">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_conflict" constraintName="fk6et6auii880vcyo8cod6gndsy" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-32">
|
||||
<addForeignKeyConstraint baseColumnNames="backup_id" baseTableName="pkgdata_backup" constraintName="fk6hvpvdhjlyi4qsoyiw4lksae5" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-33">
|
||||
<addForeignKeyConstraint baseColumnNames="depend_id" baseTableName="pkgdata_depend" constraintName="fkai19aek8k3vau0k15td18uc6h" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-34">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_depend" constraintName="fkci76y22x9o3ytakt6adnc6d8v" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-35">
|
||||
<addForeignKeyConstraint baseColumnNames="base_id" baseTableName="pkgdata" constraintName="fkdbglulawmrf5eanlxpic0370j" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgbase" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-36">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_license" constraintName="fkfbcetjtq920birmewjayj99fd" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-37">
|
||||
<addForeignKeyConstraint baseColumnNames="provides_id" baseTableName="pkgdata_provides" constraintName="fkgcrqlwrv05rh1hcsi56xgkanm" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-38">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_backup" constraintName="fkgiq44wme1akcpdhm2eg3vfp0f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-39">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_optdepend" constraintName="fkkdgyxf9lhh7q5cwytdi9hpdt5" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-40">
|
||||
<addForeignKeyConstraint baseColumnNames="license_id" baseTableName="pkgdata_license" constraintName="fkktcugf8cborm40b75wsupd3lf" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="license" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-41">
|
||||
<addForeignKeyConstraint baseColumnNames="packager_id" baseTableName="pkgdata" constraintName="fko3oqleprd36mpslc484783ud4" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="packager" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-42">
|
||||
<addForeignKeyConstraint baseColumnNames="replaces_id" baseTableName="pkgdata_replaces" constraintName="fko7yscxwbb0der580pxqgtkovs" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-43">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_replaces" constraintName="fkqf9a43r0tdhns382ak386bdnr" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-44">
|
||||
<addForeignKeyConstraint baseColumnNames="makepkgopt_id" baseTableName="pkgdata_makepkgopt" constraintName="fkr4wcod9vkiyhey261g6k8f4g6" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-45">
|
||||
<addForeignKeyConstraint baseColumnNames="pkgdata_id" baseTableName="pkgdata_makepkgopt" constraintName="fks6qck7ato6bnv3okee3461lx6" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="pkgdata" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Walter Oggioni <oggioni.walter@gmail.com>" id="1707439864675-46">
|
||||
<addForeignKeyConstraint baseColumnNames="makedepend_id" baseTableName="pkgdata_makedepend" constraintName="fktkj1w12dtv5fqykgwvvnpwgo" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="dependency" validate="true"/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
@@ -5,12 +5,18 @@
|
||||
version="2.1">
|
||||
|
||||
<persistence-unit name="jpacrepo_pu" transaction-type="JTA">
|
||||
<class>net.woggioni.jpacrepo.api.model.PkgData</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.PkgId</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.PkgData</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.License</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.PkgBase</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.Dependency</class>
|
||||
<class>net.woggioni.jpacrepo.api.model.Packager</class>
|
||||
<exclude-unlisted-classes>true</exclude-unlisted-classes>
|
||||
|
||||
<properties>
|
||||
<property name="org.jboss.logging.provider" value="log4j2"/>
|
||||
<property name="jakarta.persistence.schema-generation.database.action"
|
||||
value="none"/>
|
||||
<property name="jakarta.persistence.schema-generation.create-source" value="script-then-metadata"/>
|
||||
<property name="jakarta.persistence.schema-generation.create-script-source"
|
||||
value="META-INF/sql/CreateSchema.sql"/>
|
||||
@@ -18,7 +24,31 @@
|
||||
<property name="jakarta.persistence.schema-generation.drop-script-source"
|
||||
value="META-INF/sql/DropSchema.sql"/>
|
||||
<property name="hibernate.default_schema" value="jpacrepo"/>
|
||||
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
|
||||
</properties>
|
||||
</persistence-unit>
|
||||
|
||||
<!-- <persistence-unit name="squirrel_sql" transaction-type="RESOURCE_LOCAL">-->
|
||||
<!-- <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>-->
|
||||
<!-- <class>net.woggioni.jpacrepo.api.model.PkgData</class>-->
|
||||
<!-- <class>net.woggioni.jpacrepo.api.model.PkgId</class>-->
|
||||
<!-- <exclude-unlisted-classes>true</exclude-unlisted-classes>-->
|
||||
|
||||
<!-- <properties>-->
|
||||
<!-- <property name="org.jboss.logging.provider" value="log4j2"/>-->
|
||||
<!-- <property name="jakarta.persistence.schema-generation.create-source" value="script-then-metadata"/>-->
|
||||
<!-- <property name="jakarta.persistence.schema-generation.create-script-source"-->
|
||||
<!-- value="META-INF/sql/CreateSchema.sql"/>-->
|
||||
<!-- <property name="jakarta.persistence.schema-generation.drop-source" value="metadata-then-script"/>-->
|
||||
<!-- <property name="jakarta.persistence.schema-generation.drop-script-source"-->
|
||||
<!-- value="META-INF/sql/DropSchema.sql"/>-->
|
||||
<!-- <property name="hibernate.default_schema" value="jpacrepo"/>-->
|
||||
<!-- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>-->
|
||||
<!-- <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />-->
|
||||
<!-- <property name="javax.persistence.jdbc.url" value="jdbc:postgresql:wildfly?readOnly=true" />-->
|
||||
<!-- <property name="javax.persistence.jdbc.user" value="wildfly" />-->
|
||||
<!-- <property name="hibernate.jdbc.fetch_size" value="20"/>-->
|
||||
<!-- <property name="hibernate.default_batch_fetch_size" value="20"/>-->
|
||||
<!--<!– <property name="javax.persistence.jdbc.password" value="databasePassword" />–>-->
|
||||
<!-- </properties>-->
|
||||
<!-- </persistence-unit>-->
|
||||
</persistence>
|
||||
|
@@ -12,7 +12,7 @@ import lombok.SneakyThrows;
|
||||
import net.woggioni.jpacrepo.api.model.PkgData;
|
||||
import net.woggioni.jpacrepo.api.service.PacmanServiceRemote;
|
||||
import net.woggioni.jpacrepo.impl.model.CompressionFormatImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataParser;
|
||||
import net.woggioni.jwo.Con;
|
||||
import net.woggioni.jwo.Hash;
|
||||
import net.woggioni.jwo.JWO;
|
||||
@@ -98,7 +98,7 @@ public class ClientTest {
|
||||
try(InputStream is = Files.newInputStream(tmpFile)) {
|
||||
hash = Hash.md5(is);
|
||||
}
|
||||
PkgData p = PkgDataImpl.parseFile(tmpFile, CompressionFormatImpl.guess(tmpFile));
|
||||
PkgData p = PkgDataParser.parseFile(tmpFile, CompressionFormatImpl.guess(tmpFile));
|
||||
Assertions.assertEquals(JWO.bytesToHex(hash.getBytes()), p.getMd5sum());
|
||||
});
|
||||
}
|
||||
@@ -124,8 +124,8 @@ public class ClientTest {
|
||||
prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
|
||||
|
||||
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
|
||||
prop.put(Context.PROVIDER_URL, "http-remoting://localhost:7080");
|
||||
// prop.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
|
||||
// prop.put(Context.PROVIDER_URL, "http-remoting://localhost:1234");
|
||||
prop.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
|
||||
// prop.put(Context.PROVIDER_URL, "remote://odroid-u3:4447");
|
||||
prop.put(Context.SECURITY_PRINCIPAL, "walter");
|
||||
prop.put(Context.SECURITY_CREDENTIALS, "27ff5990757d1d");
|
||||
@@ -138,7 +138,7 @@ public class ClientTest {
|
||||
traverseJndiNode("/", context);
|
||||
// final PacmanService stateService = (PacmanService) ctx.lookup("/jpacrepo-1.0/remote/PacmanServiceEJB!service.PacmanService");
|
||||
final PacmanServiceRemote service = (PacmanServiceRemote) ctx.lookup(
|
||||
"/jpacrepo-2023.07/PacmanServiceEJB!net.woggioni.jpacrepo.api.service.PacmanServiceRemote"
|
||||
"/jpacrepo/PacmanServiceEJB!net.woggioni.jpacrepo.api.service.PacmanServiceRemote"
|
||||
);
|
||||
// List<PkgData> pkgs = service.searchPackage("google-earth", null, null, 1, 10);
|
||||
// System.out.println(new XStream().toXML(pkgs));
|
||||
|
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationModu
|
||||
import lombok.SneakyThrows;
|
||||
import net.woggioni.jpacrepo.api.model.PkgData;
|
||||
import net.woggioni.jpacrepo.impl.model.CompressionFormatImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataImpl;
|
||||
import net.woggioni.jpacrepo.impl.model.PkgDataParser;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
@@ -31,7 +31,7 @@ public class ParseTest {
|
||||
Files.list(Paths.get("/var/cache/pacman/pkg"))
|
||||
.filter(Files::isRegularFile)
|
||||
.filter(p -> pattern.matcher(p.getFileName().toString()).matches())
|
||||
.map(path -> PkgDataImpl.parseFile(path, CompressionFormatImpl.guess(path)))
|
||||
.map(path -> PkgDataParser.parseFile(path, CompressionFormatImpl.guess(path)))
|
||||
.limit(10)
|
||||
.map(new Function<PkgData, String>() {
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user