information-system-model-do.../src/main/java/org/gcube/informationsystem/utils/documentation/ModelTypes.java

73 lines
3.1 KiB
Java

package org.gcube.informationsystem.utils.documentation;
import java.lang.reflect.Constructor;
import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.TypeMapper;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.entities.EntityDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.entities.FacetDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.entities.ResourceDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.properties.PropertyDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.relations.ConsistsOfDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.relations.IsRelatedToDocumentationGenerator;
import org.gcube.informationsystem.utils.documentation.model.relations.RelationDocumentationGenerator;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public enum ModelTypes {
PROPERTY(AccessType.PROPERTY, PropertyDocumentationGenerator.class, true, ModelTypes.PROPERTIES_FILENAME, true),
ENTITY(AccessType.ENTITY, EntityDocumentationGenerator.class, false, ModelTypes.ENTITIES_FILENAME, true),
RESOURCE(AccessType.RESOURCE, ResourceDocumentationGenerator.class, true, ModelTypes.ENTITIES_FILENAME, false),
FACET(AccessType.FACET, FacetDocumentationGenerator.class, true, ModelTypes.ENTITIES_FILENAME, false),
RELATION(AccessType.RELATION, RelationDocumentationGenerator.class, false, ModelTypes.RELATIONS_FILENAME, true),
IS_RELATED_TO(AccessType.IS_RELATED_TO, IsRelatedToDocumentationGenerator.class, true, ModelTypes.RELATIONS_FILENAME, false),
CONSISTS_OF(AccessType.CONSISTS_OF, ConsistsOfDocumentationGenerator.class, true, ModelTypes.RELATIONS_FILENAME, false);
public static final String PROPERTIES_FILENAME = "properties.rst";
public static final String ENTITIES_FILENAME = "entities.rst";
public static final String RELATIONS_FILENAME = "relations.rst";
private final AccessType accessType;
private final Class<? extends DocumentationGenerator> dgClz;
private final boolean discover;
private final String filename;
private final boolean newFile;
ModelTypes(AccessType accessType, Class<? extends DocumentationGenerator> dgClz, boolean discover, String filename, boolean newFile) {
this.accessType = accessType;
this.dgClz = dgClz;
this.discover = discover;
this.filename = filename;
this.newFile = newFile;
}
public AccessType getAccessType() {
return accessType;
}
public Class<? extends DocumentationGenerator> getDocumentationGeneratorClz() {
return dgClz;
}
public DocumentationGenerator getDocumentationGeneratorInstance(Type type) throws Exception {
Constructor<? extends DocumentationGenerator> constructor = dgClz.getConstructor(Type.class);
return constructor.newInstance(type);
}
public boolean discover() {
return discover;
}
public String getFilename() {
return filename;
}
public boolean requiresNewFile() {
return newFile;
}
}