marshal

package
v0.0.0-...-f3acd81 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2023 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MaxParsingErrors = 200

MaxParsingErrors is the number of parsing errors to report per file.

Functions

func ConsumeFatalErrors

func ConsumeFatalErrors(eventChan chan Event) []string

ConsumeFatalErrors récupère les erreurs fatales depuis un canal d'évènements

func CreateTempFileWithContent

func CreateTempFileWithContent(t *testing.T, content []byte) *os.File

CreateTempFileWithContent créée un fichier temporaire et le supprime après le passage (ou échec) du test.

func GetFatalError

func GetFatalError(output tuplesAndEvents) string

GetFatalError retourne le message d'erreur fatale obtenu suite à une opération de parsing, ou une chaine vide.

func GetFatalErrors

func GetFatalErrors(event Event) []interface{}

GetFatalErrors retourne les messages d'erreurs fatales obtenus suite à une opération de parsing, ou nil.

func GetJSON

func GetJSON(tuple Tuple) ([]byte, error)

GetJSON sérialise un tuple au format JSON.

func GetSiret

func GetSiret(compte string, date *time.Time, cache Cache, batch *base.AdminBatch) (string, error)

GetSiret gets the siret related to a specific compte at a given point in time

func GetSiretFromComptesMapping

func GetSiretFromComptesMapping(compte string, date *time.Time, comptes Comptes) (string, error)

GetSiretFromComptesMapping gets the siret related to a specific compte at a given point in time

func LogProgress

func LogProgress(lineNumber *int) (stop context.CancelFunc)

LogProgress affiche le numéro de ligne en cours de parsing, toutes les 2s.

func LowercaseFields

func LowercaseFields(headerFields []string) []string

LowercaseFields normalise les noms de colonnes en minuscules.

func OpenCsvReader

func OpenCsvReader(batchFile base.BatchFile, comma rune, lazyQuotes bool) (*os.File, *csv.Reader, error)

OpenCsvReader ouvre un fichier CSV potentiellement gzippé et retourne un csv.Reader.

func OpenFileReader

func OpenFileReader(batchFile base.BatchFile) (*os.File, io.Reader, error)

OpenFileReader ouvre un fichier potentiellement gzippé et retourne un io.Reader.

func ParseFilesFromBatch

func ParseFilesFromBatch(cache Cache, batch *base.AdminBatch, parser Parser) (chan Tuple, chan Event)

ParseFilesFromBatch parse les tuples des fichiers listés dans batch pour le parseur spécifié.

func ParseLines

func ParseLines(parsedLineChan chan ParsedLineResult, lineReader *csv.Reader, parseLine func(row []string, parsedLine *ParsedLineResult))

ParseLines appelle la fonction parseLine() sur chaque ligne du fichier CSV pour transmettre les tuples et/ou erreurs dans parsedLineChan.

func RunParser

func RunParser(
	parser Parser,
	cache Cache,
	inputFile string,
) (output tuplesAndEvents)

RunParser returns Tuples and Events resulting from the execution of a Parser on a given input file.

func RunParserInline

func RunParserInline(t *testing.T, parser Parser, rows []string) (output tuplesAndEvents)

RunParserInline returns Tuples and Events resulting from the execution of a Parser on a given list of rows, with an empty Cache.

func RunParserInlineEx

func RunParserInlineEx(t *testing.T, cache Cache, parser Parser, rows []string) (output tuplesAndEvents)

RunParserInlineEx returns Tuples and Events resulting from the execution of a Parser on a given list of rows.

func SetGitCommit

func SetGitCommit(hash string)

SetGitCommit spécifie la valeur à stocker dans le CommitHash de chaque événement.

func TestParserOutput

func TestParserOutput(
	t *testing.T,
	parser Parser,
	cache Cache,
	inputFile string,
	goldenFile string,
	update bool,
)

TestParserOutput compares output Tuples and output Events with JSON stored in a golden file. If update = true, the the golden file is updated.

func UrssafToDate

func UrssafToDate(urssaf string) (time.Time, error)

UrssafToDate convertit le format de date urssaf en type Date. Les dates urssaf sont au format YYYMMJJ tels que YYY = YYYY - 1900 (e.g: 118 signifie 2018)

func UrssafToPeriod

func UrssafToPeriod(urssaf string) (misc.Periode, error)

UrssafToPeriod convertit le format de période urssaf en type Periode. On trouve ces périodes formatées en 4 ou 6 caractère (YYQM ou YYYYQM). si YY < 50 alors YYYY = 20YY sinon YYYY = 19YY. si QM == 62 alors période annuelle sur YYYY. si M == 0 alors période trimestrielle sur le trimestre Q de YYYY. si 0 < M < 4 alors mois M du trimestre Q.

Types

type Cache

type Cache map[string]interface{}

Cache saves values in memory

func NewCache

func NewCache() Cache

NewCache returns a new cache object

