Mercurial > gemma
diff pkg/imports/sr.go @ 3748:4bb5dfa0b7e3
SR import: Accept TXT file for uploads.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 24 Jun 2019 16:28:12 +0200 |
parents | 879c297c47e9 |
children | 98d5dd2f0ca1 |
line wrap: on
line diff
--- a/pkg/imports/sr.go Mon Jun 24 16:25:17 2019 +0200 +++ b/pkg/imports/sr.go Mon Jun 24 16:28:12 2019 +0200 @@ -220,11 +220,17 @@ start := time.Now() - z, err := zip.OpenReader(filepath.Join(sr.Dir, "sr.zip")) + zpath := filepath.Join(sr.Dir, "sr.zip") + + z, err := zip.OpenReader(zpath) if err != nil { - return nil, err + feedback.Warn("Expected ZIP file: %v", err) + feedback.Warn("Falling back to TXT file mode.") + z = nil } - defer z.Close() + if z != nil { + defer z.Close() + } feedback.Info("Looking for 'meta.json'") @@ -271,18 +277,23 @@ return nil, common.ToError(err) } - var xyzf *zip.File - for _, ext := range []string{".xyz", ".txt"} { - feedback.Info("Looking for '*%s'", ext) - if xyzf = common.FindInZIP(z, ext); xyzf != nil { - break + var xyz octree.MultiPointZ + + if z != nil { // Scanning ZIP file for *.xyz file. + var xyzf *zip.File + for _, ext := range []string{".xyz", ".txt"} { + feedback.Info("Looking for '*%s'", ext) + if xyzf = common.FindInZIP(z, ext); xyzf != nil { + break + } } + if xyzf == nil { + return nil, errors.New("Cannot find any *.xyz or *.txt file") + } + xyz, err = loadXYZ(xyzf, feedback, xform) + } else { // TXT file mode + xyz, err = loadXYZFile(zpath, feedback, xform) } - if xyzf == nil { - return nil, errors.New("Cannot find any *.xyz or *.txt file") - } - - xyz, err := loadXYZ(xyzf, feedback, xform) if err != nil { return nil, err } @@ -758,6 +769,15 @@ return loadXYZReader(r, feedback, xform) } +func loadXYZFile(f string, feedback Feedback, xform vertexTransform) (octree.MultiPointZ, error) { + r, err := os.Open(f) + if err != nil { + return nil, err + } + defer r.Close() + return loadXYZReader(r, feedback, xform) +} + func loadBoundary(z *zip.ReadCloser) (polygonSlice, error) { shpF := common.FindInZIP(z, ".shp") if shpF == nil {