Basics
------

planconvert converts some project file formats into Calligra Plan file format.
It is written in Java and uses MPXJ for reading other file formats, see:
https://www.mpxj.org

This means that planconvert *should* be able to convert from all the file formats MPXJ supports.
However, so far only Planner (*.planner) and MS project file formats *.mpx and *.mpp has been tested.

Also password proteced files cannot be read.

The MS .mpd files (database files) need a java-odbc bridge which I don't think is available on linux.

Dependecies
-----------
To run anything you need a  jave runtime environment,
e.g: openjdk-17-jre for ubuntu systems.

This is also needed to run filters.

To run tests, build new stuff etc you need ant.

Schema classes
--------------
Schema classes are generated from the plan-<version>.dtd file.
See property 'plan.dtd.dir' in build.xml.

Jobs execution
--------------
Everything is done using 'ant' and the different jobs are defined in build.xml.

Making changes
--------------
You need to update the build.xml file:

1) New mpxj version:
    a) In build.xml: Change property 'mpxj.version' to the new version.
    b) Execute: 'ant get-mpxj'
       This will download and unsip mpxj into 'mpxj.dir'.

2) New plan dtd version:
    a) In build.xml: Change property 'plan.version' to the new version
    b) If mpxj is not present, execute 'ant get-mpxj'
    c) Execute: 'ant xjc'
       This will create new schema classes.
    d) Update PlanWriter to deal with changes
    e) Execute 'ant jar'
    f) Commit when everything works ;)

Regenerate everything
---------------------
Execute: 'ant all'

Run tests
---------
Note: These are not auto tests, you must run them manually AND check results manually!

Execute: 'ant run-test'

The test is run on files found in: ${test.data.dir}

You can also test any single file using this command:
java -cp jar/planconvert.jar TestConvert <test file> <result file>

Mpxj has a lot of test files in: ${mpxj.dir}/junit/data
You can have all these files converted if you change ${test.data.dir} to point there.


The test writes result files to ${result.dir} and a log file to ${test.dir}

Running
-------
Execute: 'ant run'
