The summer is near the end so this week was wrapping up.
Changing JUnit tests to add plot support:
In one of the early blog posts, I talked about how I added plot support in SBSCL using JFreeChart. I added a new plotting class called PlotProcessedSedmlResults to support the output of SED-ML file. This output object is a list of data generators wrapped using IProcessedRawSimulations object. Using this additional plot support class the JUnit tests were modified to generate output graph for all the existing SED-ML examples as this is a great way to verify if my feature implementations were correct. Most of the SED-ML specification test cases work nicely. A few that don’t have their detailed discussion in a recent Github issue and they will make for a great GSoC project next year. For example, adding a stochastic ODE solver to the library.
The file pom.xml was modified to add the following plugins:
maven-project-info-reports-plugin maven-site-plugin maven-javadoc-plugin license-maven-plugin
Making library website using maven:
While code clean-up, we realized that we can use Maven for a lot more than just building code. One of the interesting features offered by maven was building a website for the API.
Using this command, Maven can automatically take all the project information from pom.xml and generate a nice website. This lead to the second round of major project restructuring (first round was discussed here). The contents of doc folder were either deleted or moved to src/site as that information is helpful to maven when making a website. A markup.md file was added to src/site/markdown and this is now the landing page of our website: https://shalinshah1993.github.io/SBSCL/
Note that a folder copy plugin was used to move target/site/ to docs/ folder so that the maven generated wesbite is pointed by github. This means we don’t need gh-pages branch anymore.
Generating javadoc using maven:
In addition to making the website, javadoc maven plugin was used to generate javadoc and add them to the website. This is highly desired as we have online javadocs. Prior to this the generated javadoc resided in doc/ folder and were only accessible offline after downloading the library.
Generating a license file using maven:
The license plugin by maven was used to generate software license. This means that we don’t need the licenses/ folder originally residing in the repo. To see a list of 3rd party licenses following commands can be used:
mvn license:download-licenses mvn license:license-list -Ddetail mvn license:add-third-party
The generated license file THIRD-PARTY.txt resides in target/generated-sources/ folder.
Updating README.md file:
All the folder restructuring means the original README.md file also had to be updated. Several changes were made to this file and the updated directory information is as under:
/ |- docs -> Contains code for the maven built website |- src -> The main source folder containing all the code and test files |- assembly -> assembly files for maven plugins |- lib -> 3rd party libraries needed for compilation and execution |- main -> Core java files of simulation library |- test -> JUnit test files along with resources required |- site -> Contains markup files, old javadoc, site.xml and other website resources |- LICENSE.txt -> the license, under which this project is distributed |- pom.xml -> Maven file for building the project |- README.md -> this file
This week the coding phase for GSoC come to an end. All the students will be evaluated next week one last time by their mentors and organizations, and then the program ends. Good luck to all other students and myself for the final evaluations.
I had a great summer working with Andreas, Matthias, Niko, and others. I will try to keep contributing to NRNB and other open-source communities whenever I can.