func (Cache) Get

func (ca Cache) Get(name string) (interface{}, error)

Get gets a value from the cache

func (Cache) Set

func (ca Cache) Set(name string, value interface{})

Set writes a value to the Cache

type Code

type Code string

Code test

type ColMapping

type ColMapping struct {
	// contains filtered or unexported fields
}

ColMapping fournit l'indice de chaque colonne.

func CreateColMapping

func CreateColMapping(index map[string]int) ColMapping

CreateColMapping créée un index de colonnes. Utile pour constituer des données de test.

func IndexColumnsFromCsvHeader

func IndexColumnsFromCsvHeader(reader *csv.Reader, destObject interface{}) (ColMapping, error)

IndexColumnsFromCsvHeader extrait les noms de colonnes depuis l'en-tête d'un flux CSV puis les indexe à l'aide de ValidateAndIndexColumnsFromColTags().

func ValidateAndIndexColumnsFromColTags

func ValidateAndIndexColumnsFromColTags(headerRow []string, destObject interface{}) (ColMapping, error)

ValidateAndIndexColumnsFromColTags valide puis indexe les colonnes trouvées en en-tête d'un fichier csv, à partir des noms de colonnes spécifiés dans le tag "col" ou "cols" annotant les propriétés du type de destination du parseur.

func (ColMapping) HasFields

func (colMapping ColMapping) HasFields(requiredFields []string) (bool, error)

HasFields vérifie la présence d'un ensemble de colonnes.

func (ColMapping) IndexRow

func (colMapping ColMapping) IndexRow(row []string) IndexedRow

IndexRow retourne une structure pour faciliter la lecture de données.

type Comptes

type Comptes map[string][]SiretDate

Comptes associates a SiretDate to an urssaf account number

func GetCompteSiretMapping

func GetCompteSiretMapping(cache Cache, batch *base.AdminBatch, mr mappingReader) (Comptes, error)

GetCompteSiretMapping returns the siret mapping in cache if available, else reads the file and save it in cache. Lazy loaded.

func MockComptesMapping

func MockComptesMapping(mapping map[string]string) Comptes

MockComptesMapping ...

func OpenAndReadSiretMapping

func OpenAndReadSiretMapping(
	basePath string,
	batchFile base.BatchFile,
	compteSiretMapping Comptes,
	cache Cache,
	batch *base.AdminBatch,
) (Comptes, error)

OpenAndReadSiretMapping opens files and reads their content

func (*Comptes) GetSortedKeys

func (comptes *Comptes) GetSortedKeys() []string

GetSortedKeys retourne la liste classée des numéros de Comptes.

type Event

type Event struct {
	ID         bson.ObjectId `json:"-" bson:"_id"`
	Date       time.Time     `json:"date" bson:"date"`
	StartDate  time.Time     `json:"startDate" bson:"startDate"`
	CommitHash string        `json:"commitHash,omitempty" bson:"commitHash,omitempty"`
	Comment    interface{}   `json:"event" bson:"event"`
	Priority   Priority      `json:"priority" bson:"priority"`
	Code       Code          `json:"parserCode" bson:"parserCode"`
	ReportType string        `json:"report_type" bson:"reportType"`
}

Event est un objet de journal

func CreateEvent

func CreateEvent() Event

CreateEvent initialise un évènement avec les valeurs par défaut.

func CreateReportEvent

func CreateReportEvent(fileType string, report interface{}) Event

CreateReportEvent initialise un évènement contenant un rapport de parsing.

func ParseFile

func ParseFile(path base.BatchFile, parser Parser, batch *base.AdminBatch, cache Cache, outputChannel chan Tuple) Event

ParseFile parse les tuples du fichier spécifié puis retourne un rapport de journal.

func (Event) ParseReport

func (event Event) ParseReport() (map[string]interface{}, error)

ParseReport permet d'accéder aux propriétés d'un rapport de parsing.

type IndexedRow

type IndexedRow struct {
	// contains filtered or unexported fields
}

IndexedRow facilite la lecture de données par colonnes, dans une ligne.

func (IndexedRow) GetBool

func (indexedRow IndexedRow) GetBool(colName string) (bool, error)

GetBool retourne la valeur booléenne associée à la colonne donnée, sur la ligne en cours. Un pointeur nil est retourné si la colonne n'existe pas ou la valeur est une chaine vide.

func (IndexedRow) GetCommaFloat64

func (indexedRow IndexedRow) GetCommaFloat64(colName string) (*float64, error)

GetCommaFloat64 retourne la valeur décimale avec virgule associée à la colonne donnée, sur la ligne en cours. Un pointeur nil est retourné si la colonne n'existe pas ou la valeur est une chaine vide.

func (IndexedRow) GetFloat64

func (indexedRow IndexedRow) GetFloat64(colName string) (*float64, error)

GetFloat64 retourne la valeur décimale associée à la colonne donnée, sur la ligne en cours. Un pointeur nil est retourné si la colonne n'existe pas ou la valeur est une chaine vide.

