Documentation
¶
Index ¶
- Constants
- func EchoFunctionDuration(logEntry *logrus.Entry, startTime time.Time)
- func FindCommaToPrev(targetData string, startScanIndex int) int
- func NoModificatorJSONDataHandler(bytes []byte, parameterData map[string][]byte) (result []byte, err error)
- func ParseArrayData(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseArrayDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseByte1Line1JSONToByte(jsonSourceReader *bufio.Reader, ...) (err error)
- func ParseJSONByteToByte(jsonData []byte, primaryPath string, additionalPaths []string) (primaryResult string, additionalData map[string]string, ...)
- func ParseJSONOnFile1Line1JSONToFile(outputDirectory string, sourceJSONFile string, ...) (err error)
- func ParseNumberSequence(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseNumberSequenceWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseObjectData(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseObjectDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseObjectValueData(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseObjectValueDataWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseStringSequence(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseStringSequenceWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseTrueFalseValue(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func ParseTrueFalseValueWithMap(targetData string, jsonStringLength int, currentPath string, startIndex int, ...) (nextIndex int, err error)
- func WrapLogWithClassAndMethod(baseEntry *logrus.Entry, className string, methodName string) *logrus.Entry
- func WrapLogWithUsername(baseEntry *logrus.Entry, username string) *logrus.Entry
- type AdditionalJSONDataGenerator
- type AppenderFunction
- type AppenderSinglePathFunction
- type AppenderSinglePathMap
- type ByteBufferJSONParseResultAppender
- type CleanupMethod
- type ExtractJSONToByteDefinition
- type ExtractJSONToFileDefinition
- type FileJSONParseResultAppender
- type GenerateCustomDataForCleanedData
- type JSONItemRemover
- func NewJSONItemRemover(removedPath []string) JSONItemRemover
- func ParseJSONFileToFile(jsonFilePath string, extractDefinitions []ExtractJSONToFileDefinition, ...) (markerForDeletion JSONItemRemover, originalJSONData []byte, err error)
- func ParseJSONStringToByte(targetData []byte, extractDefinitions []ExtractJSONToByteDefinition, ...) (markerForDeletion JSONItemRemover, err error)
- func ParseJSONStringToFile(targetData []byte, extractDefinitions []ExtractJSONToFileDefinition, ...) (markerForDeletion JSONItemRemover, err error)
- type JSONParseSingleResultAppender
- type JSONResultAppender
- type LogCapturer
- type MarkArrayForIndexOfDeletion
- type ModificatorJSONData
- type ParseByte1Line1JSONToByteBridgeSubJSONData
- type SimpleJSONTagOpenGenerator
- func (p *SimpleJSONTagOpenGenerator) AppendBoolean(key string, value bool)
- func (p *SimpleJSONTagOpenGenerator) AppendFloatingNumber(key string, value interface{})
- func (p *SimpleJSONTagOpenGenerator) AppendIntegerNumber(key string, value interface{})
- func (p *SimpleJSONTagOpenGenerator) AppendSimpleJSONOnStart(bytes []byte) []byte
- func (p *SimpleJSONTagOpenGenerator) AppendSimpleNumber(key string, value string)
- func (p *SimpleJSONTagOpenGenerator) AppendString(key string, value string)
- type SubJSONFileNameGenerator
Constants ¶
const FileBackedJSONParseResultAppenderFlushSize = 100
FileBackedJSONParseResultAppenderFlushSize ukuran flush ke file. default akan di untuk file baced appender
const MarkerCharBackSlash = '\\'
MarkerCharBackSlash string \(garis miringbalik)
const MarkerCharDoubleDot = ':'
MarkerCharDoubleDot char/ byte :( titik dua)
const MarkerCharDoubleQuote = '"'
MarkerCharDoubleQuote char "( petik dua)
const MarkerCloseArray = ']'
MarkerCloseArray penanda tutup
const MarkerCloseBrace = '}'
MarkerCloseBrace marker }
const MarkerComa = ','
MarkerComa mrker koma
const MarkerSlashN = '\n'
MarkerSlashN penanda selesai \n
const MarkerSlashR = '\r'
MarkerSlashR penanda akhir baris (\r)
const MarkerSpace = ' '
MarkerSpace space
const OSPathSeparator = string(os.PathSeparator)
OSPathSeparator versi string dari os.PathSeparator
Variables ¶
This section is empty.
Functions ¶
func EchoFunctionDuration ¶
EchoFunctionDuration print duration. ini untuk di masukan dalam deffer
func FindCommaToPrev ¶
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)
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 ¶
AppenderFunction definition of appender function
type AppenderSinglePathFunction ¶
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 ¶
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 ¶
SubJSONFileNameGenerator generator sub data . untuk menulis data sub json yang di pecah dari induk
Source Files
¶
- JSONItemRemover.go
- JSONSplitterToolMultipleNode.go
- ParseArrayData.go
- ParseByte1Line1JSONToByte.go
- ParseJSONOnFile1Line1JSONToFile.go
- ParseJSONString.go
- ParseJSONStringToByte.go
- ParseJSONStringToFile.go
- ParseNumberSequence.go
- ParseObjectData.go
- ParseObjectValueData.go
- ParseStringSequence.go
- ParseTrueFalseValue.go
- byteBufferBackedJSONParseResultAppenderStruct.go
- common-spliter-tool.go
- customFunctionJsonParseResultAppender.go
- fileBackedJSONParseResultAppenderStruct.go
- helper-tool.go
- log-helper.go
- simple-json-tag.go
- test-setup.go