CtanDatabaseBundles.java
/*
* Copyright © 2022-2025 The CTAN Team and individual authors
*
* This file is distributed under the 3-clause BSD license.
* See file LICENSE for details.
*/
package org.ctan.site;
import org.ctan.site.domain.account.Ticket;
import org.ctan.site.domain.account.User;
import org.ctan.site.domain.account.UserStopword;
import org.ctan.site.domain.archive.ArchiveFile;
import org.ctan.site.domain.archive.TexArchiveNotes;
import org.ctan.site.domain.catalogue.Author;
import org.ctan.site.domain.catalogue.AuthorEmail;
import org.ctan.site.domain.catalogue.AuthorRef;
import org.ctan.site.domain.catalogue.License;
import org.ctan.site.domain.catalogue.Pkg;
import org.ctan.site.domain.catalogue.PkgAlias;
import org.ctan.site.domain.catalogue.PkgCaption;
import org.ctan.site.domain.catalogue.PkgCopyright;
import org.ctan.site.domain.catalogue.PkgDescription;
import org.ctan.site.domain.catalogue.PkgDoc;
import org.ctan.site.domain.catalogue.Topic;
import org.ctan.site.domain.catalogue.TopicDetail;
import org.ctan.site.domain.catalogue.Upload;
import org.ctan.site.domain.catalogue.UploaderRef;
import org.ctan.site.domain.mirrors.ActiveMirror;
import org.ctan.site.domain.mirrors.Continents;
import org.ctan.site.domain.mirrors.Countries;
import org.ctan.site.domain.mirrors.MirrorRegistration;
import org.ctan.site.domain.mirrors.Mirrors;
import org.ctan.site.domain.mirrors.Status;
import org.ctan.site.domain.site.GuestBook;
import org.ctan.site.domain.site.Lug;
import org.ctan.site.domain.site.Message;
import org.ctan.site.domain.site.Stopword;
import org.ctan.site.domain.site.Vote;
import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.hibernate.HibernateBundle;
/**
* The class <code>CtanDatabaseBundles</code> contains the definition of the
* bundles for the database access.
*
* @author <a href="mailto:gene@ctan.org">Gerd Neugebauer</a>
*/
public final class CtanDatabaseBundles {
/**
* The field <code>SITE_DB_BUNDLE</code> contains the Hibernate bundle for
* the site database.
*/
public static final HibernateBundle<CtanConfiguration> SITE_DB_BUNDLE =
new HibernateBundle<CtanConfiguration>(
ActiveMirror.class,
ArchiveFile.class,
Author.class,
AuthorEmail.class,
AuthorRef.class,
GuestBook.class,
License.class,
Lug.class,
MirrorRegistration.class,
Message.class,
Pkg.class,
PkgAlias.class,
PkgCaption.class,
PkgCopyright.class,
PkgDescription.class,
PkgDoc.class,
Stopword.class,
TexArchiveNotes.class,
Ticket.class,
Topic.class,
TopicDetail.class,
Upload.class,
UploaderRef.class,
User.class,
UserStopword.class,
Vote.class) {
/**
* {@inheritDoc}
*
* @see io.dropwizard.db.DatabaseConfiguration#getDataSourceFactory(java.lang.Object)
*/
@Override
public DataSourceFactory getDataSourceFactory(
CtanConfiguration configuration) {
return configuration.getSiteDb();
}
/**
* {@inheritDoc}
*
* @see io.dropwizard.hibernate.HibernateBundle#name()
*/
@Override
protected String name() {
return "siteDb";
}
};
/**
* The field <code>MIRRORS_DB_BUNDLE</code> contains the Hibernate bundle
* for the mirrors database.
*/
public static final HibernateBundle<CtanConfiguration> MIRRORS_DB_BUNDLE =
new HibernateBundle<CtanConfiguration>(
Continents.class,
Countries.class,
Mirrors.class,
Status.class) {
/**
* {@inheritDoc}
*
* @see io.dropwizard.db.DatabaseConfiguration#getDataSourceFactory(java.lang.Object)
*/
@Override
public DataSourceFactory getDataSourceFactory(
CtanConfiguration configuration) {
return configuration.getMirrors();
}
/**
* {@inheritDoc}
*
* @see io.dropwizard.hibernate.HibernateBundle#name()
*/
@Override
protected String name() {
return "mirrors";
}
};
}