comparison 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
comparison
equal deleted inserted replaced
3747:ad67e4286d65 3748:4bb5dfa0b7e3
218 feedback Feedback, 218 feedback Feedback,
219 ) (interface{}, error) { 219 ) (interface{}, error) {
220 220
221 start := time.Now() 221 start := time.Now()
222 222
223 z, err := zip.OpenReader(filepath.Join(sr.Dir, "sr.zip")) 223 zpath := filepath.Join(sr.Dir, "sr.zip")
224 if err != nil { 224
225 return nil, err 225 z, err := zip.OpenReader(zpath)
226 } 226 if err != nil {
227 defer z.Close() 227 feedback.Warn("Expected ZIP file: %v", err)
228 feedback.Warn("Falling back to TXT file mode.")
229 z = nil
230 }
231 if z != nil {
232 defer z.Close()
233 }
228 234
229 feedback.Info("Looking for 'meta.json'") 235 feedback.Info("Looking for 'meta.json'")
230 236
231 mf := common.FindInZIP(z, "meta.json") 237 mf := common.FindInZIP(z, "meta.json")
232 if mf == nil && !sr.completeOverride() { 238 if mf == nil && !sr.completeOverride() {
269 275
270 if err := m.Validate(ctx, conn); err != nil { 276 if err := m.Validate(ctx, conn); err != nil {
271 return nil, common.ToError(err) 277 return nil, common.ToError(err)
272 } 278 }
273 279
274 var xyzf *zip.File 280 var xyz octree.MultiPointZ
275 for _, ext := range []string{".xyz", ".txt"} { 281
276 feedback.Info("Looking for '*%s'", ext) 282 if z != nil { // Scanning ZIP file for *.xyz file.
277 if xyzf = common.FindInZIP(z, ext); xyzf != nil { 283 var xyzf *zip.File
278 break 284 for _, ext := range []string{".xyz", ".txt"} {
279 } 285 feedback.Info("Looking for '*%s'", ext)
280 } 286 if xyzf = common.FindInZIP(z, ext); xyzf != nil {
281 if xyzf == nil { 287 break
282 return nil, errors.New("Cannot find any *.xyz or *.txt file") 288 }
283 } 289 }
284 290 if xyzf == nil {
285 xyz, err := loadXYZ(xyzf, feedback, xform) 291 return nil, errors.New("Cannot find any *.xyz or *.txt file")
292 }
293 xyz, err = loadXYZ(xyzf, feedback, xform)
294 } else { // TXT file mode
295 xyz, err = loadXYZFile(zpath, feedback, xform)
296 }
286 if err != nil { 297 if err != nil {
287 return nil, err 298 return nil, err
288 } 299 }
289 300
290 if len(xyz) == 0 { 301 if len(xyz) == 0 {
756 } 767 }
757 defer r.Close() 768 defer r.Close()
758 return loadXYZReader(r, feedback, xform) 769 return loadXYZReader(r, feedback, xform)
759 } 770 }
760 771
772 func loadXYZFile(f string, feedback Feedback, xform vertexTransform) (octree.MultiPointZ, error) {
773 r, err := os.Open(f)
774 if err != nil {
775 return nil, err
776 }
777 defer r.Close()
778 return loadXYZReader(r, feedback, xform)
779 }
780
761 func loadBoundary(z *zip.ReadCloser) (polygonSlice, error) { 781 func loadBoundary(z *zip.ReadCloser) (polygonSlice, error) {
762 shpF := common.FindInZIP(z, ".shp") 782 shpF := common.FindInZIP(z, ".shp")
763 if shpF == nil { 783 if shpF == nil {
764 return nil, nil 784 return nil, nil
765 } 785 }