Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

JxBase

Build Status codecov

JxBase is a fork from jdbf, a Java utility to read/write DBF files

User Guide

Read a DBF file

TODO

See the integration test example

Read a DBF file with MEMO fields

TODO

See the integration test example

Write a DBF file

TODO

See the integration test example

Write a DBF file with MEMO fields

TODO

See the integration test example

Design of an xBase database

The database is a simple set of files.

References

See:

The DBF file

The main file. Contains the header and the records.

+------- Header ---------+
|       Metadata         |   <- XBaseMetaDataReader/Writer    
| Field Descriptor Array |   <- XBaseFieldDescriptorArrayReader/Writer
|        Optional        |   <- XBaseOptionalReader/Writer
+------------------------+
|        Records         |   <- XBaseRecordReader/Writer
+------------------------+

DBT file (memo: optional)

This file contains block of data.

+------------------------+  \
|         Header         |   |
+------------------------+   } <- XBaseMemoReader/Writer
|        Records         |   |
+------------------------+  /

NDX file (index: optional)

TODO

Design of JxBase

JxBase aims to build DBF format reader and writer by layers. Each dialect derives an existing format and adds fields, formats, files.

The covariance parameter problem

Whereas a GenericRecordReader has a GenericDialect parameter, a FoxProRecordReader needs a FoxProDialect parameter. A covariant parameter (the parameters type varies with the class type) is a real problem because it violates the Liskov substitution principle: the subclass FoxProRecordReader won't work with a GenericDialect parameter (see https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)#Covariant_method_parameter_type). Usually, one solves this problem with generics:

    class GenericRecordReader<D extends GenericDialect> {
        ...
    }
    
    class FoxProRecordReader extends GenericRecordReader<FoxProDialect> {
        ...
    }

Currently, JxBase doesn't use generics for covariance because this would lead to a really complex situation. The fallaback used to achieve the covariance is a simple cast: we accept a GenericDialect and try to cast the instance into a FoxProDialect

About

JxBase is a fork from [jdbf](https://github.com/iryndin/jdbf), a Java utility to read/write DBF files

Resources

License

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.