home *** CD-ROM | disk | FTP | other *** search
/ Thomson (Residential) / TGSTPv7203.iso / mac / HIW / xml / mod_upgrade_backupconfig.xml < prev    next >
Extensible Markup Language  |  2008-02-11  |  12KB  |  252 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE fsm SYSTEM "fsm.dtd">
  3. <!--
  4.     Backs up config files, templates, software keys and language packs.
  5.  
  6.     Input properties:
  7.   - backupLanguagePacks [disable|backup|*highest|exact]: backup .lng files:
  8.     - disable: don't backup
  9.     - backup, highest, exact: backup to a temporary directory
  10.   - backupTemplates [0|1]: backup .tpl files
  11.   - backupConfiguration [0|1]: backup .ini files
  12.   - backupSoftKeys [0|1]: backup .swk files
  13.  
  14.     Output properties:
  15.   - languageList: list of language ISO codes
  16.   - languagePackList: list of language packs on the device
  17.   - configNameList: list of names of the config files that were backed up
  18.   - configList: list of backed up config files
  19.   - softKeyList: list of backed up software keys
  20.   - backupFailed: if 1 or more files could not be backed up, the value
  21.     will be higher than 0. 
  22.  
  23.     Application properties:
  24.     - device: The device to operate on.
  25.     - expertMode [0|1]: If 1, config files will be backed up to disk.
  26.  
  27.   Exit events:
  28.   - finished
  29.  
  30. -->
  31.  
  32. <fsm>
  33.     <property key="backupLanguagePacks" required="yes"/>
  34.     <property key="backupTemplates" required="yes"/>
  35.     <property key="backupConfiguration" required="yes"/>
  36.     <property key="backupSoftKeys" required="yes"/>
  37.     <states>
  38.         <!-- check TP <? 1.2 -->
  39.         <state type="compare" name="checkTpVersion">
  40.             <property key="input2" value="1.2"/>
  41.             <property key="type" value="number"/>
  42.             <property key="comparisonType" value="smaller"/>
  43.         </state>        
  44.         <state type="switch" name="checkBackupLangPacks">
  45.             <property key="outputs" value="disable;backup;highest;exact"/>
  46.         </state>
  47.         <!-- get languagelist, configlist and software keys for TP >= 1.2 -->
  48.         <state type="actionGetLanguageList" name="getLanguageList" weight="2"/>
  49.         <state type="actionGetConfigList" name="getConfigList" weight="2"/>
  50.         <state type="upgradeDevice_getSoftKeys" name="getSoftKeys" weight="10"/>
  51.         <state type="compare" name="checkGetSoftKeys">
  52.             <property key="type" value="number"/>
  53.             <property key="comparisonType" value="smallerorequal"/>
  54.             <property key="input1" value="1"/>
  55.         </state>        
  56.         <state type="compare" name="filterTpl">
  57.             <property key="type" value="number"/>
  58.             <property key="comparisonType" value="equal"/>
  59.             <property key="input1" value="0"/>
  60.         </state>
  61.         <state type="compare" name="filterIni">
  62.             <property key="type" value="number"/>
  63.             <property key="comparisonType" value="equal"/>
  64.             <property key="input1" value="0"/>
  65.         </state>
  66.         <!-- iterator fsm for getting config files -->
  67.         <state type="fsm" name="getConfigFiles" weight="20">
  68.             <property key="fileList" required="yes"/>
  69.             <states>
  70.                 <!-- iteration state -->
  71.                 <state type="listIterator" name="fileIterator"/>
  72.                 <!-- get one config file -->
  73.                 <state type="actionGetFile" name="getFile" weight="10"/>
  74.             </states>
  75.             <events>
  76.                 <event name="finished"/>
  77.             </events>
  78.             <transitions>
  79.                 <!-- iterate -->
  80.                 <transition startstate="fileIterator">
  81.                     <propertymap target="fsm.iterateCount" function="count($fsm.fileList)"/>
  82.                     <propertymap target="list" function="$fsm.fileList"/>
  83.                     <propertymap target="currentItem" function=""/>
  84.                     <propertymap target="fsm.configList" function="objectlist()"/>
  85.                     <propertymap target="fsm.backupFailed" function="0"/><!-- reset failed flag -->
  86.                     <propertymap target="fsm.configNameList" function="$fsm.fileList"/><!-- copy list -->
  87.                 </transition>
  88.                 <!-- next file, download -->
  89.                 <transition fromstate="fileIterator" tostate="getFile" event="nextItem">
  90.                     <propertymap target="fsm.currentFile" function="$currentItem"/>
  91.                     <propertymap target="fileName" function="$currentItem"/>
  92.                     <propertymap target="device" function="$app.device"/>
  93.                     <propertymap target="backup" function="$app.expertMode"/>
  94.                 </transition>
  95.                 <!-- next iteration -->
  96.                 <transition fromstate="getFile" tostate="fileIterator" event="finished">
  97.                     <propertymap target="list" function="$fsm.fileList"/>
  98.                     <propertymap target="currentItem" function="$fsm.currentFile"/>
  99.                     <propertymap target="fsm.configList" function="setproperty($fsm.configList, $fsm.currentFile, $content)"/>
  100.                 </transition>
  101.                 <transition fromstate="getFile" tostate="fileIterator" event="failed">
  102.                     <propertymap target="list" function="$fsm.fileList"/>
  103.                     <propertymap target="currentItem" function="$fsm.currentFile"/>
  104.                     <propertymap target="fsm.backupFailed" function="add($fsm.backupFailed, 1)"/><!-- set failed flag -->
  105.                     <propertymap target="fsm.configNameList" function="remove($fsm.configNameList, concat('^', $fsm.currentFile, '$'))"/><!-- remove from list -->
  106.                 </transition>
  107.                 <transition fromstate="getFile" tostate="fileIterator" event="fileNotFound">
  108.                     <propertymap target="list" function="$fsm.fileList"/>
  109.                     <propertymap target="currentItem" function="$fsm.currentFile"/>
  110.                     <propertymap target="fsm.configNameList" function="remove($fsm.configNameList, concat('^', $fsm.currentFile, '$'))"/><!-- remove from list -->
  111.                 </transition>
  112.                 <!-- no more files, finish -->
  113.                 <transition fromstate="fileIterator" toexit="finished" event="lastItem"/>
  114.             </transitions>
  115.         </state> <!-- getConfigFiles -->
  116.  
  117.         <!-- iterator fsm for getting language packs -->
  118.         <state type="fsm" name="backupLanguagePacks" weight="40">
  119.             <property key="fileList" required="yes"/>
  120.             <states>
  121.                 <state type="listIterator" name="fileIterator"/>
  122.                 <state type="actionGetFile" name="getFile" weight="10"/>
  123.                 <state type="writeFile" name="saveFile" weight="1"/>
  124.             </states>
  125.             <events>
  126.                 <event name="finished"/>
  127.             </events>
  128.             <transitions>
  129.                 <transition startstate="fileIterator">
  130.                     <propertymap target="fsm.iterateCount" function="count($fsm.fileList)"/>
  131.                     <propertymap target="list" function="$fsm.fileList"/>
  132.                     <propertymap target="currentItem" function=""/>
  133.                 </transition>
  134.                 <transition fromstate="fileIterator" tostate="getFile" event="nextItem">
  135.                     <propertymap target="fsm.currentFile" function="$currentItem"/>
  136.                     <propertymap target="fileName" function="$currentItem"/>
  137.                     <propertymap target="device" function="$app.device"/>
  138.                     <propertymap target="bin" function="1"/>
  139.                 </transition>
  140.                 <transition fromstate="getFile" tostate="saveFile" event="finished">
  141.                     <propertymap target="content" function="$content"/>
  142.                     <propertymap target="path" function="concat('%TEMP%/', $fsm.currentFile)"/>
  143.                 </transition>
  144.                 <transition fromstate="saveFile" tostate="fileIterator" event="finished|failed">
  145.                     <propertymap target="list" function="$fsm.fileList"/>
  146.                     <propertymap target="currentItem" function="$fsm.currentFile"/>
  147.                 </transition>
  148.                 <transition fromstate="getFile" tostate="fileIterator" event="failed|fileNotFound">
  149.                     <propertymap target="list" function="$fsm.fileList"/>
  150.                     <propertymap target="currentItem" function="$fsm.currentFile"/>
  151.                 </transition>
  152.                 <transition fromstate="fileIterator" toexit="finished" event="lastItem"/>
  153.             </transitions>
  154.         </state> <!-- backupLanguagePacks -->
  155.     </states>
  156.     <events>
  157.         <event name="finished"/>
  158.     </events>
  159.     <transitions>
  160.         <transition startstate="checkTpVersion">
  161.             <propertymap target="input1" function="property($app.device,'tpVersionNumber')"/>
  162.             <propertymap target="fsm.backupFailed" function="0"/><!-- reset failed flag -->
  163.         </transition>
  164.  
  165.         <!--  TPversion < 1.2, add isp.def and user.ini to configlist and download the files  -->
  166.         <transition fromstate="checkTpVersion" tostate="filterIni" event="true">
  167.           <propertymap target="fsm.configNameList" function="makelist('isp.def','user.ini')"/>
  168.             <propertymap target="input2" function="$fsm.backupConfiguration"/>
  169.         </transition>
  170.  
  171.         <!--  TPversion >= 1.2  -->
  172.         <!-- get software keys -->
  173.         <transition fromstate="checkTpVersion" tostate="checkGetSoftKeys" event="false">
  174.           <propertymap target="fsm.configNameList" function="makelist('isp.def')"/>
  175.             <propertymap target="input2" function="$fsm.backupSoftKeys"/>
  176.         </transition>
  177.         <transition fromstate="checkGetSoftKeys" tostate="getSoftKeys" event="true">
  178.             <propertymap target="device" function="$app.device"/>
  179.         </transition>
  180.  
  181.         <!-- get language list and backup language packs -->
  182.         <transition fromstate="checkGetSoftKeys" tostate="getLanguageList" event="false">
  183.             <propertymap target="device" function="$app.device"/>
  184.         </transition>
  185.         <transition fromstate="getSoftKeys" tostate="getLanguageList" event="finished">
  186.             <!-- output --><propertymap target="fsm.softKeyList" function="$softKeyList"/>
  187.             <propertymap target="device" function="$app.device"/>
  188.         </transition>
  189.         <transition fromstate="getSoftKeys" tostate="getLanguageList" event="failed">
  190.             <!-- output --><propertymap target="fsm.softKeyList" function="objectlist()"/>
  191.             <propertymap target="device" function="$app.device"/>
  192.             <propertymap target="fsm.backupFailed" function="1"/><!-- set failed flag -->
  193.         </transition>
  194.         <transition fromstate="getLanguageList" tostate="checkBackupLangPacks" event="finished">
  195.             <!-- output --><propertymap target="fsm.languageList" function="$languageList"/>
  196.             <!-- output --><propertymap target="fsm.languagePackList" function="$languagePackList"/>
  197.             <propertymap target="input" function="$fsm.backupLanguagePacks"/>
  198.         </transition>
  199.         <transition fromstate="checkBackupLangPacks" tostate="backupLanguagePacks" event="exact|backup|highest|default">
  200.             <propertymap target="fileList" function="$fsm.languagePackList"/>
  201.         </transition>
  202.  
  203.         <!-- get config list -->
  204.         <transition fromstate="checkBackupLangPacks" tostate="getConfigList" event="disable">
  205.             <propertymap target="device" function="$app.device"/>
  206.         </transition>
  207.         <transition fromstate="backupLanguagePacks" tostate="getConfigList" event="finished">
  208.             <propertymap target="device" function="$app.device"/>
  209.         </transition>
  210.         <transition fromstate="getLanguageList" tostate="getConfigList" event="failed">
  211.             <propertymap target="device" function="$app.device"/>
  212.         </transition>
  213.  
  214.         <!-- filter list-->
  215.         <transition fromstate="getConfigList" tostate="filterTpl" event="finished">
  216.             <!-- output --><propertymap target="fsm.configNameList" function="merge($fsm.configNameList,$configNameList)"/>
  217.             <propertymap target="input2" function="$fsm.backupTemplates"/>
  218.         </transition>
  219.         <transition fromstate="filterTpl" tostate="filterIni" event="true">
  220.             <!--propertymap target="fsm.configNameList" function="grep($fsm.configNameList,'.+\.(?!tpl$)')"/--><!-- filter *.tpl out -->
  221.             <propertymap target="fsm.configNameList" function="remove($fsm.configNameList, '\.tpl$')"/>
  222.             <propertymap target="input2" function="$fsm.backupConfiguration"/>
  223.         </transition>
  224.         <transition fromstate="filterTpl" tostate="filterIni" event="false">
  225.             <propertymap target="input2" function="$fsm.backupConfiguration"/>
  226.         </transition>
  227.  
  228.         <!-- get all files that are in the configNameList -->
  229.         <transition fromstate="getConfigList" tostate="getConfigFiles" event="failed">
  230.             <propertymap target="fileList" function="$fsm.configNameList"/>
  231.             <propertymap target="fsm.backupFailed" function="1"/><!-- set failed flag -->
  232.         </transition>
  233.         <transition fromstate="filterIni" tostate="getConfigFiles" event="true">
  234.             <!--propertymap target="fsm.configNameList" function="grep($fsm.configNameList,'.+\.(?!ini$)')"/--><!-- filter *.ini out -->
  235.             <propertymap target="fsm.configNameList" function="remove($fsm.configNameList, '\.ini$')"/>
  236.             <propertymap target="fileList" function="$fsm.configNameList"/>
  237.         </transition>
  238.         <transition fromstate="filterIni" tostate="getConfigFiles" event="false">
  239.             <propertymap target="fileList" function="$fsm.configNameList"/>
  240.         </transition>
  241.  
  242.         <!-- done -->
  243.         <transition fromstate="getConfigFiles" toexit="finished" event="finished">
  244.             <!-- output --><propertymap target="fsm.configNameList" function="$configNameList"/>
  245.             <!-- output --><propertymap target="fsm.configList" function="$configList"/>
  246.             <propertymap target="input2" function="$fsm.backupSoftKeys"/>
  247.             <propertymap target="fsm.configNameList" function="$configNameList"/>
  248.             <propertymap target="fsm.backupFailed" function="add($fsm.backupFailed, $backupFailed)"/>
  249.         </transition>
  250.     </transitions>
  251. </fsm>
  252.