NIH | National Cancer Institute | NCI Wiki  

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This guide will NOT explore how to leverage LexEVS programmatically programatically or how to best develop with the Spring framework. The reader is invited to explore the multiple resources on the web that can help in this endeavor.

...

In order to facilitate subsequent testing, please load and activate the test terminology Automobiles.xml located in the folder " {LEXEVS_HOME}\test\resources\testData\Automobiles.xml".

Make note of your installation folder.

...

Small STS Warning That Can be Fixed

There 's is a little bug that is annoying in STS regarding missing XML definition. You should see a tiny warning icon on your project and if you drill down, it relates to the file "log4j.xml".

...

  1. Menu Windows -> Preferences -> XML -> XML Catalog
  2. Click on add
  3. Click on File System and select the jar. It should be something similar to: {SpringSource install folder}\sts-2.7.1.RELEASE\plugins\org.apache.log4j_1.2.15.v201012070815.jar
  4. Add "jar:file:" in front of the path and "!/org/apache/log4j/xml/log4j.dtd" at the end of the path (without the ")
  5. In the key textbox, enter "-//APACHE//DTD LOG4J 1.2//EN" (without the ")
  6. Click Ok to close this window, then ok again to close the preference window.

...

  • one in src/main/resources
  • one in src/test/resources

Verification

  1. Select the textlex folder project in the package explorer window then click on play button or click on the menu "Run" -> Run
    The next window will ask you how you want to run the project. Select "Run on server".
  2. In the list on the next window, you should see the "Tomcat v6.0 Server at localhost" entry that you created earlier. Select it and check the box "Always use this server..."
  3. Click Next, then click Finish.
    You should then see the "Hello world!" page with the current time on it.
    You now have a functioning Spring 3 MVC project.

Adding LexEVS as a Maven Dependency

...

Downloading the Required Files

You will need 4 four files to successfully add LexEVS as a dependency.

...

Click on the button New in the lower half of the window and add JAVA_HOME as a name and the path to your JRE installation as a value. Click OK 3 times to close the windows. Close and reopen your commmand window and it should now work.

MVN Commands

_For all the following commands, please change "*E:\" * to the path of the folder chosen to place the 4 four files above _.

  1. Then enter this command at the command prompt:
    Code Block
    mvn install:install-file -Dfile="E:\ddlUtils-1.0-PATCHED.jar" -DpomFile="E:\ddlutils-1.0-PATCHED.pom"
    You should then see a build successful message. The ddlUtils dependency is now available in your local repository.
  2. Now enter this command at the command prompt:
    Code Block
    mvn install:install-file -Dfile="E:\lexbig.jar" -DpomFile="E:\lexevs-6.0.0.pom"
    You should also see a build successful message. The LexEVS dependency is now available in your local repository.
  3. Open STS and select the menu Window -> Show View -> Other
  4. Scroll down to the folder Maven and select Maven Repositories. Click OK.
    You should now have a Maven Repositories view in the lower part of the window.
  5. Select and unfold Local Repositories.
  6. Right-click Local Repository and select Rebuild Index from the context menu. Click Ok when asked if you're sure you want to rebuild it.

Adjusting Scope of JUnit

LexEVS currently uses JUnit during runtime. This is a bit unusual and might change in a future release but for now, it needs to be adjusted.

  1. Select the project folder testlex in the Package Explorer view and unfold it.
  2. Double click on the pom.xml file to open it.
  3. Select the Dependencies tab at the bottom of the window.
  4. In the Dependencies pane, scroll down in the dependencies selectbox and click once on junit. On the right side, the Dependency Details area should present a scope which is "test" in the combobox.
  5. Change it to compile.
  6. Click on menu File -> Save or press Ctrl-s.

Including LexEVS in the MVC Project

  1. Select the textlex project. Right-click on it and select Maven -> Add Dependency from the context menu.
  2. Enter lexevs in the first textbox.
    The search results should show: lexevs lexevs
  3. Select it and click ok.
  4. STS will now download all the dependencies needed to work with LexEVS. You can follow the progress in the progress view (tab).

Creating a Test File

  1. Select and unfold the project folder testlex in the package explorer.
  2. Navigate to src/test/java. You should see an empty package org.test.test
  3. Right-click on it and select New -> JUnit Test Case
  4. Put the name of your test in the name textbox. We will name it LexBigConnect. Click on Finish.
  5. Copy this in the file (including the last bracket):
    Code Block
    package org.test.test;
    
    import static org.junit.Assert.*;
    
    import org.LexGrid.LexBIG.Exceptions.LBInvocationException;
    import org.LexGrid.LexBIG.Impl.LexBIGServiceImpl;
    import org.LexGrid.LexBIG.LexBIGService.LexBIGService;
    import org.LexGrid.LexBIG.DataModel.InterfaceElements.CodingSchemeRendering;
    
    import org.junit.Test;
    
    public class LexBigConnect {
    
        @Test
        public void test() throws LBInvocationException {
           
            LexBIGService lbSvc = LexBIGServiceImpl.defaultInstance();
            System.out.println("The currently active terminologies are:");
            for(CodingSchemeRendering csr : lbSvc.getSupportedCodingSchemes().getCodingSchemeRendering())
                System.out.println(csr.getCodingSchemeSummary().getFormalName());
    

...

  1.          
            assertTrue(true);
        }
    

...

  1. }
  2. Make sure to change the package name if you didn't use org.test.test initially. Save the file.

Adding a JVM Parameter to Locate the lbconfig.props

  1. In STS, select the menu Run -> Run Configurations...
  2. Select JUnit in the left list.
  3. Select the new button (white rectangle with a little yellow +)
    The name of the profile will be defaulted to the name of your class LexBigConnect
  4. Click on the tab Arguments and add this parameter to the VM textbox:
    Code Block
    -DLG_CONFIG_FILE="\{LEXEVS_HOME\}\resources\config\lbconfig.props"
  5. Replace {LEXEVS_HOME} by the absolute path to the LexEVS local install done earlier in the process.
  6. Then click Apply followed by Run.
    You should then see a successful completion of a JUnit test. The console log will also show "The currently active terminologies are:" followed by the name of the terminologies Automobiles if you loaded it.

Integrating LexEVS in a Web Page

Adding a JVM Parameter to Locate the lbconfig.props

In I# n STS, double-click on the "Tomcat v6.0..." entry in the server view (left lower corner).

  1. This will open the server Overview. Click on the "Open launch configuration" link in the General Information section.
  2. Select the Arguments tab and in the VM arguments textbox, at the bottom, after the existing arguments add this:
    Code Block
     -DLG_CONFIG_FILE="\{LEXEVS_HOME\}\resources\config\lbconfig.props"
  3. Replace {LEXEVS_HOME} by the absolute path to the LexEVS local install done earlier in the process. Make sure there's a space between the end of the last existing argument and the dash of this one.
  4. Click Apply then click OK.

Adjusting the Controller

Although this is unlikely the way in which you will integrate LexEVS in a MVC project, it will confirm that using the project with Tomcat works. This assumes that you have at least one loaded and active terminology in your local LexEVS Server.

  1. Navigate the project tree to src/main/java and double-click on HomeController.java to open it.
  2. Copy this in the file (including the last bracket):
    Code Block
    package org.test.test;
    
    import java.text.DateFormat;
    import java.util.Date;
    import java.util.Locale;
    
    import org.LexGrid.LexBIG.DataModel.InterfaceElements.CodingSchemeRendering;
    import org.LexGrid.LexBIG.Exceptions.LBInvocationException;
    import org.LexGrid.LexBIG.Impl.LexBIGServiceImpl;
    import org.LexGrid.LexBIG.LexBIGService.LexBIGService;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    
    /**
     * Handles requests for the application home page.
     */
    @Controller
    public class HomeController {
       
        private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
       
        /**
         * Simply selects the home view to render by returning its name.
         * @throws LBInvocationException
         */
        @RequestMapping(value = "/", method = RequestMethod.GET)
        public String home(Locale locale, Model model) throws LBInvocationException {
            logger.info("Welcome home! the client locale is "+ locale.toString());
           
            Date date = new Date();
            DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
           
            String formattedDate = dateFormat.format(date);
           
            model.addAttribute("serverTime", formattedDate );
           
            Integer n = 1;
           
            LexBIGService lbSvc = LexBIGServiceImpl.defaultInstance();
            for(CodingSchemeRendering csr : lbSvc.getSupportedCodingSchemes().getCodingSchemeRendering()){
                System.out.println(csr.getCodingSchemeSummary().getFormalName());
                model.addAttribute("term"+n.toString(), csr.getCodingSchemeSummary().getFormalName());
                n++;
            }
           
            return "home";
        }
       
    }
  3. Make sure to change the package name if you didn't use org.test.test initially. Save the file.

Adjusting the JSP Page

  1. In the Package Explorer, nagivate to src/main/webapp/WEB-INF/views and open home.jsp by double-clicking.
  2. Replace the text in the file with this one:
    Code Block
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page session="false" %>
    <html>
    <head>
        <title>Home</title>
    </head>
    <body>
    <h1>
        Hello world! 
    </h1>
    
    <p>The time on the server is ${serverTime}.</p>
    <p>One of the active terminologies on the LexEVS server is: ${term1}</p>
    </body>
    </html>
  3. Save the file and close it.

Running the Project

  1. Select the project testlex in the Package Explorer.
  2. Select the menu Run -> Run. Select "Run on Server" then click OK.
  3. You should see the home page displayed with the date/time and, on the last line, the name of one of your active terminology in LexEVS.
  4. You now have a functional Spring 3 MVC project interacting successfully with a local instance of LexEVS.

Aknowledgement

This guide was contributed by the TRANSFoRM group / INSERM U936.

...