Improved doc generation
This commit is contained in:
parent
a7e597fbd4
commit
22e2a36a4c
|
@ -0,0 +1,277 @@
|
||||||
|
|
||||||
|
########
|
||||||
|
Property
|
||||||
|
########
|
||||||
|
|
||||||
|
This is the base type for any Property
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **Property**
|
||||||
|
|
||||||
|
+------------------------------------------------------+------+------------+-------------+
|
||||||
|
| Name | Type | Attributes | Description |
|
||||||
|
+======================================================+======+============+=============+
|
||||||
|
| This type does not define any additional attributes. |
|
||||||
|
+------------------------------------------------------+------+------------+-------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **Property** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
######
|
||||||
|
Entity
|
||||||
|
######
|
||||||
|
|
||||||
|
This is the base type for any Entity
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **Entity**
|
||||||
|
|
||||||
|
+------------+----------+--------------------------------------------------------+--------------------------------------------------------------------------------------------+
|
||||||
|
| Properties |
|
||||||
|
+============+==========+========================================================+============================================================================================+
|
||||||
|
| **Name** | **Type** | **Attributes** | **Description** |
|
||||||
|
+------------+----------+--------------------------------------------------------+--------------------------------------------------------------------------------------------+
|
||||||
|
| header | Header | ``Mandatory:true`` ``ReadOnly:false`` ``NotNull:true`` | Metadata associated with the instance that is automatically created/updated by the system. |
|
||||||
|
+------------+----------+--------------------------------------------------------+--------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **Entity** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
********
|
||||||
|
Resource
|
||||||
|
********
|
||||||
|
|
||||||
|
This is the base type for any Resource
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **Resource** ``extends`` **Entity**
|
||||||
|
|
||||||
|
+------------------------+-------------+--------------+----------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| Source | Relation | Multiplicity | Target | Description |
|
||||||
|
+========================+=============+==============+==========+====================================================================================================+
|
||||||
|
| **Facets** |
|
||||||
|
+------------------------+-------------+--------------+----------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| Resource | ConsistsOf | 1..n | Facet | Any Resource consists of one or more Facets which describes the different aspects of the resource. |
|
||||||
|
+------------------------+-------------+--------------+----------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| **Resource Relations** |
|
||||||
|
+------------------------+-------------+--------------+----------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| Resource | IsRelatedTo | 0..n | Resource | Any Resource can be related to any other resource. |
|
||||||
|
+------------------------+-------------+--------------+----------+----------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **Resource** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
*****
|
||||||
|
Facet
|
||||||
|
*****
|
||||||
|
|
||||||
|
This is the base type for any Facet
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **Facet** ``extends`` **Entity**
|
||||||
|
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| Properties |
|
||||||
|
+======================================================+================+==================+=================+====================================================================================================+
|
||||||
|
| **Name** | **Type** | **Attributes** | **Description** |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| This type does not define any additional attributes. |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| **Known Usage** |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| GCubeResource | IsIdentifiedBy | 1..1 | Facet | Any Resource has at least one Facet which in some way allow to identify the Resource per se. |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
| Resource | ConsistsOf | 1..n | Facet | Any Resource consists of one or more Facets which describes the different aspects of the resource. |
|
||||||
|
+------------------------------------------------------+----------------+------------------+-----------------+----------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **Facet** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
########
|
||||||
|
Relation
|
||||||
|
########
|
||||||
|
|
||||||
|
This is the base type for any Relation
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **Relation**
|
||||||
|
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
| **Definition** |
|
||||||
|
+=======================+=======================+==========================================================+=================+========================================+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
| Resource | Relation | 0..n | Entity | This is the base type for any Relation |
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
| **Properties** |
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
| **Name** | **Type** | **Attributes** | **Description** |
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
| propagationConstraint | PropagationConstraint | ``Mandatory:false`` ``ReadOnly:false`` ``NotNull:false`` | |
|
||||||
|
+-----------------------+-----------------------+----------------------------------------------------------+-----------------+----------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **Relation** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
**********
|
||||||
|
ConsistsOf
|
||||||
|
**********
|
||||||
|
|
||||||
|
This is the base type for any ConsistsOf relation
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **ConsistsOf** ``extends`` **Relation**
|
||||||
|
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Definition** |
|
||||||
|
+======================================================+==============+==================+==========================+=====================================================================================================================================================================================+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Resource | ConsistsOf | 0..n | Facet | This is the base type for any ConsistsOf relation |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Properties** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Name** | **Type** | **Attributes** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| This type does not define any additional attributes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Known Usage** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Actor | ConsistsOf | 0..n | ContactReferenceFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| ConcreteDataset | ConsistsOf | 1..n | AccessPointFacet | The access point to use for having access to the concrete dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | AccessPointFacet | The access point to use for having access to the dataset. The embargoState can be modeled through the access policy defined in the consistsOf relation. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | DescriptiveMetadataFacet | Any descriptive information associated with the dataset, e.g. for discovery purposes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | EventFacet | Any 'event' characterising the lifecycle of the dataset, e.g. collection date, last collection date. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | LicenseFacet | The licence governing dataset exploitation. The duration of license (if any) is captured by the expiry date defined in the consistsOf relation. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | ProvenanceFacet | Any provenance record associated with the dataset. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Dataset | ConsistsOf | 0..n | SubjectFacet | Any subject/tag associated with the dataset for descriptive and discovery purposes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| EService | ConsistsOf | 1..n | AccessPointFacet | Identify the endpoints of the EService. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| EService | ConsistsOf | 1..n | EventFacet | Events characterising the current status and lifecycle of the service, e.g. ActivationTime, DeploymentTime. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| EService | ConsistsOf | 0..n | LicenseFacet | The specific terms of use governing the exploitation of the EService. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| EService | ConsistsOf | 0..n | SoftwareFacet | Software available in the EService environment that characterizes the specific EService instance. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| EService | ConsistsOf | 1..1 | StateFacet | The current status of the EService, e.g. STARTED, ready, down, failed. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| HostingNode | ConsistsOf | 1..n | CPUFacet | The CPU equipping the Hosting Node. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| HostingNode | ConsistsOf | 1..n | EventFacet | Every event characterizing the life cycle of the Hosting Node, e.g. the activation time. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| HostingNode | ConsistsOf | 0..n | SimplePropertyFacet | Any <key,value> pair property worth associating with the Hosting Node, e.g. Environment Variables |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| HostingNode | ConsistsOf | 0..n | SoftwareFacet | Any Software characterising the Hosting Node. Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| HostingNode | ConsistsOf | 1..1 | StateFacet | The current state of the Hosting Node, e.g. started, ready, certified, down, failed. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Resource | ConsistsOf | 1..n | Facet | Any Resource consists of one or more Facets which describes the different aspects of the resource. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Schema | ConsistsOf | 0..n | DescriptiveMetadataFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Schema | ConsistsOf | 0..n | SubjectFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Service | ConsistsOf | 0..n | CapabilityFacet | Any facility supported/offered by the Service. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Service | ConsistsOf | 0..n | DescriptiveMetadataFacet | Any descriptive information associated with the service, e.g. for discovery purposes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Service | ConsistsOf | 0..n | SubjectFacet | Any subject/tag associated with the service for descriptive, cataloguing and discovery purposes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Site | ConsistsOf | 1..n | LocationFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Site | ConsistsOf | 1..n | NetworkingFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Software | ConsistsOf | 0..n | CapabilityFacet | |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Software | ConsistsOf | 1..n | SoftwareFacet | Apart the one connected by the IsIdentifiedBy relation (gCube coordinates) the others identify the software in other way e.g. (Maven coordinates). |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| VirtualMachine | ConsistsOf | 1..n | CPUFacet | The CPU equipping the Virtual Machine. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| VirtualMachine | ConsistsOf | 1..n | EventFacet | Every event characterizing the life cycle of the Virtual Machine, e.g. the activation time. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| VirtualMachine | ConsistsOf | 0..n | SoftwareFacet | Any Software characterising the Virtual Machine. Useful to report the hosted software that are not registered in the Resource Registry as Software Resource, e.g. Operating System |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| VirtualMachine | ConsistsOf | 1..1 | StateFacet | The current state of the Virtual Machine, e.g. started, ready, down, unreachable. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **ConsistsOf** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
||||||
|
|
||||||
|
***********
|
||||||
|
IsRelatedTo
|
||||||
|
***********
|
||||||
|
|
||||||
|
This is the base type for any IsRelatedTo relation
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: **IsRelatedTo** ``extends`` **Relation**
|
||||||
|
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| **Definition** |
|
||||||
|
+======================================================+==============+==================+=================+====================================================+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| Resource | IsRelatedTo | 0..n | Resource | This is the base type for any IsRelatedTo relation |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| **Properties** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| **Name** | **Type** | **Attributes** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| This type does not define any additional attributes. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| **Known Usage** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| **Source** | **Relation** | **Multiplicity** | **Target** | **Description** |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
| Resource | IsRelatedTo | 0..n | Resource | Any Resource can be related to any other resource. |
|
||||||
|
+------------------------------------------------------+--------------+------------------+-----------------+----------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The **IsRelatedTo** current version is 1.0.0.
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
|
||||||
|
* **1.0.0**: First Version.
|
||||||
|
|
|
@ -16,10 +16,9 @@ import org.gcube.informationsystem.utils.discovery.RegistrationProvider;
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
*/
|
*/
|
||||||
public class ClassesDiscoveryGenerator {
|
public class ClassesDiscoveryGenerator extends Generator {
|
||||||
|
|
||||||
protected TreeGenerator treeGenerator;
|
protected TreeGenerator treeGenerator;
|
||||||
protected TypeListGenerator typeListGenerator;
|
|
||||||
|
|
||||||
public ClassesDiscoveryGenerator() {
|
public ClassesDiscoveryGenerator() {
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
package org.gcube.informationsystem.utils.documentation.generator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|
||||||
|
import org.gcube.informationsystem.base.reference.AccessType;
|
||||||
|
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;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
|
*/
|
||||||
|
public class Generator {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(Generator.class);
|
||||||
|
|
||||||
|
protected AccessType[] accessTypes;
|
||||||
|
|
||||||
|
public Generator() {
|
||||||
|
accessTypes = new AccessType[] {
|
||||||
|
AccessType.PROPERTY,
|
||||||
|
AccessType.ENTITY, AccessType.RESOURCE, AccessType.FACET,
|
||||||
|
AccessType.RELATION, AccessType.CONSISTS_OF, AccessType.IS_RELATED_TO
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class<? extends DocumentationGenerator> getDocumentationGeneratorClass(AccessType accessType)
|
||||||
|
throws Exception {
|
||||||
|
Class<? extends DocumentationGenerator> clz;
|
||||||
|
switch (accessType) {
|
||||||
|
case PROPERTY:
|
||||||
|
clz = PropertyDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENTITY:
|
||||||
|
clz = EntityDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RESOURCE:
|
||||||
|
clz = ResourceDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FACET:
|
||||||
|
clz = FacetDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RELATION:
|
||||||
|
clz = RelationDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IS_RELATED_TO:
|
||||||
|
clz = IsRelatedToDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CONSISTS_OF:
|
||||||
|
clz = ConsistsOfDocumentationGenerator.class;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new Exception("List of types not recognized");
|
||||||
|
}
|
||||||
|
return clz;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected DocumentationGenerator getDocumentationGenerator(Type type) throws Exception {
|
||||||
|
DocumentationGenerator dg = null;
|
||||||
|
switch (type.getAccessType()) {
|
||||||
|
case PROPERTY:
|
||||||
|
dg = new PropertyDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENTITY:
|
||||||
|
dg = new EntityDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RESOURCE:
|
||||||
|
dg = new ResourceDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FACET:
|
||||||
|
dg = new FacetDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RELATION:
|
||||||
|
dg = new RelationDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IS_RELATED_TO:
|
||||||
|
dg = new IsRelatedToDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CONSISTS_OF:
|
||||||
|
dg = new ConsistsOfDocumentationGenerator(type);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new Exception("I'm not developed to manage the " + AccessType.class.getSimpleName() + " " + type.getName());
|
||||||
|
}
|
||||||
|
return dg;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File getFile(String fileName, boolean newFile) throws IOException {
|
||||||
|
File file = new File(fileName);
|
||||||
|
|
||||||
|
if(file.exists() && newFile) {
|
||||||
|
file.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!file.exists()) {
|
||||||
|
logger.info("Going to create {}", file.getAbsolutePath());
|
||||||
|
file.createNewFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void writeTypeToFile(Type type, File file, Integer level) throws Exception {
|
||||||
|
DocumentationGenerator dg = getDocumentationGenerator(type);
|
||||||
|
if(level!=null) {
|
||||||
|
dg.setLevel(level);
|
||||||
|
}
|
||||||
|
StringBuffer sb = dg.generate();
|
||||||
|
Files.write(file.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void writeTypeToFile(Type type, File file) throws Exception {
|
||||||
|
writeTypeToFile(type, file, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,22 +1,33 @@
|
||||||
package org.gcube.informationsystem.utils.documentation.generator;
|
package org.gcube.informationsystem.utils.documentation.generator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import org.gcube.informationsystem.base.reference.AccessType;
|
import org.gcube.informationsystem.base.reference.AccessType;
|
||||||
import org.gcube.informationsystem.types.TypeMapper;
|
import org.gcube.informationsystem.types.TypeMapper;
|
||||||
import org.gcube.informationsystem.types.reference.Type;
|
import org.gcube.informationsystem.types.reference.Type;
|
||||||
|
import org.gcube.informationsystem.utils.documentation.knowledge.Node;
|
||||||
|
import org.gcube.informationsystem.utils.documentation.knowledge.NodeElaborator;
|
||||||
import org.gcube.informationsystem.utils.documentation.knowledge.Tree;
|
import org.gcube.informationsystem.utils.documentation.knowledge.Tree;
|
||||||
|
import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
*/
|
*/
|
||||||
public class TreeGenerator {
|
public class TreeGenerator extends Generator {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class);
|
private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class);
|
||||||
|
|
||||||
|
public static final String IS_MODEL_FILENAME = "is-model.rst";
|
||||||
|
public static final String PROPERTIES_FILENAME = "properties.rst";
|
||||||
|
public static final String ENTITIES_FILENAME = "entities.rst";
|
||||||
|
public static final String RELATIONS_FILENAME = "relations.rst";
|
||||||
|
|
||||||
protected Map<AccessType, Tree> types;
|
protected Map<AccessType, Tree> types;
|
||||||
|
|
||||||
public TreeGenerator() {
|
public TreeGenerator() {
|
||||||
|
@ -31,6 +42,7 @@ public class TreeGenerator {
|
||||||
types.put(accessType, tree);
|
types.put(accessType, tree);
|
||||||
}
|
}
|
||||||
if(type.getName().compareTo(accessType.getName())==0) {
|
if(type.getName().compareTo(accessType.getName())==0) {
|
||||||
|
// Head has been already added
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Tree tree = types.get(accessType);
|
Tree tree = types.get(accessType);
|
||||||
|
@ -38,39 +50,62 @@ public class TreeGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void elaborateTree(AccessType at, Tree tree) {
|
public void elaborateTree(final AccessType at, Tree tree, final File file) throws Exception {
|
||||||
logger.info("\n{}", tree.toString());
|
logger.debug("Going to elaborate the following type tree\n{}", tree.toString());
|
||||||
|
|
||||||
// elaborateList(propertyTypes);
|
NodeElaborator ne = new NodeElaborator() {
|
||||||
//
|
|
||||||
// File f = getFile(ENTITIES_FILENAME, true);
|
@Override
|
||||||
// DocumentationGenerator edg = new EntityDocumentationGenerator(TypeMapper.createTypeDefinition(Entity.class));
|
public void elaborate(Node node, int level) throws Exception {
|
||||||
// edg.setOffsetLevel(offsetLevel);
|
Type type = node.getType();
|
||||||
// StringBuffer sb = edg.generateSection();
|
if(level==0) {
|
||||||
// Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
/*
|
||||||
//
|
* Root node has been already documented in IS_MODEL_FILENAME
|
||||||
// elaborateList(resourceTypes);
|
* Going to skip it
|
||||||
// elaborateList(facetTypes);
|
*/
|
||||||
//
|
DocumentationGenerator dg = getDocumentationGenerator(type);
|
||||||
// f = getFile(RELATIONS_FILENAME, true);
|
dg.setLevel(level);
|
||||||
// DocumentationGenerator rdg = new RelationDocumentationGenerator(TypeMapper.createTypeDefinition(Relation.class));
|
StringBuffer sb = dg.generateSection();
|
||||||
// rdg.setOffsetLevel(offsetLevel);
|
Files.write(file.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
||||||
// sb = rdg.generateSection();
|
}else {
|
||||||
// Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
writeTypeToFile(type, file, level);
|
||||||
//
|
|
||||||
// elaborateList(isRelatedToTypes);
|
|
||||||
// elaborateList(consistsOfTypes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
tree.elaborate(ne);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void generate() throws Exception {
|
public void generate() throws Exception {
|
||||||
|
|
||||||
AccessType[] accessTypes = new AccessType[] {
|
File is = getFile(IS_MODEL_FILENAME, true);
|
||||||
AccessType.PROPERTY,
|
File file = null;
|
||||||
AccessType.RESOURCE, AccessType.FACET,
|
|
||||||
AccessType.CONSISTS_OF, AccessType.IS_RELATED_TO};
|
|
||||||
for(AccessType at : accessTypes) {
|
for(AccessType at : accessTypes) {
|
||||||
|
Type type = TypeMapper.createTypeDefinition(at.getTypeClass());
|
||||||
|
writeTypeToFile(type, is);
|
||||||
|
|
||||||
|
switch (at) {
|
||||||
|
case PROPERTY:
|
||||||
|
file = getFile(PROPERTIES_FILENAME, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENTITY:
|
||||||
|
file = getFile(ENTITIES_FILENAME, true);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case RELATION:
|
||||||
|
file = getFile(RELATIONS_FILENAME, true);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Tree tree = types.get(at);
|
Tree tree = types.get(at);
|
||||||
elaborateTree(at, tree);
|
elaborateTree(at, tree, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,227 +0,0 @@
|
||||||
package org.gcube.informationsystem.utils.documentation.generator;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.StandardOpenOption;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import org.gcube.informationsystem.base.reference.AccessType;
|
|
||||||
import org.gcube.informationsystem.model.reference.entities.Entity;
|
|
||||||
import org.gcube.informationsystem.model.reference.properties.Property;
|
|
||||||
import org.gcube.informationsystem.model.reference.relations.Relation;
|
|
||||||
import org.gcube.informationsystem.types.TypeMapper;
|
|
||||||
import org.gcube.informationsystem.types.reference.Type;
|
|
||||||
import org.gcube.informationsystem.types.reference.entities.FacetType;
|
|
||||||
import org.gcube.informationsystem.types.reference.entities.ResourceType;
|
|
||||||
import org.gcube.informationsystem.types.reference.properties.PropertyType;
|
|
||||||
import org.gcube.informationsystem.types.reference.relations.ConsistsOfType;
|
|
||||||
import org.gcube.informationsystem.types.reference.relations.IsRelatedToType;
|
|
||||||
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;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
|
||||||
*/
|
|
||||||
public class TypeListGenerator {
|
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(TypeListGenerator.class);
|
|
||||||
|
|
||||||
public static final String PROPERTIES_FILENAME = "properties.rst";
|
|
||||||
public static final String ENTITIES_FILENAME = "entities.rst";
|
|
||||||
public static final String RELATIONS_FILENAME = "relations.rst";
|
|
||||||
|
|
||||||
protected List<PropertyType<Property>> propertyTypes;
|
|
||||||
protected List<ResourceType> resourceTypes;
|
|
||||||
protected List<FacetType> facetTypes;
|
|
||||||
protected List<IsRelatedToType> isRelatedToTypes;
|
|
||||||
protected List<ConsistsOfType> consistsOfTypes;
|
|
||||||
|
|
||||||
protected int offsetLevel;
|
|
||||||
|
|
||||||
public TypeListGenerator() {
|
|
||||||
this.propertyTypes = new ArrayList<>();
|
|
||||||
this.resourceTypes = new ArrayList<>();
|
|
||||||
this.facetTypes = new ArrayList<>();
|
|
||||||
this.isRelatedToTypes = new ArrayList<>();
|
|
||||||
this.consistsOfTypes = new ArrayList<>();
|
|
||||||
this.offsetLevel = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ResourceType> getResourceTypes() {
|
|
||||||
return resourceTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setResourceTypes(List<ResourceType> resources) {
|
|
||||||
this.resourceTypes = resources;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<FacetType> getFacetTypes() {
|
|
||||||
return facetTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFacetTypes(List<FacetType> facets) {
|
|
||||||
this.facetTypes = facets;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<IsRelatedToType> getIsRelatedToTypes() {
|
|
||||||
return isRelatedToTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsRelatedToTypes(List<IsRelatedToType> isRelatedToTypes) {
|
|
||||||
this.isRelatedToTypes = isRelatedToTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ConsistsOfType> getConsistsOfTypes() {
|
|
||||||
return consistsOfTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsistsOfTypes(List<ConsistsOfType> consistsOfTypes) {
|
|
||||||
this.consistsOfTypes = consistsOfTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addType(Type type) {
|
|
||||||
switch (type.getAccessType()) {
|
|
||||||
case PROPERTY:
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
PropertyType<Property> p = (PropertyType<Property>) type;
|
|
||||||
propertyTypes.add(p);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RESOURCE:
|
|
||||||
ResourceType r = (ResourceType) type;
|
|
||||||
resourceTypes.add(r);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FACET:
|
|
||||||
FacetType f = (FacetType) type;
|
|
||||||
facetTypes.add(f);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IS_RELATED_TO:
|
|
||||||
IsRelatedToType irt = (IsRelatedToType) type;
|
|
||||||
isRelatedToTypes.add(irt);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONSISTS_OF:
|
|
||||||
ConsistsOfType co = (ConsistsOfType) type;
|
|
||||||
consistsOfTypes.add(co);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected File getFile(String fileName, boolean newFile) throws IOException {
|
|
||||||
File file = new File(fileName);
|
|
||||||
|
|
||||||
if(file.exists() && newFile) {
|
|
||||||
file.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!file.exists()) {
|
|
||||||
logger.info("Going to create {}", file.getAbsolutePath());
|
|
||||||
file.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void checkList(List<? extends Type> list) throws Exception {
|
|
||||||
Type first = list.get(0);
|
|
||||||
AccessType accessType = first.getAccessType();
|
|
||||||
if(Objects.isNull(list) || list.size()==0) {
|
|
||||||
throw new Exception("Please add all " + accessType.getName() + " types before starting generation");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected DocumentationGenerator getDocumentationGeneratorInstance(Class<? extends DocumentationGenerator> clz, Type type) throws Exception {
|
|
||||||
Constructor<? extends DocumentationGenerator> constructor = clz.getConstructor(Type.class);
|
|
||||||
return constructor.newInstance(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void elaborateList(List<? extends Type> types) throws Exception {
|
|
||||||
Type first = types.get(0);
|
|
||||||
AccessType accessType = first.getAccessType();
|
|
||||||
Class<? extends DocumentationGenerator> clz;
|
|
||||||
File f;
|
|
||||||
switch (accessType) {
|
|
||||||
case PROPERTY:
|
|
||||||
clz = PropertyDocumentationGenerator.class;
|
|
||||||
f = getFile(PROPERTIES_FILENAME, true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RESOURCE:
|
|
||||||
clz = ResourceDocumentationGenerator.class;
|
|
||||||
f = getFile(ENTITIES_FILENAME, false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FACET:
|
|
||||||
clz = FacetDocumentationGenerator.class;
|
|
||||||
f = getFile(ENTITIES_FILENAME, false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IS_RELATED_TO:
|
|
||||||
clz = IsRelatedToDocumentationGenerator.class;
|
|
||||||
f = getFile(RELATIONS_FILENAME, false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONSISTS_OF:
|
|
||||||
clz = ConsistsOfDocumentationGenerator.class;
|
|
||||||
f = getFile(RELATIONS_FILENAME, false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Exception("List of types not recognized");
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Type type : types) {
|
|
||||||
DocumentationGenerator dg = getDocumentationGeneratorInstance(clz, type);
|
|
||||||
dg.setOffsetLevel(offsetLevel);
|
|
||||||
StringBuffer sb = dg.generateSection();
|
|
||||||
Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void generate() throws Exception {
|
|
||||||
checkList(propertyTypes);
|
|
||||||
checkList(resourceTypes);
|
|
||||||
checkList(facetTypes);
|
|
||||||
checkList(isRelatedToTypes);
|
|
||||||
checkList(consistsOfTypes);
|
|
||||||
|
|
||||||
elaborateList(propertyTypes);
|
|
||||||
|
|
||||||
File f = getFile(ENTITIES_FILENAME, true);
|
|
||||||
DocumentationGenerator edg = new EntityDocumentationGenerator(TypeMapper.createTypeDefinition(Entity.class));
|
|
||||||
edg.setOffsetLevel(offsetLevel);
|
|
||||||
StringBuffer sb = edg.generateSection();
|
|
||||||
Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
|
||||||
|
|
||||||
elaborateList(resourceTypes);
|
|
||||||
elaborateList(facetTypes);
|
|
||||||
|
|
||||||
f = getFile(RELATIONS_FILENAME, true);
|
|
||||||
DocumentationGenerator rdg = new RelationDocumentationGenerator(TypeMapper.createTypeDefinition(Relation.class));
|
|
||||||
rdg.setOffsetLevel(offsetLevel);
|
|
||||||
sb = rdg.generateSection();
|
|
||||||
Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
|
|
||||||
|
|
||||||
elaborateList(isRelatedToTypes);
|
|
||||||
elaborateList(consistsOfTypes);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -96,4 +96,16 @@ public class Node implements Comparable<Node> {
|
||||||
|
|
||||||
return type.getName().compareTo(other.type.getName());
|
return type.getName().compareTo(other.type.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void elaborate(NodeElaborator nodeElaborator) throws Exception {
|
||||||
|
elaborate(nodeElaborator, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void elaborate(NodeElaborator nodeElaborator, int level) throws Exception {
|
||||||
|
nodeElaborator.elaborate(this, level);
|
||||||
|
for (Node child : children) {
|
||||||
|
child.elaborate(nodeElaborator, level+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package org.gcube.informationsystem.utils.documentation.knowledge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
|
*/
|
||||||
|
public interface NodeElaborator {
|
||||||
|
|
||||||
|
public void elaborate(Node node, int level) throws Exception;
|
||||||
|
|
||||||
|
}
|
|
@ -27,6 +27,10 @@ public class Tree {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addNode(Type t) {
|
public void addNode(Type t) {
|
||||||
|
if(root.getType().getName().compareTo(t.getName())==0) {
|
||||||
|
// Root has been already added
|
||||||
|
return;
|
||||||
|
}
|
||||||
Set<String> superClasses = t.getSuperClasses();
|
Set<String> superClasses = t.getSuperClasses();
|
||||||
for(String superClass : superClasses) {
|
for(String superClass : superClasses) {
|
||||||
Node parent = locate.get(superClass);
|
Node parent = locate.get(superClass);
|
||||||
|
@ -51,4 +55,7 @@ public class Tree {
|
||||||
return root.toString();
|
return root.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void elaborate(NodeElaborator nodeElaborator) throws Exception {
|
||||||
|
root.elaborate(nodeElaborator);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -27,6 +27,9 @@ public abstract class DocumentationGenerator {
|
||||||
|
|
||||||
private static final int DEFAULT_NUMBER_OF_COLUMNS = 5;
|
private static final int DEFAULT_NUMBER_OF_COLUMNS = 5;
|
||||||
|
|
||||||
|
public static final String NO_ADDITIONAL_ATTRIBUTE = "This type does not define any additional attributes.";
|
||||||
|
public static final String NO_SPECIFIC_KNOWN_USAGE = "No specific known usage for this type.";
|
||||||
|
|
||||||
protected final Type type;
|
protected final Type type;
|
||||||
protected final AccessType requiredType;
|
protected final AccessType requiredType;
|
||||||
protected String superClassToBeExcluded;
|
protected String superClassToBeExcluded;
|
||||||
|
@ -187,12 +190,15 @@ public abstract class DocumentationGenerator {
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Table addLinkedEntities(Table table, Collection<LinkedEntity> entities) {
|
protected Table addLinkedEntities(Table table, Collection<LinkedEntity> entities, String messageFroNullOrEmptyCollection) {
|
||||||
if(entities!=null) {
|
if(entities!=null && entities.size()>0) {
|
||||||
for(LinkedEntity entity : entities) {
|
for(LinkedEntity entity : entities) {
|
||||||
Row row = getLinkedEntityrow(entity);
|
Row row = getLinkedEntityrow(entity);
|
||||||
table.appendRow(row);
|
table.appendRow(row);
|
||||||
}
|
}
|
||||||
|
}else {
|
||||||
|
Row row = getRowCellSpan(messageFroNullOrEmptyCollection, requiredNumberOfColumns);;
|
||||||
|
table.appendRow(row);
|
||||||
}
|
}
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
@ -254,7 +260,7 @@ public abstract class DocumentationGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Row getNoPropertyRow() {
|
protected Row getNoPropertyRow() {
|
||||||
return getRowCellSpan("This type does not define any additional attributes.", requiredNumberOfColumns);
|
return getRowCellSpan(NO_ADDITIONAL_ATTRIBUTE, requiredNumberOfColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Row addCellSpanToRow(Row row, String content, int cellSpan) {
|
protected Row addCellSpanToRow(Row row, String content, int cellSpan) {
|
||||||
|
@ -328,7 +334,27 @@ public abstract class DocumentationGenerator {
|
||||||
return stringBuffer;
|
return stringBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected StringBuffer getChangelog() {
|
public Section getSection() {
|
||||||
|
Section section = new Section();
|
||||||
|
int sectionLevel = level+offsetLevel;
|
||||||
|
SectionType[] sectionTypes = SectionType.values();
|
||||||
|
int maxSectionLevel = sectionTypes.length;
|
||||||
|
sectionLevel = sectionLevel>=maxSectionLevel ? maxSectionLevel : sectionLevel;
|
||||||
|
SectionType sectionType = SectionType.values()[sectionLevel];
|
||||||
|
section.setSectionType(sectionType);
|
||||||
|
return section;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringBuffer generateSection() {
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
stringBuffer.append("\n");
|
||||||
|
Section section = getSection();
|
||||||
|
String name = type.getName();
|
||||||
|
stringBuffer.append(section.generate(name));
|
||||||
|
return stringBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected StringBuffer generateChangelog() {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
stringBuffer.append("The **");
|
stringBuffer.append("The **");
|
||||||
stringBuffer.append(type.getName());
|
stringBuffer.append(type.getName());
|
||||||
|
@ -356,23 +382,21 @@ public abstract class DocumentationGenerator {
|
||||||
|
|
||||||
protected abstract Table getTable();
|
protected abstract Table getTable();
|
||||||
|
|
||||||
public StringBuffer generateSection() {
|
protected StringBuffer generateTable() {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
stringBuffer.append("\n");
|
|
||||||
String name = type.getName();
|
|
||||||
Section section = new Section();
|
|
||||||
SectionType sectionType = SectionType.values()[level+offsetLevel];
|
|
||||||
stringBuffer.append(section.generateSection(sectionType, name));
|
|
||||||
stringBuffer.append(type.getDescription());
|
|
||||||
stringBuffer.append("\n");
|
|
||||||
|
|
||||||
String tableTitle = getTypeDeclaration().toString();
|
String tableTitle = getTypeDeclaration().toString();
|
||||||
Table table = getTable();
|
Table table = getTable();
|
||||||
stringBuffer.append(table.generateTable(tableTitle));
|
stringBuffer.append(table.generateTable(tableTitle));
|
||||||
|
return stringBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
stringBuffer.append(getChangelog());
|
public StringBuffer generate() {
|
||||||
|
StringBuffer stringBuffer = generateSection();
|
||||||
logger.info(stringBuffer.toString());
|
stringBuffer.append(type.getDescription());
|
||||||
|
stringBuffer.append("\n");
|
||||||
|
stringBuffer.append(generateTable());
|
||||||
|
stringBuffer.append(generateChangelog());
|
||||||
|
logger.trace(stringBuffer.toString());
|
||||||
return stringBuffer;
|
return stringBuffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class FacetDocumentationGenerator extends EntityDocumentationGenerator {
|
||||||
|
|
||||||
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
||||||
Set<LinkedEntity> usage = fk.getUsage(type.getName());
|
Set<LinkedEntity> usage = fk.getUsage(type.getName());
|
||||||
addLinkedEntities(table, usage);
|
addLinkedEntities(table, usage, NO_SPECIFIC_KNOWN_USAGE);
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,11 @@ import org.gcube.informationsystem.utils.documentation.rst.table.Table;
|
||||||
*/
|
*/
|
||||||
public class ResourceDocumentationGenerator extends EntityDocumentationGenerator {
|
public class ResourceDocumentationGenerator extends EntityDocumentationGenerator {
|
||||||
|
|
||||||
|
public static final String FACETS_TABLE_HEADING = "**Facets**";
|
||||||
|
public static final String RESOURCE_RELATIONS_TABLE_HEADING = "**Resource Relations**";
|
||||||
|
public static final String NO_SPECIFIC_FACETS = "No specific facets usage defined for this type.";
|
||||||
|
public static final String NO_SPECIFIC_RESOURCE_RELATIONS = "No specific Resource relations defined for this type.";
|
||||||
|
|
||||||
public ResourceDocumentationGenerator(Type type) {
|
public ResourceDocumentationGenerator(Type type) {
|
||||||
super(type,AccessType.RESOURCE);
|
super(type,AccessType.RESOURCE);
|
||||||
int level = 1;
|
int level = 1;
|
||||||
|
@ -32,15 +37,15 @@ public class ResourceDocumentationGenerator extends EntityDocumentationGenerator
|
||||||
protected Table getTable() {
|
protected Table getTable() {
|
||||||
Table table = new Table();
|
Table table = new Table();
|
||||||
table.appendRow(getSourceTargetHeadingRow());
|
table.appendRow(getSourceTargetHeadingRow());
|
||||||
table.appendRow(getRowCellSpan("**Facets**", requiredNumberOfColumns));
|
table.appendRow(getRowCellSpan(FACETS_TABLE_HEADING, requiredNumberOfColumns));
|
||||||
ResourceType resourceType = (ResourceType) type;
|
ResourceType resourceType = (ResourceType) type;
|
||||||
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
||||||
Set<LinkedEntity> facets = fk.getUsage(resourceType.getName());
|
Set<LinkedEntity> facets = fk.getUsage(resourceType.getName());
|
||||||
addLinkedEntities(table, facets);
|
addLinkedEntities(table, facets, NO_SPECIFIC_FACETS);
|
||||||
table.appendRow(getRowCellSpan("**Relations**", requiredNumberOfColumns));
|
table.appendRow(getRowCellSpan(RESOURCE_RELATIONS_TABLE_HEADING, requiredNumberOfColumns));
|
||||||
UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
|
UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
|
||||||
Set<LinkedEntity> resources = rk.getUsage(resourceType.getName());
|
Set<LinkedEntity> resources = rk.getUsage(resourceType.getName());
|
||||||
addLinkedEntities(table, resources);
|
addLinkedEntities(table, resources, NO_SPECIFIC_RESOURCE_RELATIONS);
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class ConsistsOfDocumentationGenerator extends RelationDocumentationGener
|
||||||
table.appendRow(getSourceTargetBoldRow());
|
table.appendRow(getSourceTargetBoldRow());
|
||||||
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
||||||
Set<LinkedEntity> facets = fk.getUsage(type.getName());
|
Set<LinkedEntity> facets = fk.getUsage(type.getName());
|
||||||
addLinkedEntities(table, facets);
|
addLinkedEntities(table, facets, NO_SPECIFIC_KNOWN_USAGE);
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class IsRelatedToDocumentationGenerator extends RelationDocumentationGene
|
||||||
table.appendRow(getSourceTargetBoldRow());
|
table.appendRow(getSourceTargetBoldRow());
|
||||||
UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
|
UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
|
||||||
Set<LinkedEntity> resources = rk.getUsage(type.getName());
|
Set<LinkedEntity> resources = rk.getUsage(type.getName());
|
||||||
addLinkedEntities(table, resources);
|
addLinkedEntities(table, resources, NO_SPECIFIC_KNOWN_USAGE);
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,24 @@ public class Section {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected SectionType sectionType;
|
||||||
|
|
||||||
|
public Section() {
|
||||||
|
this.sectionType = SectionType.HEADING_1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Section(SectionType sectionType) {
|
||||||
|
this.sectionType = sectionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SectionType getSectionType() {
|
||||||
|
return sectionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSectionType(SectionType sectionType) {
|
||||||
|
this.sectionType = sectionType;
|
||||||
|
}
|
||||||
|
|
||||||
protected StringBuffer getSectionSeparation(String separator, int lenght) {
|
protected StringBuffer getSectionSeparation(String separator, int lenght) {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
for(int i=0; i<lenght; i++) {
|
for(int i=0; i<lenght; i++) {
|
||||||
|
@ -30,7 +48,7 @@ public class Section {
|
||||||
return stringBuffer;
|
return stringBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringBuffer generateSection(SectionType sectionType, String sectionTitle) {
|
public StringBuffer generate(String sectionTitle) {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
int lenght = sectionTitle.length();
|
int lenght = sectionTitle.length();
|
||||||
if(sectionType.overline) {
|
if(sectionType.overline) {
|
||||||
|
|
|
@ -4,7 +4,6 @@ import org.gcube.informationsystem.utils.documentation.rst.table.Cell;
|
||||||
import org.gcube.informationsystem.utils.documentation.rst.table.Row;
|
import org.gcube.informationsystem.utils.documentation.rst.table.Row;
|
||||||
import org.gcube.informationsystem.utils.documentation.rst.table.RowType;
|
import org.gcube.informationsystem.utils.documentation.rst.table.RowType;
|
||||||
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
|
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue