splitter

package
v0.0.1-alpha Latest Latest
Warning

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

Go to latest
Published: May 3, 2019 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const FileBackedJSONParseResultAppenderFlushSize = 100

FileBackedJSONParseResultAppenderFlushSize ukuran flush ke file. default akan di untuk file baced appender

View Source
const MarkerCharBackSlash = '\\'

MarkerCharBackSlash string \(garis miringbalik)

View Source
const MarkerCharDoubleDot = ':'

MarkerCharDoubleDot char/ byte :( titik dua)

View Source
const MarkerCharDoubleQuote = '"'

MarkerCharDoubleQuote char "( petik dua)

View Source
const MarkerCloseArray = ']'

MarkerCloseArray penanda tutup

View Source
const MarkerCloseBrace = '}'

MarkerCloseBrace marker }

View Source
const MarkerComa = ','

MarkerComa mrker koma

View Source
const MarkerSlashN = '\n'

MarkerSlashN penanda selesai \n

View Source
const MarkerSlashR = '\r'

MarkerSlashR penanda akhir baris (\r)

View Source
const MarkerSpace = ' '

MarkerSpace space

View Source
const OSPathSeparator = string(os.PathSeparator)

OSPathSeparator versi string dari os.PathSeparator

Variables

This section is empty.

Functions

func EchoFunctionDuration

func EchoFunctionDuration(logEntry *logrus.Entry, startTime time.Time)

EchoFunctionDuration print duration. ini untuk di masukan dalam deffer

func FindCommaToPrev

func FindCommaToPrev(targetData string, startScanIndex int) int

FindCommaToPrev mencari koma dari index di tentukan ke belakang

func NoModificatorJSONDataHandler

func NoModificatorJSONDataHandler(bytes []byte, parameterData map[string][]byte) (result []byte, err error)

NoModificatorJSONDataHandler default handler untuk ModificatorJSONData. tanpa ada modifikasi sama sekali

func ParseArrayData

func ParseArrayData(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction, markerForDeletion MarkArrayForIndexOfDeletion) (nextIndex int, err error)

ParseArrayData parse array data

func ParseArrayDataWithMap

func ParseArrayDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, appenderMap AppenderSinglePathMap, markerForDeletion JSONItemRemover) (nextIndex int, err error)

ParseArrayDataWithMap proses array dengan

func ParseByte1Line1JSONToByte

func ParseByte1Line1JSONToByte(jsonSourceReader *bufio.Reader, subJSONMetadata []ParseByte1Line1JSONToByteBridgeSubJSONData, extractedDataPaths []string, cleanedResultAppender AppenderSinglePathFunction, customValueGenerator AdditionalJSONDataGenerator, logEntry *logrus.Entry) (err error)

ParseByte1Line1JSONToByte parse json line by line dari bufio.Reader

func ParseJSONByteToByte

func ParseJSONByteToByte(jsonData []byte, primaryPath string, additionalPaths []string) (primaryResult string, additionalData map[string]string, cleanedSourceData string, err error)

ParseJSONByteToByte parse data from json. output to byte

func ParseJSONOnFile1Line1JSONToFile

func ParseJSONOnFile1Line1JSONToFile(outputDirectory string, sourceJSONFile string, cleanedDestinationFileName string, subJSONPaths []string, removedItemPaths []string, subJSONFilenameGenerator SubJSONFileNameGenerator) (err error)

ParseJSONOnFile1Line1JSONToFile parse file json. 1 line dalam file berisi 1 JSON data. data di pecah menjadi sub json data outputDirectory directory tenpat hasil akan di tulis sourceJSONFile file json asal untuk di pecah removedItemPaths path yang akan di clean up dari per json data dalam file cleanedDestinationFileName nama file hasil di bersihkan dari sub json removedItemPaths path yang di hapus

func ParseNumberSequence

func ParseNumberSequence(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction) (nextIndex int, err error)

ParseNumberSequence parse number sequence

func ParseNumberSequenceWithMap

func ParseNumberSequenceWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, appenderMap AppenderSinglePathMap) (nextIndex int, err error)

ParseNumberSequenceWithMap parse nmber sequence dengan map of appender

func ParseObjectData

