fix composite

This commit is contained in:
zhiqiang feng
2021-01-05 18:04:17 +08:00
parent 625cc6b94e
commit 99440a393a
3 changed files with 80 additions and 31 deletions
+41 -28
View File
@@ -2,8 +2,8 @@ package parser
import (
"errors"
"fmt"
"regexp"
"strings"
)
const (
@@ -15,31 +15,57 @@ const (
TypeFlightPlan = "FPL"
TypeDelay = "DLA"
DepRegex = `-?(?P<dep>\w+\d{0,4})`
ArrRegex = `-?(?P<arr>\w+\d{0,4})`
PlaneRegex = `-?(?P<plane>\w+\d+\/?\w\d+)`
DofRegex = `-?(?P<dof>DOF\/\d{6})?`
KeyPlane = "plane"
DepRegex = `(?P<dep>[A-Z]+\d{0,4})`
ArrRegex = `(?P<arr>[A-Z]+\d{0,4})`
PlaneRegex = `(?P<plane>\w+\d+\/?\w\d+)`
AircraftRegex = `-?(?P<aircraft>[\w\/]+)`
DofRegex = `-?(?P<dof>DOF\/\d{6})?`
OtherRegex = `-?(?P<NAME>[A-Z0-9\/ \n\r]+)`
/**
* example:
* (ARR-CSN3126/A5040-ZSPD-ZBTJ1601)
* (DEP-CSN3125/A4553-ZGHA0554-ZBTJ-DOF/120820)
*/
CompositeDepArr = `(?m)\(\[A-Z]{3}` + PlaneRegex + DepRegex + ArrRegex + DofRegex + `\)`
CompositeDepArr = `(?m)\([A-Z]{3}-` + PlaneRegex + "-" + DepRegex + "-" + ArrRegex + DofRegex + `\)`
/**
* sample:
* (DLAABC123NZAA0145VTBSDOF/091120)
*/
CompositeDelay = `(?m)\(DLA` + PlaneRegex + DepRegex + ArrRegex + DofRegex + `\)`
CompositeDelay = `(?m)\(DLA-` + PlaneRegex + "-" + DepRegex + "-" + ArrRegex + DofRegex + `\)`
KeyDeparture = "dep"
KeyArrival = "arr"
KeyDof = "dof"
KeyPlane = "plane"
KeyAircraft = "aircraft"
KeyOther = "other"
KeyTime = "time"
)
var flopRegex = regexp.MustCompile(FlopRegex)
/**
* example:
* (FPL-AAR997-IS
* -B763/H-SDHIPRWZ/S
* -RKSI0120
* -N0473F320 NOPIK1B NOPIK G597 GONAV/N0473F320 G597 AGAVO/K0876S0980
* G597 DONVO A326 ANRAT ANRAT2A
* -ZBTJ0126 ZBAA
* -EET/ZSHA0025 ZYSH0039 ZBPE0059 REG/HL7507 SEL/KRHJ OPR/AAR
* DOF/090516 RMK/TCAS II EQUIPPED NAV/RNAV1 RNAV5 STS/CARGO)
* NNNN
*/
var CompositeFlightPlan = `(?m)\(FPL-` + PlaneRegex + `-IS( |\n)+` +
AircraftRegex + getOtherRegexWithName("p1") + "-" +
DepRegex + `[ \n]+-` +
getOtherRegexWithName("p2") + "-" +
ArrRegex + ` \w+[ \n]+-` +
getOtherRegexWithName("p3") + `\)`
func parseArrOrDep(telegram *Telegram, data string) {
fmt.Println(CompositeDepArr)
fields := getFields(CompositeDepArr, data)
if len(fields) < 1 {
telegram.ParseErrors = append(telegram.ParseErrors, errors.New("data less than 4 "))
@@ -59,26 +85,13 @@ func parseArrOrDep(telegram *Telegram, data string) {
}
func parseFlightPlan(telegram *Telegram, data string) {
/**
* example:
* (FPL-AAR997-IS
* -B763/H-SDHIPRWZ/S
* -RKSI0120
* -N0473F320 NOPIK1B NOPIK G597 GONAV/N0473F320 G597 AGAVO/K0876S0980
* G597 DONVO A326 ANRAT ANRAT2A
* -ZBTJ0126 ZBAA
* -EET/ZSHA0025 ZYSH0039 ZBPE0059 REG/HL7507 SEL/KRHJ OPR/AAR
* DOF/090516 RMK/TCAS II EQUIPPED NAV/RNAV1 RNAV5 STS/CARGO)
* NNNN
*/
values := getSplitValues(data)
telegram.FlightNumber = values[1]
telegram.Plane = values[3]
telegram.Departure, telegram.DepartureTime = parseAirportAndTime(values[5])
destString := strings.Split(values[7], " ")
telegram.Destination, telegram.DestinationTime = parseAirportAndTime(destString[0])
telegram.DateOfFlight = parseDof(values[8])
fmt.Println(CompositeFlightPlan)
fields := getFields(CompositeFlightPlan, data)
telegram.FlightNumber, _ = parseFlight(fields[KeyPlane])
telegram.Aircraft = fields[KeyAircraft]
telegram.Departure, telegram.DepartureTime = parseAirportAndTime(fields[KeyDeparture])
telegram.Destination, telegram.DestinationTime = parseAirportAndTime(fields[KeyArrival])
telegram.DateOfFlight = parseDof(fields["p3"])
}
func parseDelay(telegram *Telegram, data string) {