package org.hypergraphdb.type;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* <p>
* This class encapsulates startup configuration parameters for the HyperGraphDB
* type system. An instance of this class is provided in the top-level
* {@link HGConfiguration}
* </p>
*
* @author Borislav Iordanov
*
*/
public class HGTypeConfiguration
{
private HGTypeSchema<?> defaultSchema = new JavaTypeSchema();
private Map<String, HGTypeSchema<?>> schemas = new HashMap<String, HGTypeSchema<?>>();
public HGTypeConfiguration()
{
setDefaultSchema(defaultSchema);
}
public Collection<HGTypeSchema<?>> getSchemas()
{
return schemas.values();
}
/**
* <p>Return the instance responsible for creating HyperGraphDB type from Java classes.</p>
*/
@SuppressWarnings("unchecked")
public <T extends HGTypeSchema<?>> T getDefaultSchema()
{
return (T)this.defaultSchema;
}
/**
* <p>Specify the instance responsible for creating HyperGraphDB type from Java classes.</p>
*/
public void setDefaultSchema(HGTypeSchema<?> typeSchema)
{
this.defaultSchema = typeSchema;
schemas.put(typeSchema.getName(), typeSchema);
}
public void addSchema(HGTypeSchema<?>...schemas)
{
for (HGTypeSchema<?> s : schemas)
this.schemas.put(s.getName(), s);
}
@SuppressWarnings("unchecked")
public <T extends HGTypeSchema<?>> T getSchema(String name)
{
return (T)schemas.get(name);
}
}