package org.molgenis.data.platform.decorators;
import org.molgenis.data.Entity;
import org.molgenis.data.Repository;
import org.molgenis.data.RepositoryDecoratorFactory;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class RepositoryDecoratorRegistry
{
private final Map<String, RepositoryDecoratorFactory> factories = new HashMap<>();
public synchronized void addFactory(String entityName, RepositoryDecoratorFactory factory)
{
factories.put(entityName, factory);
}
public synchronized Repository<Entity> decorate(Repository<Entity> repository)
{
RepositoryDecoratorFactory factory = factories.get(repository.getName());
if (factory != null)
{
return factory.createDecoratedRepository(repository);
}
return repository;
}
}