package org.rakam.analysis.metadata;
import com.google.common.eventbus.EventBus;
import org.rakam.collection.FieldDependencyBuilder.FieldDependency;
import org.rakam.collection.SchemaField;
import org.rakam.plugin.SystemEvents;
import org.rakam.plugin.SystemEvents.ProjectCreatedEvent;
import org.rakam.util.NotExistsException;
import org.rakam.util.RakamException;
import org.rakam.util.ValidationUtil;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST;
import static java.lang.String.format;
public abstract class AbstractMetastore
implements Metastore
{
private final EventBus eventBus;
public AbstractMetastore(EventBus eventBus)
{
this.eventBus = eventBus;
}
protected void onCreateProject(String project)
{
eventBus.post(new ProjectCreatedEvent(project));
}
protected void onDeleteProject(String project)
{
eventBus.post(new SystemEvents.ProjectDeletedEvent(project));
}
protected void onCreateCollection(String project, String collection, List<SchemaField> fields)
{
eventBus.post(new SystemEvents.CollectionCreatedEvent(project, collection, fields));
}
protected void onCreateCollectionField(String project, String collection, List<SchemaField> fields)
{
eventBus.post(new SystemEvents.CollectionFieldCreatedEvent(project, collection, fields));
}
@Override
public List<SchemaField> getOrCreateCollectionFieldList(String project, String collection, Set<SchemaField> fieldList)
throws NotExistsException
{
ValidationUtil.checkCollectionValid(collection);
return getOrCreateCollectionFields(project, collection, fieldList);
}
public abstract List<SchemaField> getOrCreateCollectionFields(String project, String collection, Set<SchemaField> fields);
@Override
public Map<String, Stats> getStats(Collection<String> projects)
{
return projects.stream().collect(Collectors.toMap(e -> e, e -> new Stats()));
}
}