All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.surati.gap.admin.module.AdminPlugin Maven / Gradle / Ivy

package io.surati.gap.admin.module;

import io.surati.gap.admin.base.db.AdminDemoDatabase;
import io.surati.gap.admin.base.db.AdminProdDatabase;
import io.surati.gap.admin.module.web.server.FkActions;
import io.surati.gap.admin.module.web.server.FkApi;
import io.surati.gap.admin.module.web.server.FkPages;
import io.surati.gap.commons.utils.pf4j.DatabaseSetup;
import io.surati.gap.commons.utils.pf4j.ModuleRegistration;
import io.surati.gap.commons.utils.pf4j.WebFront;
import javax.sql.DataSource;
import org.pf4j.Extension;
import org.pf4j.Plugin;
import org.pf4j.PluginWrapper;
import org.takes.facets.auth.Pass;
import org.takes.facets.fork.FkChain;
import org.takes.facets.fork.Fork;

public final class AdminPlugin extends Plugin {

    public AdminPlugin(final PluginWrapper wrapper) {
        super(wrapper);
    }

    @Override
    public void start() {
        System.out.println("Starting Administration plugin...");
    }

    @Override
    public void stop() {
        System.out.println("Stopping Administration plugin...");
    }

    @Override
    public void delete() {
        System.out.println("Deleting Administration plugin...");
    }

    @Extension
    public static final class AdminRegistration implements ModuleRegistration {

        @Override
        public void register() {
            AdminModule.setup();
        }
    }

    @Extension
    public static final class AdminDatabaseSetup implements DatabaseSetup {

        @Override
        public void migrate(final DataSource src, final boolean demo) {
            if (demo) {
                new AdminDemoDatabase(src);
            } else {
                new AdminProdDatabase(src);
            }
        }
    }

    @Extension
    public static final class AdminWebFront implements WebFront {

        @Override
        public Fork pages() {
            return new FkChain();
        }

        @Override
        public Fork pages(final DataSource src) {
            return new FkChain(
                new FkPages(src),
                new FkApi(src)
            );
        }

        @Override
        public Fork pages(final DataSource src, final Pass pass) {
            return new FkActions(src, pass);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy