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

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

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

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;

public abstract class FileBasedDatabaseFactory implements BoxDatabaseFactory
{
	private final String name;

	protected FileBasedDatabaseFactory(String name)
	{
		Objects.requireNonNull(name, "name == null");
		this.name = name;
	}

	@Override
	public String name()
	{
		return name;
	}

	protected void initializeDefaults(BoxConfiguration boxConfiguration, ProjectConfiguration projectConfiguration, BoxContext context)
	throws BoxDatabaseException
	{
		if (boxConfiguration.getDatabaseName() == null)
			boxConfiguration.setDatabaseName("app");
		if (boxConfiguration.getContainerName() == null)
			boxConfiguration.setContainerName(boxConfiguration.getDatabaseName());
		if (boxConfiguration.getAdminUser() == null)
			boxConfiguration.setAdminUser(boxConfiguration.getDatabaseName());
		if (boxConfiguration.getAdminPassword() == null)
			boxConfiguration.setAdminPassword(boxConfiguration.getAdminUser());
		if (boxConfiguration.getDatabaseUser() == null)
			boxConfiguration.setDatabaseUser(boxConfiguration.getAdminUser());
		if (boxConfiguration.getDatabasePassword() == null)
			boxConfiguration.setDatabasePassword(boxConfiguration.getAdminPassword());
		try
		{
			if (boxConfiguration.getDatabaseFile() == null)
				boxConfiguration.setDatabaseFile(databaseHome(boxConfiguration, projectConfiguration, context));
		}
		catch (IOException e)
		{
			throw new BoxDatabaseException("Error initializing database home directory: " + e, e);
		}
	}

	protected Path databaseHome(BoxConfiguration boxConfiguration, ProjectConfiguration projectConfiguration, BoxContext context)
	throws IOException
	{
		Path home;
		boolean projectExists = (projectConfiguration != null &&
				projectConfiguration.getProject() != null &&
				projectConfiguration.getProject().getFile() != null &&
				projectConfiguration.getProject().getFile().exists() &&
				projectConfiguration.getProject().getBuild() != null &&
				projectConfiguration.getProject().getBuild().getDirectory() != null);

		if (!projectExists)
			home = context.getGlobalConfigDirectory().resolve(name()).resolve(boxConfiguration.getContainerName());
		else
		{
			String buildDir = projectConfiguration.getProject().getBuild().getDirectory();
			home = Paths.get(buildDir).resolve(name()).resolve(boxConfiguration.getContainerName());
		}

		return home;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy