From: JIRA (f. J. D. ) <ji...@pc...> - 2013-05-30 12:13:17
|
<style> /* Changing the layout to use less space for mobiles */ @media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) { #email-body { min-width: 30em !important; } #email-page { padding: 8px !important; } #email-banner { padding: 8px 8px 0 8px !important; } #email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; } #email-fields { padding: 0 8px 8px 8px !important; } #email-gutter { width: 0 !important; } } </style> <div id="email-body"> <table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;"> <tr valign="top"> <td id="email-page" style="padding:16px !important;"> <table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;"> <tr valign="top"> <td bgcolor="#003366" style="background-color:#003366;color:#ffffff;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="http://jira.pcgen.org/s/en_US7r5c5v-418945332/812/6/_/images/icon-jira-logo.png" alt="" style="vertical-align:top;" /></td> </tr><tr valign="top"> <td id="email-banner" style="padding:32px 32px 0 32px;"> <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;"> <tr valign="top"> <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;"> <img id="email-avatar" src="http://jira.pcgen.org/secure/useravatar?avatarId=10142" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" /> <div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;"> <a class="user-hover" rel="jamesd" id="email_jamesd" href="http://jira.pcgen.org/secure/ViewProfile.jspa?name=jamesd" style="color:#326ca6;">James Dempsey</a> created <img src="http://jira.pcgen.org/images/icons/genericissue.gif" height="16" width="16" border="0" align="absmiddle" alt="Mini-Project"> <a style='color:#326ca6;text-decoration:none;' href='http://jira.pcgen.org/browse/NEWTAG-362'>NEWTAG-362</a> </div> <div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;"> <a style='color:#326ca6;text-decoration:none;' href='http://jira.pcgen.org/browse/NEWTAG-362'><strong>Character Migration Tool</strong></a> </div> </td> </tr> </table> </td> </tr> <tr valign="top"> <td id="email-fields" style="padding:0 32px 32px 32px;"> <table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%"> <tr valign="top"> <td id="email-gutter" style="width:64px;white-space:nowrap;"></td> <td> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Issue Type:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> <img src="http://jira.pcgen.org/images/icons/genericissue.gif" height="16" width="16" border="0" align="absmiddle" alt="Mini-Project"> Mini-Project </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Affects Versions:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> 6.01.02 </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Assignee:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> Unassigned </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Created:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> 30/May/13 10:11 PM </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Description:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> <h3><a name="Summary"></a>Summary</h3> <p style='margin-top:0;margin-bottom:10px;'>The character migration tool would be a behind the scenes function which helps to smoothly load characters from older versions of pcgen into the current version. Its primary purpose would be to allow a character to be automatically updated to reflect changes in the data.</p> <h3><a name="Background"></a>Background</h3> <p style='margin-top:0;margin-bottom:10px;'>One of our most important features is the ability to load old characters, given the investment people have made in creating them. Our existing character loading system does a very good job of loading old characters and maintaining backwards compatibility with storage format changes including the gradual addition of new fields to characters.</p> <p style='margin-top:0;margin-bottom:10px;'>However the loader does not understand when data keys are changed and can no longer be found. In this situation it gives an error to the user and asks them to sort this situation out. This means we are generally reluctant to do any changes to keys in the data even when they would be of benefit for future maintainability. This of course makes standardisation hard and can sometimes lead to chains of data in place to guide old characters to the new config.</p> <p style='margin-top:0;margin-bottom:10px;'>I'm raising this now as we had manual changes for some character required in the 6.0.1 release and we had to roll back some data changes in the 5.17 line as the source name changes would have broken existing characters.</p> <h3><a name="Proposal"></a>Proposal</h3> <p style='margin-top:0;margin-bottom:10px;'>I propose that we create a character migration tool that is data driven and is able to translate old keys to new keys for supported object types. On load it would check each key against a list of those that have changed and update the key if needs to be changed. This would be informed by the version number in which the character was last saved, allowing for keys to be changed and later reused. The changes would be automatic and would need no intervention on the part of the player.</p> <p style='margin-top:0;margin-bottom:10px;'>The introduction of this tool would mean that standardisation activities and error correction could be done in the data without fear of breaking older characters and would allow character to be kept up to date.</p> <p style='margin-top:0;margin-bottom:10px;'>Initially the tool would support only abilities and sources, but support for other object types could be added as required over time.</p> <h3><a name="DataFormat"></a>Data Format</h3> <p style='margin-top:0;margin-bottom:10px;'>A new game mode file would be required: <b>migration.lst</b></p> <p style='margin-top:0;margin-bottom:10px;'>Format:</p> <div class="panel" style="border-width: 1px;"><div class="panelContent"> <p style='margin-top:0;margin-bottom:10px;'>ABILITY:x|y<tab>NEWCATEGORY:a<tab>NEWKEY:b<tab><version info><br/> x: The old ability category name<br/> y: The old ability key<br/> a: The new ability category name.<br/> b: The new ability key.</p> </div></div> <div class="panel" style="border-width: 1px;"><div class="panelContent"> <p style='margin-top:0;margin-bottom:10px;'>SOURCE:c<TAB>NEWKEY:d<tab><version info><br/> c: The old source key<br/> d: The new source key</p> </div></div> <p style='margin-top:0;margin-bottom:10px;'>version info can be<br/> MAXVER:z<br/> Specify the production PCGen version when this object was last coded in<br/> the old format. (Required)</p> <p style='margin-top:0;margin-bottom:10px;'>MAXDEVVER:z<br/> Specify the development PCGen version (eg. alpha, beta) when this object<br/> was last coded in the old format. (Optional)</p> <p style='margin-top:0;margin-bottom:10px;'>MINVER:z<br/> Specify the production PCGen version when this object was first coded in<br/> this old format. (Optional)</p> <p style='margin-top:0;margin-bottom:10px;'>MINDEVVER:z<br/> Specify the development PCGen version (eg. alpha, beta) when this object<br/> was first coded in this old format. (Optional)</p> <p style='margin-top:0;margin-bottom:10px;'>z: Pcgen version number when this was most recently in the old format.</p> <h3><a name="Examples"></a>Examples</h3> <p style='margin-top:0;margin-bottom:10px;'>ABILITY:Special Ability|Animal Fury<tab>NEWKEY:Animal Fury ~ Rage Power<tab>MAXVER:6.00.00<tab>MAXDEVVER:6.01.01</p> <p style='margin-top:0;margin-bottom:10px;'>When any character last saved in v6.00.00 or earlier (or 6.01.01 in the dev line) is loaded if it it has a "Special Ability" with the key "Animal Fury" the ability will be mapped to the new key "Animal Fury ~ Rage Power".</p> <p style='margin-top:0;margin-bottom:10px;'>SOURCE:Bob's Magic Store<tab>NEWKEY:XYZ - Bobs Magic Store<tab>MAXVER:5.17.10</p> <p style='margin-top:0;margin-bottom:10px;'>If a character used the source "Bob's Magic Store" when last saved in PCGen 5.17.10 or earlier, it will instead load "XYZ - Bobs Magic Store" now.</p> </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Project:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> <a style="color:#326ca6;" href="http://jira.pcgen.org/browse/NEWTAG">New Tag</a> </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Priority:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> <img src="http://jira.pcgen.org/images/icons/priority_minor.gif" height="16" width="16" border="0" align="absmiddle" alt="Minor"> Minor </td> </tr> <tr valign="top"> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;"> <strong style="font-weight:normal;color:#505050;">Reporter:</strong> </td> <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;"> <a class="user-hover" rel="jamesd" id="email_jamesd" href="http://jira.pcgen.org/secure/ViewProfile.jspa?name=jamesd" style="color:#326ca6;">James Dempsey</a> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </td><!-- End #email-page --> </tr> <tr valign="top"> <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;"> This message is automatically generated by JIRA.<br /> If you think it was sent incorrectly, please contact your JIRA administrators<br /> For more information on JIRA, see: <a style='color:#326ca6;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a> </td> </tr> </table><!-- End #email-wrap --> </div><!-- End #email-body --> |