func ParseObjectData(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction, markerForDeletion MarkArrayForIndexOfDeletion) (nextIndex int, err error)

ParseObjectData parse JSON object

func ParseObjectDataWithMap

func ParseObjectDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, indexOnArray int, appenderMap AppenderSinglePathMap, markerForDeletion JSONItemRemover) (nextIndex int, err error)

ParseObjectDataWithMap parse object indexOnArray kalau di di panggil dalam array. ini akan di isi. ini untuk mencegah menghapus keluar dari array

func ParseObjectValueData

func ParseObjectValueData(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction, markerForDeletion MarkArrayForIndexOfDeletion) (nextIndex int, err error)

ParseObjectValueData worker untuk membaca data value. string, number boolean or array

func ParseObjectValueDataWithMap

func ParseObjectValueDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, appenderMap AppenderSinglePathMap, markerForDeletion JSONItemRemover) (nextIndex int, err error)

ParseObjectValueDataWithMap parse object value dengan map

func ParseStringSequence

func ParseStringSequence(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction) (nextIndex int, err error)

ParseStringSequence parse string sequence jsonStringLength berisi length dari targetData. untuk optimasi karnea data cukup di hitung sekali saja

func ParseStringSequenceWithMap

func ParseStringSequenceWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, appenderMap AppenderSinglePathMap) (nextIndex int, err error)

ParseStringSequenceWithMap parse string sequence dengan appender beruapa map

func ParseTrueFalseValue

func ParseTrueFalseValue(targetData string, jsonStringLength int, currentPath string, startIndex int, appendToAppender AppenderFunction) (nextIndex int, err error)

ParseTrueFalseValue parse boolean value

func ParseTrueFalseValueWithMap

func ParseTrueFalseValueWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, appenderMap AppenderSinglePathMap) (nextIndex int, err error)

ParseTrueFalseValueWithMap parse boolean value, appender di kirim dengan map( tunggal)

func WrapLogWithClassAndMethod

func WrapLogWithClassAndMethod(baseEntry *logrus.Entry, className string, methodName string) *logrus.Entry

WrapLogWithClassAndMethod add class + method to class

func WrapLogWithUsername

func WrapLogWithUsername(baseEntry *logrus.Entry, username string) *logrus.Entry

WrapLogWithUsername menambahkan username dalam log

Types

type AdditionalJSONDataGenerator

type AdditionalJSONDataGenerator func(bytes []byte, lineIndex int, parameterData map[string][]byte) (JSONDataWithGeneratedValue []byte, generateDataParameter map[string]interface{}, err error)

AdditionalJSONDataGenerator generator data tambahan utnuk json. misal data sudah di cleanup, di generatekan ID dari data. ini untuk memudahkan transfer data dari dalam model hierarchy(master detail) bytes = data dta json mentah, in case perlu parse json lineIndex = line index dari data di proses parameterData = data hasil parse dari detail JSONDataWithGeneratedValue = json data setelah di tambahi byte yang di perlukan

type AppenderFunction

type AppenderFunction func(path string, bytes []byte) (err error)

AppenderFunction definition of appender function

type AppenderSinglePathFunction

type AppenderSinglePathFunction func(bytes []byte) (err error)

AppenderSinglePathFunction appender single path. ini untuk di masukan ke dalam map. untuk 1 appender saja

type AppenderSinglePathMap

type AppenderSinglePathMap map[string]AppenderSinglePathFunction

AppenderSinglePathMap alias untuk map[string]AppenderSinglePathFunction

type ByteBufferJSONParseResultAppender

type ByteBufferJSONParseResultAppender interface {
	JSONParseSingleResultAppender
	//Bytes get bytes writed
	Bytes() []byte
	//WriteToFile write bytes to file. salin semua content ke file
	WriteToFile(DestinationFilePath string) (err error)
	//ReadBytes read byte dengan delimiter(\n)
	ReadBytes() (line []byte, err error)
}

ByteBufferJSONParseResultAppender appender dengan backend file

func NewByteBufferJSONParseResultAppender

func NewByteBufferJSONParseResultAppender() ByteBufferJSONParseResultAppender

NewByteBufferJSONParseResultAppender generate new byte array driven appender

type CleanupMethod

