Project file structure

Here is a list of the folders and files contained inside the root of this project:

  • .idea/: Not present, but appears when using a Jetbrains editor such as IntelliJ IDEA to open the project. Contains internal files used by the IDE to keep the local configuration. Can be removed safely at any time; does not contain any project related information, only user settings.
  • .mvn/wrapper: Contains the Maven downloader and the downloaded Maven binaries. The binaries (*.jar files) are ignored and can be safely deleted. The source files are used to retrieve the Maven binaries if not present. This Maven is multi-platform.
  • .mvn/repo.maven.apache.org.cer: Certificate that I added myself that is used in the maven wrapper class and is used to be able to recognize the certificate of Apache, from where we are downloading the jar with the classes inside it. If we do not have it sometimes the certificate recognition fails and wget only downloads an empty file.
  • .run/: Contains IntelliJ IDEA run configurations in XML format. Used by the IDE to retrieve execution options, so we do not have to configure each IDE that we are using.
  • src/: Contains the code and resources used to build the project.
  • src/mainComposer/java: Contains the Java code used in the application. This is the mainComposer source code folder.
  • src/mainComposer/resources: Contains configuration code and other resources needed to set the development environment and to project execution.
  • src/mainComposer/resources/CA_certificates: CA certificates usually give troubles when using the Maven wrapper. The CA certificates in this directory are used as fallbacks if the ones provided by the system can not be used or are corrupted
  • src/mainComposer/resources/META-INF: Used to define our own schemas and properties inside the .properties files used by Spring, which can be used inside the Java code to define configurations.
  • src/mainComposer/resources/Signals-API-Scratcher: Contains the code to massively download the data from a user of the Signals Notebook from ParkinElmerCloud into the file system using bash and curl. This is kept as reference since it will be integrated into this application.
  • src/mainComposer/resources/static: Created by default. Contains static content such as images or sounds usually used in the creation of web pages.
  • src/mainComposer/resources/templates: Created by default. Contains templates in marking languages such as HTML or XML that are used to create the actual web pages to serve.
  • src/mainComposer/resources/*.properties: Files that define properties that can be used inside the Java code to change code behaviour without adding any code. The mainComposer one is application.properties, which is always parsed. Inside it there is the property spring.profiles.active who tells which is the active profile and is used by the Maven wrapper to also import the corresponding .properties file of the active profile.
  • src/mainComposer/rsources/*.sh: Files that define or modify system variables depending on the profile that we are on. The file application.sh is always executed when using the Maven wrapper to execute the code. The other .sh files are executed when its corresponding profile is active.
  • src/test/java: Contains the code of the test of the Java code.
  • src/test/SQL: Contains examples of SQL queries that are used in key points of the application.
  • target/: Contains the autogenerated binaries of the project. Is not included in the repository because it contains binary files that cannot be merged.
  • tools/: Contains utilities to support repetitive tasks during the development.
  • .gitattributes: Used to mark some files as “large files” which are files that are uploaded to version control but not merged.
  • .gitignore: Used to ignore certain files from version control.
  • .spelling_dictionary.dic: You may add made up words or names, so the spelling corrector of the IDE does not detect them as an orthographic mistake.
  • COPYING: Current license file (GNU AFFERO GENERAL PUBLIC LICENSE, Version 3)
  • CREDITS.md: List of the people, organizations and institutions involved in the project development.
  • LICENSE.md: Additional license definitions not covered in the license folder
  • mvnw: Initialization wrapper script of maven, to check the place where it is residing, download the binary if missing, etc. Written in BASH. It has been modified to have more flexibility when using CA_certificates or when there is another process trying to use the same port as the deployed app.
  • pom.xml: Configuration file for Maven. It contains the different dependencies of the project and which packages the interpreter needs to download.
  • README.md: Contains a description of the project and a wide review of its important elements and goals.
  • README_DEVEL.md: Contains a more technical description of the project in order to obtain a valid deployment of the application.