// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/exception/AutoIDException.java
// public class AutoIDException extends Exception{
// 
//     public AutoIDException(String s) {
//         super(s);
//     }
// }
// 
// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/model/AutoIDGenerator.java
// public interface AutoIDGenerator {
// 
//     String getNextID(Class<? extends OWLEntity> type) throws AutoIDException;
//     void setEntityPrefs(EntityCreation entitiesPrefs);  
//     EntityCreation getEntitiesPrefs ();
// 
//     void initialise();
// }
// 
// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/model/EntityCreation.java
// public interface EntityCreation {
// 
//     URI getDefaultBaseURI() ;
// 
// 
//     boolean useDefaultBaseURI();
// 
// 
//     String getDefaultSeparator();
// 
// 
//     Class<? extends AutoIDGenerator> getAutoIDGeneratorClass();
// 
// 
//     String getAutoIDGeneratorName();
// 
// 
//     String getPrefix();
// 
// 
//     String getSuffix();
// 
// 
//     int getAutoIDDigitCount();
// 
// 
//     int getAutoIDStart();
// 
// 
//     int getAutoIDEnd();
// 
// 
//     boolean isFragmentAutoGenerated();
// 
// 
//     boolean isGenerateNameLabel();
// 
// 
//     URI getNameLabelURI() ;
// 
// 
//     String getNameLabelLang();
// 
// 
//     boolean isGenerateIDLabel();
// 
// 
//     Class<? extends LabelDescriptor> getLabelDescriptorClass() ;
// 
// 
// 
// }


import org.semanticweb.owlapi.model.OWLEntity;
import uk.ac.ebi.spot.webulous.exception.AutoIDException;
import uk.ac.ebi.spot.webulous.model.AutoIDGenerator;
import uk.ac.ebi.spot.webulous.model.EntityCreation;
import java.text.FieldPosition;
import java.text.NumberFormat;

    protected String getPrefix(Class<? extends OWLEntity> type){
        String prefix = entitiesPrefs.getPrefix();
        return preprocess(prefix, type);
    }


    protected String getSuffix(Class<? extends OWLEntity> type){
        String suffix = entitiesPrefs.getSuffix();
        return preprocess(suffix, type);
    }


    protected String preprocess(String s, Class<? extends OWLEntity> type) {
        s = s.replaceAll(START_MACRO + "user" + END_MACRO, System.getProperty("user.name", "no_one"));
        s = s.replaceAll(START_MACRO + "type" + END_MACRO, type.getSimpleName());
        return s;
    }


    protected int getDigitLength(){
        return entitiesPrefs.getAutoIDDigitCount();
    }


    private String pad(long l, int padding) {
        StringBuffer sb = new StringBuffer();
        NumberFormat format = NumberFormat.getInstance();
        format.setMaximumFractionDigits(0);
        format.setMinimumIntegerDigits(padding);
// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/exception/AutoIDException.java
// public class AutoIDException extends Exception{
// 
//     public AutoIDException(String s) {
//         super(s);
//     }
// }
// 
// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/model/AutoIDGenerator.java
// public interface AutoIDGenerator {
// 
//     String getNextID(Class<? extends OWLEntity> type) throws AutoIDException;
//     void setEntityPrefs(EntityCreation entitiesPrefs);  
//     EntityCreation getEntitiesPrefs ();
// 
//     void initialise();
// }
// 
// Path: populous-api/src/main/java/uk/ac/ebi/spot/webulous/model/EntityCreation.java
// public interface EntityCreation {
// 
//     URI getDefaultBaseURI() ;
// 
// 
//     boolean useDefaultBaseURI();
// 
// 
//     String getDefaultSeparator();
// 
// 
//     Class<? extends AutoIDGenerator> getAutoIDGeneratorClass();
// 
// 
//     String getAutoIDGeneratorName();
// 
// 
//     String getPrefix();
// 
// 
//     String getSuffix();
// 
// 
//     int getAutoIDDigitCount();
// 
// 
//     int getAutoIDStart();
// 
// 
//     int getAutoIDEnd();
// 
// 
//     boolean isFragmentAutoGenerated();
// 
// 
//     boolean isGenerateNameLabel();
// 
// 
//     URI getNameLabelURI() ;
// 
// 
//     String getNameLabelLang();
// 
// 
//     boolean isGenerateIDLabel();
// 
// 
//     Class<? extends LabelDescriptor> getLabelDescriptorClass() ;
// 
// 
// 
// }


// Path: populous-oppl/src/main/java/uk/ac/ebi/spot/webulous/entity/AbstractIDGenerator.java
import org.semanticweb.owlapi.model.OWLEntity;
import uk.ac.ebi.spot.webulous.exception.AutoIDException;
import uk.ac.ebi.spot.webulous.model.AutoIDGenerator;
import uk.ac.ebi.spot.webulous.model.EntityCreation;
import java.text.FieldPosition;
import java.text.NumberFormat;


    protected String getPrefix(Class<? extends OWLEntity> type){
        String prefix = entitiesPrefs.getPrefix();
        return preprocess(prefix, type);
    }


    protected String getSuffix(Class<? extends OWLEntity> type){
        String suffix = entitiesPrefs.getSuffix();
        return preprocess(suffix, type);
    }


    protected String preprocess(String s, Class<? extends OWLEntity> type) {
        s = s.replaceAll(START_MACRO + "user" + END_MACRO, System.getProperty("user.name", "no_one"));
        s = s.replaceAll(START_MACRO + "type" + END_MACRO, type.getSimpleName());
        return s;
    }


    protected int getDigitLength(){
        return entitiesPrefs.getAutoIDDigitCount();
    }


    private String pad(long l, int padding) {
        StringBuffer sb = new StringBuffer();
        NumberFormat format = NumberFormat.getInstance();
        format.setMaximumFractionDigits(0);
        format.setMinimumIntegerDigits(padding);
        format.setMaximumIntegerDigits(padding);