type CleanupMethod func()

CleanupMethod mehtod untuk cleanup

func GenerateCleanupAppander

func GenerateCleanupAppander(logEntry *logrus.Entry, appenders ...JSONParseSingleResultAppender) (handler CleanupMethod)

GenerateCleanupAppander cleanup appender json

type ExtractJSONToByteDefinition

type ExtractJSONToByteDefinition struct {
	//PathToExtract path di extract dari json string
	PathToExtract string
	//Appender appender hasil parse
	Appender ByteBufferJSONParseResultAppender
}

ExtractJSONToByteDefinition definisi extract data to byte

type ExtractJSONToFileDefinition

type ExtractJSONToFileDefinition struct {
	//PathToExtract path di extract dari json string
	PathToExtract string
	//DestinationFilePath file tempat menulis hasil
	DestinationFilePath string
}

ExtractJSONToFileDefinition definsi extract json

type FileJSONParseResultAppender

type FileJSONParseResultAppender interface {
	JSONParseSingleResultAppender
	DestinationFilePath() string
	//SetFlushSize size flush
	SetFlushSize(flushSize int)
	//GetFlushSize ukuran flush
	GetFlushSize() int
}

FileJSONParseResultAppender appender dengan backend file

func NewFileBackedJSONParseResultAppender

func NewFileBackedJSONParseResultAppender(destinationPath string) FileJSONParseResultAppender

NewFileBackedJSONParseResultAppender generate new file appender

type GenerateCustomDataForCleanedData

type GenerateCustomDataForCleanedData func(lineIndex int, rawJSONData []byte) (generatedValues map[string][]byte, err error)

GenerateCustomDataForCleanedData cleaned data mungkin bisa di buatkan generated data. misal id untuk data bisa di generate dengan uuid. data ini bisa di inject ke dalam json di bersihkan pada bagian awal sehingga child data sudah bisa tahu id dari parent data. akan memudahkan untuk populate data, tanpa perlu melakukan select ke dalam database lineIndex index dari data di proses

type JSONItemRemover

type JSONItemRemover interface {
	//IsRemovedPath
	IsRemovedPath(nodePath string) bool
	//Reset reset catalog item remove
	Reset()
	//AddRangeToRemove tambahkan range untuk di remove dari string / array
	AddRangeToRemove(startIndex int, endIndex int)
	//MakeCleanedUpString membuat string dengan item array yang di masukan di kosongkan
	MakeCleanedUpString(dataToClean string) []byte
	//MakeCleanedUpByte membuat bye yang sudah di cleanup
	MakeCleanedUpByte(dataToClean []byte) []byte
	//RegisterRemovedPath tambah path untuk di remove
	RegisterRemovedPath(thePath string)
}

JSONItemRemover interface helper untuk clean up json. ini untuk remove sub data . ini untuk menghapus sub data. tujuan nya json sudah di pecah dalam file lain

func NewJSONItemRemover

func NewJSONItemRemover(removedPath []string) JSONItemRemover

NewJSONItemRemover instantiate data remover

func ParseJSONFileToFile

func ParseJSONFileToFile(jsonFilePath string, extractDefinitions []ExtractJSONToFileDefinition, removedItemPaths []string) (markerForDeletion JSONItemRemover, originalJSONData []byte, err error)

ParseJSONFileToFile baca file json, dan parse json. hasil di output ke json

func ParseJSONStringToByte

func ParseJSONStringToByte(targetData []byte, extractDefinitions []ExtractJSONToByteDefinition, removedItemPaths []string) (markerForDeletion JSONItemRemover, err error)

ParseJSONStringToByte parser 1 json string ke appender byte

func ParseJSONStringToFile

func ParseJSONStringToFile(targetData []byte, extractDefinitions []ExtractJSONToFileDefinition, removedItemPaths []string) (markerForDeletion JSONItemRemover, err error)

ParseJSONStringToFile parse json ke file

type JSONParseSingleResultAppender

type JSONParseSingleResultAppender interface {
	//Append add data to appender
	Append(bytes []byte) (err error)
	//Close close appender kalau ada
	Close() (err error)
	//OpenAppender open appender. and start writing
	OpenAppender() (err error)
}

