package uk.ac.bbsrc.tgac.miso.core.service.naming;
import net.sourceforge.fluxion.spi.Spi;
import uk.ac.bbsrc.tgac.miso.core.exception.MisoNamingException;
/**
* uk.ac.bbsrc.tgac.miso.core.service.naming
* <p/>
* Info
*
* @author Rob Davey
* @date 29/08/12
* @since 0.1.7
*/
@Spi
public interface MisoNamingScheme<T> {
Class<T> namingSchemeFor();
String getSchemeName();
String generateNameFor(String field, T t) throws MisoNamingException;
void setValidationRegex(String fieldName, String validationRegex) throws MisoNamingException;
String getValidationRegex(String fieldName) throws MisoNamingException ;
boolean validateField(String fieldName, String entityName) throws MisoNamingException;
void registerCustomNameGenerator(String fieldName, NameGenerator<T> nameGenerator);
void unregisterCustomNameGenerator(String fieldName);
boolean allowDuplicateEntityNameFor(String fieldName);
void setAllowDuplicateEntityName(String fieldName, boolean allow);
}