Skip to content

Commit

Permalink
Merge aabac55 into 486c029
Browse files Browse the repository at this point in the history
  • Loading branch information
sharan8 authored Oct 17, 2018
2 parents 486c029 + aabac55 commit a8dcbbe
Showing 1 changed file with 62 additions and 31 deletions.
93 changes: 62 additions & 31 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ Certain properties of the application can be controlled (e.g App name, logging l
This section describes the details on how the volunteer management features are implemented.

// tag::exportcert[]
==== Export Volunteer Certificate
==== Export Volunteer Certificate [Coming in V1.3]
The `exportcert` command enables the volunteer manager to export a PDF document (certificate) detailing a volunteer's involvement with the organisation. This is only possible when in the 'volunteer' context. The information included in the certificate are as follows:

* Organisation's logo
Expand All @@ -487,52 +487,83 @@ The `exportcert` command enables the volunteer manager to export a PDF document

This is a sample of the exported PDF certificate:

.Sample exported volunteer certificate
[.thumb]
image::VolunteerCert.png[width="600"]


===== Intended Implementation

The following is a high level overview of this feature's implementation:

* Inclusion of supported `exportcert` command.
* Creation of supported `exportcert` command.
* Retrieval of the specified volunteer's details.
* Creation of a new PDF document using Apache PDFBox.
* Export of the PDF document to a certs folder.
* Export of the PDF document to a 'certs' folder.

===== Design Considerations

====== Aspect: Medium of Presentation

* **Alternative 1 (current choice):** Export as PDF.
** Pros: Exports volunteer details in a convenient format for immediate use and distribution.
** Cons: PDF template has to be set within the application.

* **Alternative 2:** Display volunteer data in a window within the application.
** Pros: Allows the volunteer manager flexibility as to what to do with the volunteer details. This could include manually inputting it into an existing certificate creation application, or a document template.
** Cons: Requires more manual work on the volunteer manager's side, especially when the process can be automated to enhance his/her productivity. Certificate templates are also infrequently updated, and thus the costs in terms of efficiency outweigh the benefits in terms of flexibility.

====== Aspect: Choice of PDF Creation Tool

* **Alternative 1 (current choice):** Apache PDFBox
** Pros: Open source, offers more specific functionality for PDFs than Apache FOP, covers all of the pdf creation and manipulation functionality required for this feature.
** Cons: Not the most efficient for creating PDFs (refer to http://abhishekkumararya.blogspot.com/2013/09/comparison-of-java-based-pdf-generation.html[this comparison study]).
====== Aspect: Medium of presentation

* **Alternative 2:** Apache FOP
** Pros: Open source, allows for conversion and formatting of XML data to PDF.
** Cons: Resource intensive, not the most efficient for PDF creation, and lacks features such as updating and merging PDFs.
* *Alternative 1 (current choice):* Export as PDF
+
[cols="1,10"]
|===
|*Pros*| Exports volunteer details in a convenient format for immediate use and distribution.
|*Cons*| PDF template has to be preset within the application.
|===
+
* *Alternative 2:* Display volunteer data in a window within the application
+
[cols="1,10"]
|===
|*Pros*| Allows the volunteer manager flexibility as to what to do with the volunteer details. This could include manually inputting it into an existing certificate creation application, or a document template.
|*Cons*| Requires more manual work on the volunteer manager's side, especially when the process can be automated to enhance his/her productivity. Certificate templates are also infrequently updated, and thus the costs in terms of efficiency outweigh the benefits in terms of flexibility.
|===

* **Alternative 3:** iText
** Pros: Fastest of the lot for PDF generation (refer to http://abhishekkumararya.blogspot.com/2013/09/comparison-of-java-based-pdf-generation.html[this comparison study]).
** Cons: Now only available as a free trial, requires a license.
====== Aspect: Choice of PDF creation tool

====== Aspect: Identifying Volunteer from Certificate
* *Alternative 1 (current choice):* Apache PDFBox
+
[cols="1,10"]
|===
|*Pros*| Open source, offers more specific functionality for PDFs than Apache FOP, and covers all of the pdf creation and manipulation functionality required for this feature.
|*Cons*| Not the most efficient for creating PDFs (refer to http://abhishekkumararya.blogspot.com/2013/09/comparison-of-java-based-pdf-generation.html[this comparison study]).
|===
+
* *Alternative 2:* Apache FOP
+
[cols="1,10"]
|===
|*Pros*| Open source, allows for conversion and formatting of XML data to PDF.
|*Cons*| Resource intensive, not the most efficient for PDF creation, and lacks features such as updating and merging PDFs.
|===
+
* *Alternative 3:* iText
+
[cols="1,10"]
|===
|*Pros*| Fastest of the lot for PDF generation (refer to http://abhishekkumararya.blogspot.com/2013/09/comparison-of-java-based-pdf-generation.html[this comparison study]).
|*Cons*| Now only available as a free trial, and requires a license for extended use.
|===

* **Alternative 1 (current choice):** Use Volunteer's NRIC
** Pros: Is unique to each volunteer and can be recovered easily, given the volunteer's name or other personal information. It also adds credibility to the exported volunteer certificate.
** Cons: Requires more space as each NRIC can be represented as string of length 9 or a 7-digit integer.
====== Aspect: Choice of additional details for identifying volunteer from certificate

* **Alternative 2:** Use a Volunteer ID
** Pros: Shorter than NRIC and still serves the purpose, and can be auto-incremented.
** Cons: Hard to recover, even if additional information about the volunteer is provided. Would also be meaningless to a third person to whom the certificate is presented for verification purposes.
* *Alternative 1 (current choice):* Display Volunteer's NRIC
+
[cols="1,10"]
|===
|*Pros*| Is unique to each volunteer and can be recovered easily, given the volunteer's name or other personal information. It also adds additional verifiability to the exported volunteer certificate.
|*Cons*| Requires more space as each NRIC can be represented as string of length 9 or a 7-digit integer.
|===
+
* *Alternative 2:* Display Volunteer ID
+
[cols="1,10"]
|===
|*Pros*| Shorter than NRIC and achieves the intended purpose. Internally, it can be auto-incremented as well.
|*Cons*| Hard to recover, even if additional information about the volunteer is provided. It would also be meaningless to a third person to whom the certificate is presented for verification purposes.
|===

// end::exportcert[]

Expand Down

0 comments on commit a8dcbbe

Please sign in to comment.