JSONParseSingleResultAppender result. bisa byte atau

type JSONResultAppender

type JSONResultAppender interface {

	//Append add data to appender
	Append(path string, bytes []byte) (err error)
}

JSONResultAppender inteface untuk append saja

type LogCapturer

type LogCapturer interface {
	Release()
}

LogCapturer reroutes testing.T log output

func CaptureLog

func CaptureLog(t *testing.T) LogCapturer

CaptureLog redirects logrus output to testing.Log

type MarkArrayForIndexOfDeletion

type MarkArrayForIndexOfDeletion func(jsonPath string, startIndex int, endIndex int)

MarkArrayForIndexOfDeletion interface untuk menandai data untuk di remove. Use case nya sample json: { level1: { children1: ["child1" , "child2" , "child3"]}} ide nya dalam json string, children1 mau di takeout ke file yang berbeda, implementasi method ini : jsonPath=children1 , startIndex akan di isi dengan 11(start of children1 index 11) , endIndex = 56( closing array)

type ModificatorJSONData

type ModificatorJSONData func(bytes []byte, lineIndex int, parameterData map[string][]byte, generateDataParameter map[string]interface{}) (result []byte, err error)

ModificatorJSONData method untuk transform byte json menjadi json dengan tambahan tertentu. misal tambahan key dari parent di masukan ke dalam detail parameter parameterData di dapat dari parsig data json. sesuai dengan definisi parsing . ini akan di kirimkan dalam setiap parsing parameter data generated value di generate dengan code. misal id dari data

type ParseByte1Line1JSONToByteBridgeSubJSONData

type ParseByte1Line1JSONToByteBridgeSubJSONData struct {
	//SubJSONPath path untuk di extract
	SubJSONPath string
	//Modificator method untuk modify data.jika misal tidak ada handler maka pergunakan NoModificatorJSONDataHandler
	Modificator ModificatorJSONData
	//FinalAppender setelah selesai di clean up hasil di masukan ke appender mana
	FinalAppender AppenderSinglePathFunction
	//DoNotRemovePath kalau di flag true, data tidak akan di cleanup dari json
	DoNotRemovePath bool
}

ParseByte1Line1JSONToByteBridgeSubJSONData wrapper sub json data. path extract + modificator data( misal untuk menambahkan parent key ke dalam json data). ini untuk memudahkan parse sub data

type SimpleJSONTagOpenGenerator

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

SimpleJSONTagOpenGenerator builder tag json. pada open di tambahkan tag

func (*SimpleJSONTagOpenGenerator) AppendBoolean

func (p *SimpleJSONTagOpenGenerator) AppendBoolean(key string, value bool)

AppendBoolean add boolean value ke simple json tag

func (*SimpleJSONTagOpenGenerator) AppendFloatingNumber

func (p *SimpleJSONTagOpenGenerator) AppendFloatingNumber(key string, value interface{})

AppendFloatingNumber add floating number ke dalam json data

func (*SimpleJSONTagOpenGenerator) AppendIntegerNumber

func (p *SimpleJSONTagOpenGenerator) AppendIntegerNumber(key string, value interface{})

AppendIntegerNumber add int number. int, int16,int32 di buat dengan interface untuk kemudahan

func (*SimpleJSONTagOpenGenerator) AppendSimpleJSONOnStart

func (p *SimpleJSONTagOpenGenerator) AppendSimpleJSONOnStart(bytes []byte) []byte

AppendSimpleJSONOnStart add simple json di awal data.data di tambah dari apa yang sudah di append dalam struct

func (*SimpleJSONTagOpenGenerator) AppendSimpleNumber

func (p *SimpleJSONTagOpenGenerator) AppendSimpleNumber(key string, value string)

AppendSimpleNumber append number yang sudah dalam bentuk string

func (*SimpleJSONTagOpenGenerator) AppendString

func (p *SimpleJSONTagOpenGenerator) AppendString(key string, value string)

AppendString add string value

type SubJSONFileNameGenerator

type SubJSONFileNameGenerator func(JSONPath string, JSONRowIndex int) string

SubJSONFileNameGenerator generator sub data . untuk menulis data sub json yang di pecah dari induk

Jump to

Keyboard shortcuts

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