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

au.net.causal.maven.plugins.boxdb.db.SqlServerFactory Maven / Gradle / Ivy

There is a newer version: 3.3
Show newest version
package au.net.causal.maven.plugins.boxdb.db;

import au.net.causal.maven.plugins.boxdb.vagrant.Vagrant;

import java.io.IOException;
import java.net.URL;
import java.nio.file.Path;

public class SqlServerFactory extends VagrantDatabaseFactory
{
    public SqlServerFactory()
    {
        super("sqlserver");
    }

    @Override
    protected void initializeDefaults(BoxConfiguration boxConfiguration)
    {
        boxConfiguration.setDatabaseVersion("2014");

        super.initializeDefaults(boxConfiguration);

        //Port is hardcoded
        boxConfiguration.setDatabasePort(1433);

        //DB admin credentials are hardcoded
        boxConfiguration.setAdminUser("vagrant");
        boxConfiguration.setAdminPassword("vagrant");

        //If database user/password are not configured then make sensible defaults
        if (boxConfiguration.getDatabaseUser() == null)
            boxConfiguration.setDatabaseUser(boxConfiguration.getDatabaseName());
        if (boxConfiguration.getDatabasePassword() == null)
            boxConfiguration.setDatabasePassword(boxConfiguration.getDatabaseUser());
    }

    @Override
    protected VagrantDatabase createVagrantDatabase(Vagrant vagrant,
                                                    Path baseDirectory, Path vagrantFile,
                                                    BoxConfiguration boxConfiguration,
                                                    ProjectConfiguration projectConfiguration,
                                                    BoxContext context)
    throws BoxDatabaseException, IOException
    {
        verifyAndInstallVagrantPluginIfNeeded("vagrant-vbguest", vagrant, context);

        //Extract additional resources
        Path scriptsVagrantfile = baseDirectory.resolve("Vagrantfile-scripts");
        Path sqlVagrantfile = baseDirectory.resolve("Vagrantfile-sql");
        copyResource(resource("initdb.sql"), baseDirectory.resolve("initdb.sql"));
        copyResource(resource("Vagrantfile-scripts"), scriptsVagrantfile);
        copyResource(resource("Vagrantfile-sql"), sqlVagrantfile);

        return new SqlServerDatabase(boxConfiguration, projectConfiguration, context, vagrant, baseDirectory,
                    vagrantFile, scriptsVagrantfile, sqlVagrantfile);
    }

    @Override
    protected URL vagrantFileResource() throws IOException
    {
        return resource("Vagrantfile");
    }

    private URL resource(String name)
    {
        return SqlServerFactory.class.getResource("sqlserver/" + name);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy