Mercurial > gemma
view pkg/imports/ufa.go @ 2750:6446bf6d2a89
search: use global search only in global context
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Thu, 21 Mar 2019 12:23:52 +0100 |
parents | 25f73251a6ac |
children | 4acbee65275d |
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" ) type UploadedFairwayAvailability struct { Dir string } 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() []string { // Same as faJobCreator return faJobCreator{}.Depends() } func (ufaJobCreator) AutoAccept() bool { return true } func (ufaJobCreator) StageDone(context.Context, *sql.Tx, int64) error { return nil } 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) }