User Tools

Site Tools


groimp-platform:gs-project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
groimp-platform:gs-project [2024/12/16 15:42] – [Project graph] gaetangroimp-platform:gs-project [2025/01/22 15:54] (current) Tim
Line 7: Line 7:
 To simplify: To simplify:
   * a Project is the set of resources that enables to open an entity that can be processed by GroIMP.    * a Project is the set of resources that enables to open an entity that can be processed by GroIMP. 
-  * a Workbench is the set of windows that enables the user to use the project. A workbench is created around a project. Even in [[:user-guide:additional_interfaces|interfaces]] that do not create a GUI (headless for instance), a workbench is created and used to process the project. +  * a Workbench is the set of windows that enables the user to interact with the project. A workbench is created around a project. Even in [[:user-guide:additional_interfaces|interfaces]] that do not create a GUI (headless for instance), a workbench is created and used to process the project. 
  
 Note for developers, a GroIMP project is slightly different from the code implementation of a [[https://javadoc.grogra.de/projectmanager/de/grogra/projectmanager/ProjectImpl.html|project]]. Note for developers, a GroIMP project is slightly different from the code implementation of a [[https://javadoc.grogra.de/projectmanager/de/grogra/projectmanager/ProjectImpl.html|project]].
Line 15: Line 15:
 A project requires three files to be openable in GroIMP: A project requires three files to be openable in GroIMP:
   - The **project registry**: Named //project.gs// by default. It is an XML file that includes all the registry content of the project. I.e. the list of all resources to load in the project, as well as "how" to load them.   - The **project registry**: Named //project.gs// by default. It is an XML file that includes all the registry content of the project. I.e. the list of all resources to load in the project, as well as "how" to load them.
-  - The **Graph**: Named //graph.xml// by default. It is an XML file that describe the graph states of all graphs in the project. It store the current state of the graph, which enables to save and reload a project after running it.+  - The **Graph**: Named //graph.xml// by default. It is an XML file that describe the graph state of the project graph in the project. It store the current state of the graph, which enables to save and reload a project after running it.
   - The **Java resources file**: Named //MANIFEST.MF// in the repository //META-INF//. This is a text file that list all files of the project and their types.   - The **Java resources file**: Named //MANIFEST.MF// in the repository //META-INF//. This is a text file that list all files of the project and their types.
  
Line 83: Line 83:
 </code>   </code>  
  
-The first line is the required xml description. The second contains the main tag of the file: ''<graph/>''. It also needs to define the xmlns tags used by GroIMP to load the content described in the file.+The first line is the required xml description. The second contains the main tag of the file: ''<graph/>''. It also needs to define the xmlns attributes used by GroIMP to load the content described in the file.
  
 An actual **graph** (with only the rggroot) can look like: An actual **graph** (with only the rggroot) can look like:
Line 108: Line 108:
  
 Notice that, with this representation, successor edges are implicitly described. The first node under another ''<node/>'' tag is seen as the successor. Additional edges would be added as ''<edge/>'' tags. Notice that, with this representation, successor edges are implicitly described. The first node under another ''<node/>'' tag is seen as the successor. Additional edges would be added as ''<edge/>'' tags.
-==== Compressed project (GSZ) ====+
  
 ==== Java resources file ==== ==== Java resources file ====
  
 +The third required file to open a project. It follow the same definition as the java [[https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html|manifest file]].
 +
 +It cannot be renamed or moved. It needs to be ''META-INF/MANIFEST.MF''.
 +
 +This is a simple text file that list the files used in the project including the **project registry** and **graph** file. 
 +
 +A simple example of its content is:
 +<code>
 +Name: project.gs
 +Content-Type: application/x-grogra-registry+xml
 +
 +Name: Model.rgg
 +Content-Type: text/x-grogra-rgg; charset=UTF-8
 +
 +Name: graph.xml
 +Content-Type: application/x-grogra-graph+xml
 +</code>
 +
 +Each file is mapped with its name and a MimeType (i.e. the explicit type of the file. Several files could have the same extension but be processed differently).
 +
 +
 +
 +==== Compressed project (GSZ) ====
 +
 +A project can be compressed into an archive. The standard GroIMP extension is .gsz, but is is a simple archive. Any .zip, 7z, or other archive format would work (as long as you rename the extension .gsz).
 +
 +The archive contains all the content of the project. It can be viewed, modified, or extracted with any archive tools on you computer. 
 +
 +Note that:
 +  * GroIMP requires the archive extension to be .gsz.
 +  * The archive need to follow the same compression order as a java package. Thus, if you want to compress the project manually you need to include first the META-INF directory.
 +
 +For instance to compress a project in the current folder you can use the command:
  
-===== Create a project =====+''zip -r myProject.gsz META-INF/ *''
groimp-platform/gs-project.1734360169.txt.gz · Last modified: 2024/12/16 15:42 by gaetan