The current state of the import - export tools is anything but sufficient. To make the tool really useful, I need to implement its logic in such a way that it is possible to fullfill the following usecases:
Export
- All competitors for a single competition
- All competitors for a single event
- Multiple events, with all competitors, competitions and events
- All agegroups
- All competitions, along with the agegroups
Import:
In general of course all of the items above, but seem from a different ankle:
Competitors for an event need a way to specify the event or to use, or if a new one should be used.
Competitors for a competiton need a way to specify the competition to use, or if a new one should be used.
Competitions / Agegroups need to define if they should update the exiting, always create new ones or being ignored if existing are there.
In other words, I need a FULL SYNCHRONISATION TOOL, with the following options:
- Decision, wether existing should be updated, the element should be ignored, or a new one should be created, for each sync problem.
This option must be defined for the following main entities:
-> Participants (Identified by name, firstname, birthday, gender).
-> Agegroups(Identified by name)
-> Competitions(Identified by identifier)
-> Events (Identified by name)
The most complicated part, is, of course, managing the REFERENCES, not the attributes. Especially because this can have multiple side-effects:
-> Teams are automatically updated if new participants are added to them
-> New competitors are automatically added to existing participants. Existing competitors full under the update rule given (overwrite, new, create)
-> Events are given automatically the references to the competitions they need
-> Agegroups / Competitions also receive all needed combination.
So, in general, as it is easy to see, references are never destructive: New ones will be created, but older ones are always maintained.
This, however, is NOT true for simple references, like team -> participant. In that case, the udpate behavior is used again.
So whats needed?
Import
-> Update Logic
-> Concept for the GUI to handle conflicts, at best in a list at once.
-> Selection options during import for the possible import types.
Export
Which elements (tree-select as the navigator)
Logic to exactly export the given ones