Mercurial > gemma
view pkg/imports/ufa.go @ 4233:63b160379e06
gauge_style: allow different kinds of naming for HDC/LDC
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Wed, 21 Aug 2019 12:53:25 +0200 |
parents | 49012340336c |
children | 59a99655f34d |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha L. Teichmann <sascha.teichmann@intevation.de> package imports import ( "context" "database/sql" "errors" "os" "path/filepath" "gemma.intevation.de/gemma/pkg/soap" "gemma.intevation.de/gemma/pkg/soap/ifaf" ) // UploadedFairwayAvailability is Job to extract // fairway availability data from an XML file and stores // it into the database. type UploadedFairwayAvailability struct { Dir string } // UFAJobKind is the unique name of this import job type. const UFAJobKind JobKind = "ufa" type ufaJobCreator struct{} func init() { RegisterJobCreator(UFAJobKind, ufaJobCreator{}) } func (ufaJobCreator) Description() string { return "uploaded fairway availability" } func (ufaJobCreator) Create() Job { return new(UploadedFairwayAvailability) } func (ufaJobCreator) Depends() [2][]string { // Same as faJobCreator return faJobCreator{}.Depends() } func (ufaJobCreator) AutoAccept() bool { return true } func (ufaJobCreator) StageDone(context.Context, *sql.Tx, int64) error { return nil } // CleanUp removes the temporary files from the filesystem. func (ufa *UploadedFairwayAvailability) CleanUp() error { return os.RemoveAll(ufa.Dir) } // Do executes the actual uploaded fairway availability import. func (ufa *UploadedFairwayAvailability) Do( ctx context.Context, importID int64, conn *sql.Conn, feedback Feedback, ) (interface{}, error) { fetch := func( ctx context.Context, tx *sql.Tx, bns bottlenecks, ) ([]*ifaf.FairwayAvailability, error) { var response ifaf.Get_bottleneck_faResponse if err := soap.ValidateFile( filepath.Join(ufa.Dir, "data.xml"), "IFAF.xsd", &response, ); err != nil { return nil, err } result := response.Get_bottleneck_faResult if result == nil { return nil, errors.New("no bottlenecks found") } return result.FairwayAvailability, nil } return storeFairwayAvailability(ctx, conn, feedback, fetch) }