Annual Release Procedures

This page describes annual release procedures for lexAccess tools software with new set of THE SPECIALIST LEXICON data. LexAccess features are stable and no new software is planned to release after 2013. Accordingly, only data updates (steps 4 and 5) are needed for annual updates. All other steps are used for references and not required.

  1. Prepare lexAccess${YEAR} web site for new documents
    • Copy lexAccess ${YEAR-1} to ${YEAR}
    • Manually replace/add ${YEAR-1} by ${YEAR} for all files
      • ${LEXACCESS_WEB}/web/*.html
      • ${LEXACCESS_WEB}/web/release/index.html
      • ${LEXACCESS_WEB}/web/release/${YEAR}.html
      • ${LEXACCESS_WEB}/docs/index.html

      • ${LEXACCESS_WEB}/Home/topMenu*.html
      • ${LEXACCESS_WEB}/Home/banner*.html

  2. Prepare lexAccess${YEAR} baseline
    • Needed when upgrade in JRE
    • Copy lexAccess ${PRE_YEAR} to lexAccess ${YEAR}
    • Update jar files
      • Copy lvg${YEAR}api.jar to ${LEXACCESS}/lib/Other
      • Copy lexCheck${YEAR}api.jar to ${LEXACCESS}/lib/Other
      • Update the latest JDBC driver for HSqlDb and JavaDb
    • Update flat files
      • Modify ${LEXACCESS}/overview.html (${PRE_YEAR} -> ${YEAR})
      • Update ${LEXACCESS}/sources/gov/nih/nlm/nls/lexAccess/*/package.html
      • Update ${LEXACCESS}/data/config/*
      • Update ${LEXACCESS}/docs/updateDoc
      • Modify build.xml under following directories (${PRE_YEAR} -> ${YEAR})
        • ${LEXACCESS}
          • project.year
          • lvg.jar
        • ${LEXACCESS}/examples
        • ${LEXACCESS}/install
        • ${LEXACCESS}/loadDb
      • Update ${LEXACCESS}/bin/packLite (${PRE_YEAR} -> ${YEAR})
      • Update ${LEXACCESS}/bin/lexAccess (${PRE_YEAR} -> ${YEAR})
      • Update ${LEXACCESS}/bin/lagt (${PRE_YEAR} -> ${YEAR})
    • lexAccess java source code:
      • shell> cd /export/home/lu/Development/LVG/Components/BaselineCode/bin
      • shell> ModifyLAJavaCode
        • ${YEAR}: select year of version to be modified
        • 1: change the prolog
        • 2: change tab to 4 space
      • shell> cp -rp sources.new sources

  3. Compile (check) to finish the baseline
    • ant clean
    • ant release

    • Test run
      shell>cd ${LEXACCESS}
      shell>./bin/lexAccess -ci
      

  4. LA PreProc
    • Prepare preDatabase
      • update smybolic links lexCheckApi.jar and lvgApi.jar under ${LA_PreProc}/PreDatabase/lib/Other/
      • Recompile
        => ant
    • Generate Db table files
      shell> cd {LA_PRE_DB}/bin
      shell> 1.GenerateDbFiles ${YEAR}
      --------------------------------------
      Which Program ?
      --------------------------------------
      1) Copy LEXICON
      2) Copy inflVars.data
      3) Generate lexicon.data
      4) Generate eui.data
      5) Copy above 4 file to LexAccess
      6) All (default)
      ----------
      

      4 files are copied and generated:
      File nameAction
      LEXICON copy ${LEX_DIR}/data/${YEAR}/tables.frozen/LEXICON to ${LA_DIR}/data/tables/LEXICON
      inflVars.data copy ${LEX_DIR}/data/${YEAR}/tables.frozen/inflVars.data to ${LA_DIR}/data/tables/inflVars.data
      lexicon.data Generate ${LA_DIR}/data/tables/lexicon.data (from LEXICON)
      shell> ${LA}/PreDatabase/bin/ModifyLexicon -f:d -i:LEXICON -o:lexicon.data
      eui.data Generate eui.data. The total number of EUI should be equals to total lexical records in LEXICON because this file include deleted records if using lexicon.data from LB.

    • Check Max. length of fields in Lexicon.data with database tables
      shell> cd {LA_PRE_DB}/bin
      shell> 2.AnalyzeDbFiles ${YEAR}
      

  5. LoadDb Program
    • Setup Database in HSqlDb
      • update ${YEAR} in ${LA_DIR}/loadDb/sources/gov/nih/nlm/nls/lexAccess/loadDb/HSqlDb/db.cfg
        • DB_NAME = lexAccess${YEAR}
        • LA_DIR = /export/home/chlu/Development/LA/lexAccess${YEAR}
      • mv ${LA_DIR}/data/HSqlDb ${LA_DIR}/data/HSqlDb.old

    • skip MySql DB
      • update $LA_DIR/loadDb/sources/gov/nih/nlm/nls/lexAccess/loadDb/MySql/db.cfg
        shell> 1.SetupMySql ${YEAR}
        
        => Use this script to create Db and user in MySql Db for current release. The database name and username are defined in the cfg.data file.
    • Load data into HSqlDb (skip MySql)
      shell> cd ${LA_DIR}/loadDb/bin/
      shell> 2.LoadDb ${YEAR}
      1
      3
      
      • load data into HSqlDb => change "readonly=true" in *.properties after tables are loaded
    • Check loaded data from DB
      shell> 3.TestDb ${YEAR}
      
      => check loaded data in Db. The total number of lexicon only includes not deleted records.

  6. Update Installation Program
    • Modify java source codes
      • ${LA_DIR}/install/sources/gov/nih/nlm/nls/lexAccess/install/Setup/Param.java
    • Modify scripts under ${LA_DIR}/install/bin/* (${PRE_YEAR} -> ${YEAR})

  7. Complete SCRs for current ${YEAR} release
    • modify version (lexAccess.${YEAR}) in file of ${LA_DIR}/sources/gov/nih/nlm/nls/lexAccess/Api/LexAccessCmdApi.java
    • modify LA_JAR_FILE (lexAccess${YEAR}api.jar) in file of ${LA_DIR}/sources/gov/nih/nlm/nls/lexAccess/Tools/GuiTool/Model/LaObj.java
    • modify VERSION_STR (${YEAR}) in file of ${LA_DIR}/sources/gov/nih/nlm/nls/lexAccess/Tools/GuiTool/Model/GlobalVars.java
    • modify LA_VERSION (LexAccess, ${YEAR}) in file of ${LA_DIR}/sources/gov/nih/nlm/nls/lexAccess/Tools/GuiTool/Gui/LaFrame.java

  8. Build & Test (Complete the software part)
    • shell> ant release
    • release test (install to ${PROJECTS})
    • go through unit test

  9. Update other software components
    • Update web documents
      • update ${YEAR} in *.html
      • update directory of ${LA_YEAR}/release/
        • index.html
        • ${YEAR}.html
      • update directory of ${LA_YEAR}/docs/userDoc/
        • whatIsNew.html
      • update directory of ${LA_YEAR}/docs/userDoc/install/
        • releaseNotes.html
        • install.html
        • config.html
        • mySql.html
    • Update web tools

  10. Compile (see above) & Test
    • go through all options

  11. Compile & pack
    • ant clean
    • ant release

  12. Generate pure ASCII Database (for MetaMap Project)
    • Rename tables to tables.utf8 in ${LA_DIR}/data/
    • generate and copy 4 ASCII andfiles to ${LA_DIR}/data/tables.ascii
        	
      • shell> cd ${LA_PRE_DIR}/bin
      • shell> 3.GenerateAsciiDbFiles ${YEAR} 6
      • Rename HSqlDb to HSqbDb.utf8 in ${LA_DIR}/data/
      • Reload database
          	
        • shell> cd ${LA_DIR}/loadDb/bin
        • shell> 2.LoadDb ${YEAR} 1 3
      • Rename HSqlDb to HSqbDb.ascii in ${LA_DIR}/data/