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

org.molgenis.data.mysql.MysqlRepositoryCollection Maven / Gradle / Ivy

The newest version!
package org.molgenis.data.mysql;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import org.molgenis.data.AttributeMetaData;
import org.molgenis.data.EntityMetaData;
import org.molgenis.data.ManageableRepositoryCollection;
import org.molgenis.data.Repository;
import org.molgenis.data.UnknownEntityException;

import com.google.common.base.Function;
import com.google.common.collect.Iterators;

public abstract class MysqlRepositoryCollection implements ManageableRepositoryCollection
{
	public static final String NAME = "MySQL";
	private final Map repositories = new LinkedHashMap<>();

	@Override
	public String getName()
	{
		return NAME;
	}

	@Override
	public Repository addEntityMeta(EntityMetaData entityMeta)
	{
		MysqlRepository repository = createMysqlRepository();
		repository.setMetaData(entityMeta);
		repository.create();
		repositories.put(entityMeta.getName(), repository);

		return repository;
	}

	@Override
	public Iterable getEntityNames()
	{
		return repositories.keySet();
	}

	@Override
	public Repository getRepository(String name)
	{
		return repositories.get(name);
	}

	@Override
	public Iterator iterator()
	{
		return Iterators.transform(repositories.values().iterator(), new Function()
		{
			@Override
			public Repository apply(MysqlRepository repo)
			{
				return repo;
			}
		});
	}

	@Override
	public void deleteEntityMeta(String entityName)
	{
		MysqlRepository repo = repositories.get(entityName);
		if (repo != null)
		{
			repo.drop();
			repositories.remove(entityName);
		}
	}

	@Override
	public void addAttribute(String entityName, AttributeMetaData attribute)
	{
		MysqlRepository repo = repositories.get(entityName);
		if (repo == null) throw new UnknownEntityException(String.format("Unknown entity '%s'", entityName));
		repo.addAttribute(attribute);
	}

	@Override
	public void deleteAttribute(String entityName, String attributeName)
	{
		MysqlRepository repo = repositories.get(entityName);
		if (repo == null) throw new UnknownEntityException(String.format("Unknown entity '%s'", entityName));
		repo.dropAttribute(attributeName);
	}

	@Override
	public void addAttributeSync(String entityName, AttributeMetaData attribute)
	{
		MysqlRepository repo = repositories.get(entityName);
		if (repo == null) throw new UnknownEntityException(String.format("Unknown entity '%s'", entityName));
		repo.addAttributeSync(attribute);
	}

	/**
	 * Return a spring managed prototype bean
	 */
	protected abstract MysqlRepository createMysqlRepository();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy