Repository Task Data
Refactoring Objectives
- Task Data Refactoring
- Currently not nomalized
- repository configuration options stored in same file
- Configuration data is being updated upon load anyway
- Presentation information such as hidden/readonly status fields being persisted (put with configuration?)
- Operations being included
- Task Data Externalization
- Switch to XML
- Possibly use IMemento
- Separate files vs. one BIG file
- Consider zipping all the individual xml files together into one zip file (similar to Open Office file format ODF)
- Lazy loading
- currently loaded at tasklist load time
- Could just have a flag indicating the existence of an offline file rather than load the data
- What does this break?
Proposed XML Serialization
<TaskData version="1.0" taskId="1" repositoryUrl="http://bugs.eclipse.org/bugs" repositoryKind="Bugzilla" modifiedTs="timestamp">
<Attribute id="...priority" modifiedTs="timestamp" author="rob.elves">
<Value>xxx</Value>
<Value>xxx</Value>
<Value>xxx</Value>
</Attribute>
<Comment hasAttachment="true" attachmentId="1">
<Attribute id="...author">
<Value>rob.evles</Value>
</Attribute>
</Comment>
<NewComment>
My new comment
</NewComment>
<Attachment id="1" isObsolete="false">
<Attribute id="...attachment_date">
<Value>date</Value>
</Attribute>
</Attachment>
</TaskData>
Index
- Another option is to use Lucene as a data store
Repository Configuration
Refactoring Objectives
- (option 1) Leave as responsibility of connector assuming a contract:
- Provide IMemento upon startup as an option?
- Remote configuration gathered periodically
- Always available (even if repository is deleted, configuration sticks)
- Given a configuration folder within .mylar to persist data (not ideal)
- Task data combined with configuration upon presentation rather than persistence
- (option 2) XML externalization
- Available options per id (ie. taskdata.priority --> P1, P2, P3...)
- Available options given a specific product selection <Attribute id="taskdata.components"><Value>Bugzilla</Value><Value>Core</Value>
- Hidden/readonly status for attributes?
Proposed XML Serialization
<RepositoryConfiguration>
<GeneralOptions id="...products" hidden="false" readonly="false">
<Value>Mylar</Value>
<Value>Nebula</Value>
</GeneralOptions>
<ProductOptions>
<Product name="Mylar">
<Options id="....os">
<Value>MacOS</Value>
<Value default="true">Windows XP</Value>
<Options>
</Product>
</ProductOptions>
</RepositoryConfiguration>