|
|
Line 2: |
Line 2: |
| | | |
| ==Repository Task Data== | | ==Repository Task Data== |
− |
| |
− | ===Refactoring Objectives===
| |
− |
| |
− | * Task Data Refactoring
| |
− | ** Currently not normalized
| |
− | *** 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?)
| |
− | *** These flags could be provided by the Attribute Factory (no need to persist them)
| |
− | *** Read-only can depend on permissions of the logged in user so it might need to be stored in the data model
| |
− | ** Need to make sure configuration data is persisted as long as there is a single task for that repository
| |
− | ** Attributes need to point to a field in the configuration data (e.g. milestone) that stores a list of choices
| |
− | ** Operations being included
| |
− | *** Needed for Trac since these depend on permissions of the logged in user
| |
− | ** Task Data Externalization
| |
− | *** Switch to XML
| |
− | *** Possibly use IMemento
| |
− | **** Requires dependency on UI?
| |
− | *** Separate files vs. one BIG file
| |
− | **** Single files: Easy to implement lazy loading, but possibly many files in a single directory
| |
− | **** Alternative: Use Apache Lucene for storage
| |
− | *** Consider zipping all the individual xml files together into one zip file (similar to Open Office file format ODF)
| |
− |
| |
− | * Lazy loading [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=157257 bug#157257]]
| |
− | ** 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>
| |
− |
| |
− | <Attribute id="milestone" choices="milestone">
| |
− | <Value>M1</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>
| |