Skip to content

Commit

Permalink
Added caching for template file, tested and functional with downstrea…
Browse files Browse the repository at this point in the history
…m AOA
  • Loading branch information
antgmann committed Feb 22, 2024
1 parent dec709b commit fb94def
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 24 deletions.
5 changes: 3 additions & 2 deletions cmd/generate-shipment-summary/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,9 @@ func main() {

page1Data, page2Data := ppmComputer.FormatValuesShipmentSummaryWorksheet(*ssfd)
noErr(err)
ppmGenerator := shipmentsummaryworksheet.NewSSWPPMGenerator()
ssw, info, err := ppmGenerator.FillSSWPDFForm(page1Data, page2Data, appCtx)
ppmGenerator, err := shipmentsummaryworksheet.NewSSWPPMGenerator()
noErr(err)
ssw, info, err := ppmGenerator.FillSSWPDFForm(page1Data, page2Data)
noErr(err)
fmt.Println(ssw.Name()) // Should always return
fmt.Println(info.PageCount) // Page count should always be 2
Expand Down
5 changes: 4 additions & 1 deletion pkg/handlers/internalapi/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@ func NewInternalAPI(handlerConfig handlers.HandlerConfig) *internalops.MymoveAPI
fetcher := fetch.NewFetcher(builder)
moveRouter := move.NewMoveRouter()
SSWPPMComputer := shipmentsummaryworksheet.NewSSWPPMComputer()
SSWPPMGenerator := shipmentsummaryworksheet.NewSSWPPMGenerator()
SSWPPMGenerator, err := shipmentsummaryworksheet.NewSSWPPMGenerator()
if err != nil {
log.Fatalln(err)
}
ppmEstimator := ppmshipment.NewEstimatePPM(handlerConfig.DTODPlanner(), &paymentrequesthelper.RequestPaymentHelper{})
signedCertificationCreator := signedcertification.NewSignedCertificationCreator()
signedCertificationUpdater := signedcertification.NewSignedCertificationUpdater()
Expand Down
2 changes: 1 addition & 1 deletion pkg/handlers/internalapi/ppm_shipment.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ func (h ShowShipmentSummaryWorksheetHandler) Handle(params ppmops.ShowShipmentSu

page1Data, page2Data := h.SSWPPMComputer.FormatValuesShipmentSummaryWorksheet(*ssfd)

SSWPPMWorksheet, SSWPDFInfo, err := h.SSWPPMGenerator.FillSSWPDFForm(page1Data, page2Data, appCtx)
SSWPPMWorksheet, SSWPDFInfo, err := h.SSWPPMGenerator.FillSSWPDFForm(page1Data, page2Data)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/services/shipment_summary_worksheet.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,5 +155,5 @@ type SSWPPMComputer interface {
}

type SSWPPMGenerator interface {
FillSSWPDFForm(Page1Values, Page2Values, appcontext.AppContext) (afero.File, *pdfcpu.PDFInfo, error)
FillSSWPDFForm(Page1Values, Page2Values) (afero.File, *pdfcpu.PDFInfo, error)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
"github.com/pkg/errors"
"github.com/spf13/afero"
"go.uber.org/zap"
"golang.org/x/text/cases"
"golang.org/x/text/language"
"golang.org/x/text/message"
Expand Down Expand Up @@ -41,23 +40,30 @@ func NewSSWPPMComputer() services.SSWPPMComputer {

// SSWPPMGenerator is the concrete struct implementing the services.shipmentsummaryworksheet interface
type SSWPPMGenerator struct {
generator paperwork.Generator
generator paperwork.Generator
templateReader *bytes.Reader
}

// NewSSWPPMGenerator creates a SSWPPMGenerator
func NewSSWPPMGenerator() services.SSWPPMGenerator {
func NewSSWPPMGenerator() (services.SSWPPMGenerator, error) {
storer := storage.NewMemory(storage.NewMemoryParams("", ""))
userUploader, err := uploader.NewUserUploader(storer, uploader.MaxCustomerUserUploadFileSizeLimit)
if err != nil {
panic(err)
return nil, errors.WithStack(err)
}
generator, err := paperwork.NewGenerator(userUploader.Uploader())
if err != nil {
panic(err)
return nil, errors.WithStack(err)
}
return &SSWPPMGenerator{
generator: *generator,
templateReader, err := createAssetByteReader("paperwork/formtemplates/SSWPDFTemplate.pdf")
if err != nil {
return nil, errors.WithStack(err)
}

return &SSWPPMGenerator{
generator: *generator,
templateReader: templateReader,
}, nil
}

// FormatValuesShipmentSummaryWorksheet returns the formatted pages for the Shipment Summary Worksheet
Expand Down Expand Up @@ -761,14 +767,7 @@ func (SSWPPMComputer *SSWPPMComputer) FetchDataShipmentSummaryWorksheetFormData(
}

// FillSSWPDFForm takes form data and fills an existing PDF form template with said data
func (SSWPPMGenerator *SSWPPMGenerator) FillSSWPDFForm(Page1Values services.Page1Values, Page2Values services.Page2Values, appCtx appcontext.AppContext) (sswfile afero.File, pdfInfo *pdfcpu.PDFInfo, err error) {

appCtx.Logger().Info("Generating SSW, opening template file")
templateReader, err := createAssetByteReader("paperwork/formtemplates/SSWPDFTemplate.pdf")
if err != nil {
appCtx.Logger().Error("Error opening SSW PDF Template, generation failing", zap.Error(err))
return nil, nil, err
}
func (SSWPPMGenerator *SSWPPMGenerator) FillSSWPDFForm(Page1Values services.Page1Values, Page2Values services.Page2Values) (sswfile afero.File, pdfInfo *pdfcpu.PDFInfo, err error) {

// header represents the header section of the JSON.
type header struct {
Expand Down Expand Up @@ -837,7 +836,7 @@ func (SSWPPMGenerator *SSWPPMGenerator) FillSSWPDFForm(Page1Values services.Page
fmt.Println("Error marshaling JSON:", err)
return
}
SSWWorksheet, err := SSWPPMGenerator.generator.FillPDFForm(jsonData, templateReader)
SSWWorksheet, err := SSWPPMGenerator.generator.FillPDFForm(jsonData, SSWPPMGenerator.templateReader)
if err != nil {
return nil, nil, err
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -786,8 +786,8 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestCreateTextFields() {

func (suite *ShipmentSummaryWorksheetServiceSuite) TestFillSSWPDFForm() {
SSWPPMComputer := NewSSWPPMComputer()
ppmGenerator := NewSSWPPMGenerator()

ppmGenerator, err := NewSSWPPMGenerator()
suite.FatalNoError(err)
ordersType := internalmessages.OrdersTypePERMANENTCHANGEOFSTATION
yuma := factory.FetchOrBuildCurrentDutyLocation(suite.DB())
fortGordon := factory.FetchOrBuildOrdersDutyLocation(suite.DB())
Expand Down Expand Up @@ -833,7 +833,7 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestFillSSWPDFForm() {
ssd, err := SSWPPMComputer.FetchDataShipmentSummaryWorksheetFormData(suite.AppContextForTest(), &session, ppmShipmentID)
suite.NoError(err)
page1Data, page2Data := SSWPPMComputer.FormatValuesShipmentSummaryWorksheet(*ssd)
test, info, err := ppmGenerator.FillSSWPDFForm(page1Data, page2Data, suite.AppContextForTest())
test, info, err := ppmGenerator.FillSSWPDFForm(page1Data, page2Data)
suite.NoError(err)
println(test.Name()) // ensures was generated with temp filesystem
suite.Equal(info.PageCount, 2) // ensures PDF is not corrupted
Expand Down

0 comments on commit fb94def

Please sign in to comment.