annotate cmd/wfs/main.go @ 1599:5e16d1fbe91f

WFS Capabilities parser: Parse constraints, too.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 17 Dec 2018 11:13:11 +0100
parents 74413d52c439
children 658c1ebc1707
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1596
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018 by via donau
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package main
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import (
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 "bufio"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 "flag"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 "fmt"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 "log"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 "os"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 "gemma.intevation.de/gemma/pkg/wfs"
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 )
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 func loadCapabilities(fname string) (*wfs.Capabilities, error) {
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 f, err := os.Open(fname)
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 if err != nil {
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 return nil, err
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 defer f.Close()
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 return wfs.ParseCapabilities(bufio.NewReader(f))
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 func main() {
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 flag.Parse()
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 for _, arg := range flag.Args() {
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 caps, err := loadCapabilities(arg)
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 if err != nil {
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 log.Fatalf("error: %v\n", err)
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 fmt.Printf("title: %s\n", caps.ServiceIdentification.Title)
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 fmt.Printf("type: %s\n", caps.ServiceIdentification.ServiceType)
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 fmt.Printf("version: %s\n", caps.ServiceIdentification.ServiceTypeVersion)
1599
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
47 if len(caps.OperationsMetadata.Operations) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
48 fmt.Println("operations:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
49 for _, operation := range caps.OperationsMetadata.Operations {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
50 fmt.Printf("\t%s\n", operation.Name)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
51 if operation.DCP.HTTP.Get != nil {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
52 fmt.Printf("\t\tGet: %s\n", operation.DCP.HTTP.Get.HRef)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
53 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
54 if operation.DCP.HTTP.Post != nil {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
55 fmt.Printf("\t\tPost: %s\n", operation.DCP.HTTP.Post.HRef)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
56 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
57
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
58 if len(operation.Parameters) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
59 fmt.Println("\t\tparameters:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
60 for _, p := range operation.Parameters {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
61 fmt.Printf("\t\t\tparameter: %s\n", p.Name)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
62 for _, av := range p.AllowedValues.Values {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
63 fmt.Printf("\t\t\t\t%s\n", av.Value)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
64 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
65 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
66 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
67 if len(operation.Constraints) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
68 fmt.Println("\t\tconstraints:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
69 for _, c := range operation.Constraints {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
70 fmt.Printf("\t\t\tname: %s\n", c.Name)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
71 if c.DefaultValue != nil {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
72 fmt.Printf("\t\t\t\tdefault: %s\n", c.DefaultValue.Value)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
73 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
74 if len(c.AllowedValues.Values) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
75 fmt.Println("\t\t\tallowed values:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
76 for _, av := range c.AllowedValues.Values {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
77 fmt.Printf("\t\t\t\t%s", av.Value)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
78 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
79 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
80 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
81 }
1596
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 }
1599
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
83 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
84 if len(caps.OperationsMetadata.Constraints) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
85 fmt.Println("constraints:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
86 for _, c := range caps.OperationsMetadata.Constraints {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
87 fmt.Printf("\tname: %s\n", c.Name)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
88 if c.DefaultValue != nil {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
89 fmt.Printf("\t\tdefault: %s\n", c.DefaultValue.Value)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
90 }
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
91 if len(c.AllowedValues.Values) > 0 {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
92 fmt.Println("\tallowed values:")
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
93 for _, av := range c.AllowedValues.Values {
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
94 fmt.Printf("\t\t%s\n", av.Value)
5e16d1fbe91f WFS Capabilities parser: Parse constraints, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1596
diff changeset
95 }
1596
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 }
74413d52c439 Started with WFS Capabilities parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 }