func (IndexedRow) GetInt

func (indexedRow IndexedRow) GetInt(colName string) (*int, error)

GetInt retourne la valeur entière associée à la colonne donnée, sur la ligne en cours. Un pointeur nil est retourné si la colonne n'existe pas ou la valeur est une chaine vide.

func (IndexedRow) GetIntFromFloat

func (indexedRow IndexedRow) GetIntFromFloat(colName string) (*int, error)

GetIntFromFloat retourne la valeur entière associée à la colonne donnée, sur la ligne en cours. Un pointeur nil est retourné si la colonne n'existe pas ou la valeur est une chaine vide.

func (IndexedRow) GetOptionalVal

func (indexedRow IndexedRow) GetOptionalVal(colName string) (string, bool)

GetOptionalVal retourne la valeur associée à la colonne donnée, sur la ligne en cours. Dans le cas où la colonne n'existe pas, le booléen sera faux.

func (IndexedRow) GetVal

func (indexedRow IndexedRow) GetVal(colName string) string

GetVal retourne la valeur associée à la colonne donnée, sur la ligne en cours. Dans le cas où la colonne n'existe pas, une erreur fatale est déclenchée.

type ParsedLineResult

type ParsedLineResult struct {
	Tuples      []Tuple
	Errors      []error
	FilterError error
}

ParsedLineResult est le résultat du parsing d'une ligne.

func (*ParsedLineResult) AddRegularError

func (res *ParsedLineResult) AddRegularError(err error)

AddRegularError permet au parseur de rapporter une erreur d'extraction.

func (*ParsedLineResult) AddTuple

func (res *ParsedLineResult) AddTuple(tuple Tuple)

AddTuple permet au parseur d'ajouter un tuple extrait depuis la ligne en cours.

func (*ParsedLineResult) SetFilterError

func (res *ParsedLineResult) SetFilterError(err error)

SetFilterError permet au parseur de rapporter que la ligne doit été filtrée.

type Parser

type Parser interface {
	GetFileType() string
	Init(cache *Cache, batch *base.AdminBatch) error
	Open(filePath string) error
	ParseLines(parsedLineChan chan ParsedLineResult)
	Close() error
}

Parser spécifie les fonctions qui doivent être implémentées par chaque parseur de fichier.

type ParsingTracker

type ParsingTracker struct {
	// contains filtered or unexported fields
}

ParsingTracker permet de collecter puis rapporter des erreurs de parsing.

func NewParsingTracker

func NewParsingTracker() ParsingTracker

NewParsingTracker retourne une instance pour rapporter les erreurs de parsing.

func (*ParsingTracker) AddFatalError

func (tracker *ParsingTracker) AddFatalError(err error)

AddFatalError rapporte une erreur fatale liée au parsing d'un fichier

func (*ParsingTracker) AddFilterError

func (tracker *ParsingTracker) AddFilterError(err error)

AddFilterError rapporte le fait que la ligne en cours de parsing est ignorée à cause du filtre/périmètre

func (*ParsingTracker) AddParseError

func (tracker *ParsingTracker) AddParseError(err error)

AddParseError rapporte une erreur rencontrée sur la ligne en cours de parsing

func (*ParsingTracker) Next

func (tracker *ParsingTracker) Next()

Next informe le Tracker qu'on va parser la ligne suivante.

func (*ParsingTracker) Report

func (tracker *ParsingTracker) Report(batchKey string, filePath string) bson.M

Report génère un rapport de parsing à partir des erreurs rapportées.

type Priority

type Priority string

Priority test

type SirenFilter

type SirenFilter map[string]bool

SirenFilter liste les numéros SIREN d'entreprise et établissements à exclure des traitements.

func GetSirenFilter

func GetSirenFilter(cache Cache, batch *base.AdminBatch) (SirenFilter, error)

GetSirenFilter reads the filter from cache if it cans, or else it reads it from input files and stores it in cache

func GetSirenFilterFromCache

func GetSirenFilterFromCache(cache Cache) SirenFilter

GetSirenFilterFromCache reads the filter from cache.

func (SirenFilter) Skips

func (filter SirenFilter) Skips(siretOrSiren string) bool

Skips retourne `false` si le numéro SIREN/SIRET peut être traité, car il est inclus dans le Filtre, ou car il n'y a pas de filtre.

type SiretDate

type SiretDate struct {
	Siret string
	Date  time.Time
}

SiretDate holds a pair of a siret and a date

type Tuple

type Tuple interface {
	Key() string   // entité définie par le tuple: numéro SIRET ou SIREN
	Scope() string // type d'entité: "entreprise" ou "etablissement"
	Type() string  // identifiant du parseur qui a extrait ce tuple, ex: "apconso"
}

Tuple spécifie les fonctions que chaque parseur doit implémenter pour ses tuples.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL