initial load of EDIS 1.0

This commit is contained in:
george 2011-08-27 06:06:21 +00:00
parent b6d1ce699b
commit 4825b8831e
477 changed files with 48593 additions and 0 deletions

65
java/tracking-ear/pom.xml Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-parent</artifactId>
<version>1.0-T29-SNAPSHOT</version>
<relativePath>../tracking-parent</relativePath>
</parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-application</artifactId>
<packaging>ear</packaging>
<name>EDIS Tracking Application Bundle</name>
<version>1.0-T29-SNAPSHOT</version>
<description>Emergency Department Integration Software - Tracking Application Bundle</description>
<dependencies>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-main</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-bigboard</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-help</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<!-- <unpackTypes>war</unpackTypes> -->
<modules>
<webModule>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-main</artifactId>
<contextRoot>${edis.tracking.trackingContextRoot}</contextRoot>
</webModule>
<webModule>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-bigboard</artifactId>
<contextRoot>${edis.tracking.boardContextRoot}</contextRoot>
</webModule>
<webModule>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-help</artifactId>
<contextRoot>${edis.tracking.helpContextRoot}</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
"http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>edis-tracking-application</display-name>
<description>Emergency Department Integration Software - Tracking Application Bundle</description>
<module>
<web>
<web-uri>main.war</web-uri>
<context-root>/main</context-root>
</web>
</module>
<module>
<web>
<web-uri>bigboard.war</web-uri>
<context-root>/bigboard</context-root>
</web>
</module>
<module>
<web>
<web-uri>help.war</web-uri>
<context-root>/help</context-root>
</web>
</module>
</application>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<psf version="2.0">
<provider id="com.perforce.team.core.PerforceTeamProvider">
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-parent;PATH=//reeng/main/ed/tracking-parent"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-ui-core;PATH=//reeng/main/ed/tracking-ui-core"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-ui-client;PATH=//reeng/main/ed/tracking-ui-client"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-ui-bigboard;PATH=//reeng/main/ed/tracking-ui-bigboard"/>
</provider>
</psf>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<psf version="2.0">
<provider id="com.perforce.team.core.PerforceTeamProvider">
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-weblogic-ssl;PATH=//reeng/main/ed/tracking-weblogic-ssl"/>
</provider>
</psf>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<psf version="2.0">
<provider id="com.perforce.team.core.PerforceTeamProvider">
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-parent;PATH=//reeng/main/ed/tracking-parent"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-server-core;PATH=//reeng/main/ed/tracking-server-core"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-server-proxy;PATH=//reeng/main/ed/tracking-server-proxy"/>
<project reference="PORT=vhaislprf2.vha.med.va.gov:1666;NAME=tracking-server-bigboard;PATH=//reeng/main/ed/tracking-server-bigboard"/>
</provider>
</psf>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<mapAttribute key="org.eclipse.debug.core.environmentVariables">
<mapEntry key="MAVEN_HOME" value="/Application/Development/maven-2.0.8"/>
</mapAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${mvn}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="clean package"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${project_loc}"/>
</launchConfiguration>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<mapAttribute key="org.eclipse.debug.core.environmentVariables">
<mapEntry key="MAVEN_HOME" value="/Application/Development/maven-2.0.8"/>
</mapAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${mvn}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="clean"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${project_loc}"/>
</launchConfiguration>

View File

@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-parent</artifactId>
<packaging>pom</packaging>
<name>EDIS Tracking Application</name>
<description>Emergency Department Integration Software - Tracking Application</description>
<version>1.0-T29-SNAPSHOT</version>
<modules>
<module>../tracking-ui-core</module>
<module>../tracking-ui-main</module>
<module>../tracking-ui-bigboard</module>
<module>../tracking-server-core</module>
<module>../tracking-server-main</module>
<module>../tracking-server-bigboard</module>
<module>../tracking-help</module>
<module>../tracking-weblogic-ssl</module>
<module>../tracking-ear</module>
</modules>
<organization>
<name>Department of Veterans Affairs</name>
<url>http://www.va.gov/</url>
</organization>
<prerequisites>
<maven>2.0.8</maven>
</prerequisites>
<licenses>
<license>
<name>Public Domain</name>
<url>http://creativecommons.org/licenses/publicdomain/</url>
</license>
</licenses>
<scm>
<connection>scm:perforce://reeng/main/ed/tracking-parent</connection>
<developerConnection>scm:perforce://reeng/main/ed/tracking-parent</developerConnection>
</scm>
<!--issueManagement>
<system></system>
<url></url>
</issueManagement-->
<!-- <ciManagement>
<system>luntbuild</system>
<url>http://vhaislcfgm2.vha.med.va.gov:8080/luntbuild</url>
</ciManagement> -->
<developers>
<developer>
<id>vhaislmeldruk</id>
<name>Kevin Meldrum</name>
<email>kevin.meldrum@va.gov</email>
<organization>Department of Veterans Affairs</organization>
<timezone>-7</timezone>
</developer>
<developer>
<id>vhaislgearys</id>
<name>Sandi Geary</name>
<email>sandra.geary@va.gov</email>
<organization>SAIC</organization>
<timezone>-7</timezone>
</developer>
<developer>
<name>Melanie Buechler</name>
<email>melanie.buechler@va.gov</email>
<organization>Department of Veterans Affairs</organization>
<timezone>-6</timezone>
</developer>
<developer>
<id>vhaislblazs</id>
<name>Solomon Blaz</name>
<email>solomon.blaz@va.gov</email>
<organization>SAIC</organization>
<timezone>-7</timezone>
</developer>
<developer>
<id>vhaisldhars</id>
<name>Sanjay Dhar</name>
<email>sanjay.dhar@va.gov</email>
<organization>SAIC</organization>
<timezone>-7</timezone>
</developer>
</developers>
<contributors>
<contributor>
<name>Gary Tyndall</name>
<email>gary.tyndall@va.gov</email>
<organization>Department of Veterans Affairs</organization>
<timezone>-5</timezone>
</contributor>
<contributor>
<name>Robert Stults</name>
<email>robert.stults2@va.gov</email>
<organization>Shoulders Corp</organization>
<organizationUrl>http://www.shoulderscorp.com/</organizationUrl>
<timezone>-5</timezone>
</contributor>
<contributor>
<name>Cheryl Walton</name>
<email>cheryl.walton2@va.gov</email>
<organization>SAIC</organization>
<timezone>-7</timezone>
</contributor>
</contributors>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>bob-repository</id>
<name>Bob's Maven Repository</name>
<url>http://vhaislcfgm2.vha.med.va.gov/maven-repository</url>
</repository>
<repository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>flex-mojos-repository</id>
<url>http://repository.sonatype.org/content/groups/flexgroup/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>flex-mojos-repository</id>
<url>http://repository.sonatype.org/content/groups/flexgroup/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<repository>
<id>bob-repository</id>
<name>Bob's Maven Repository</name>
<url>scp://vhaislcfgm2.vha.med.va.gov:/var/www/html/maven-repository</url>
</repository>
</distributionManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-idea-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<dependenciesAsLibraries>true</dependenciesAsLibraries>
<useFullNames>false</useFullNames>
</configuration>
</plugin>
<plugin>
<groupId>info.flex-mojos</groupId>
<artifactId>flex-compiler-mojo</artifactId>
<version>${flex.mojos.version}</version>
<extensions>true</extensions>
<configuration>
<accessible>${flex.compiler.accessible}</accessible>
<headlessServer>${flex.compiler.headless-server}</headlessServer>
<locales>
<locale>en_US</locale>
</locales>
<debug>${flex.compiler.debug}</debug>
</configuration>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>${flex.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>index</report>
<report>summary</report>
<report>dependency-convergence</report>
<report>project-team</report>
<report>cim</report>
<report>scm</report>
<report>license</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<artifactId>maven-changes-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
</plugins>
</reporting>
<properties>
<!-- versions of dependencies -->
<spring.version>2.0.8</spring.version>
<vha.stddata.version>15.0</vha.stddata.version>
<spring.security.version>2.0.3</spring.security.version>
<slf4j.version>1.5.2</slf4j.version>
<easymock.version>2.4</easymock.version>
<flex.version>3.1.0.2710</flex.version>
<flexunit.version>0.85</flexunit.version>
<!-- flex compiler settings -->
<flex.mojos.version>2.0.3</flex.mojos.version>
<flex.compiler.accessible>true</flex.compiler.accessible>
<flex.compiler.headless-server>true</flex.compiler.headless-server>
<flex.compiler.debug>true</flex.compiler.debug>
<skipTests>${java.awt.headless}</skipTests>
<!-- EDIS project settings -->
<edis.tracking.trackingContextRoot>/main</edis.tracking.trackingContextRoot>
<edis.tracking.boardContextRoot>/bigboard</edis.tracking.boardContextRoot>
<edis.tracking.helpContextRoot>/help</edis.tracking.helpContextRoot>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<flex.compiler.debug>true</flex.compiler.debug>
</properties>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,211 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-parent</artifactId>
<version>1.0-T29-SNAPSHOT</version>
<relativePath>../tracking-parent</relativePath>
</parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-bigboard</artifactId>
<packaging>war</packaging>
<name>EDIS Tracking Server Big Board</name>
<version>1.0-T29-SNAPSHOT</version>
<description>Emergency Department Integration Software - Tracking Server Big Board</description>
<dependencies>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-ui-bigboard</artifactId>
<version>${project.version}</version>
<type>swf</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${edis.tracking.boardContextRoot}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<includes>
<include>weblogic.xml</include>
</includes>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>${edis.tracking.build.swf.directory}</directory>
<targetPath>/</targetPath>
<filtering>false</filtering>
<includes>
<include>*.swf</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<tstamp>
<format property="timestamp" pattern="yyyy/MM/dd HH:mm:ss z"/>
</tstamp>
<replaceregexp byline="true">
<regexp pattern="app.buildtime=BUILD_TIME_PLACEHOLDER"/>
<substitution expression="app.buildtime=${timestamp}"/>
<fileset dir="target" includes="**/*.properties"/>
</replaceregexp>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.6.5</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>include-latest-client-version</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeTypes>swf</includeTypes>
<outputDirectory>${edis.tracking.build.swf.directory}</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
<execution>
<id>include-backwards-compatible-client-versions</id>
<phase>generate-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>edis-tracking-ui-bigboard</artifactId>
<version>1.0-T28</version>
<type>swf</type>
</artifactItem>
</artifactItems>
<outputDirectory>${edis.tracking.build.swf.directory}</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp-dev/WEB-INF</directory>
<includes>
<include>web.xml</include>
</includes>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<excludes>
<exclude>web.xml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/webapp-dev</directory>
<includes>
<include>BigBoard.jsp</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<excludes>
<exclude>BigBoard.jsp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<includes>
<include>weblogic.xml</include>
</includes>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>${edis.tracking.build.swf.directory}</directory>
<targetPath>/</targetPath>
<filtering>false</filtering>
<includes>
<include>*.swf</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<properties>
<edis.tracking.build.swf.directory>${project.build.directory}/swf</edis.tracking.build.swf.directory>
</properties>
</project>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="bigBoardDao" class="gov.va.med.edp.dao.rpc.VistaLinkBigBoardDao"/>
<bean id="serverPackageVersionDao" class="gov.va.med.edp.dao.rpc.VistaLinkServerPackageVersionDao"/>
<bean id="siteCodeDao" class="gov.va.med.edp.dao.jdbc.JdbcSiteCodeLookUpDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"><value>jdbc/gov.va.med.term.access.Database</value></property>
<property name="resourceRef"><value>false</value></property>
</bean>
</beans>

View File

@ -0,0 +1,7 @@
app.name=Emergency Department Integration Software - Tracking Board
app.version=${project.version}
app.buildtime=BUILD_TIME_PLACEHOLDER
copyright.year=2008
copyright.organization.url=http://www.va.gov
copyright.organization=Department of Veterans Affairs
help.contextRoot=${edis.tracking.helpContextRoot}

View File

@ -0,0 +1,90 @@
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Emergency Department Tracking Board Server Proxy Application</display-name>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>strings</param-value>
</context-param>
<!-- Fallback locale if no bundles found for browser's preferred locale -->
<!-- Force a single locale using param-name 'javax.servlet.jsp.jstl.fmt.locale' -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
<param-value>en</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext-dao.xml
</param-value>
</context-param>
<filter>
<filter-name>noCacheFilter</filter-name>
<filter-class>gov.va.med.edp.web.servlet.filter.ResponseHeaderFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>cache,must-revalidate</param-value>
</init-param>
<init-param>
<param-name>Pragma</param-name>
<param-value>public</param-value>
</init-param>
</filter>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>*.swf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/bigboard.html</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/bigboard.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.csv</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/bigboard.html</welcome-file>
</welcome-file-list>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
</web-app>

View File

@ -0,0 +1,149 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title><fmt:message key="app.name"/></title>
<script src="AC_OETags.js" language="javascript"></script>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
overflow:hidden;
}
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 28;
// -----------------------------------------------------------------------------
// -->
</script>
<!-- BEGIN call Flex function on browser close -->
<script language="JavaScript" type="text/javascript">
<!--
function shutdownHook()
{
var fxControl = document.BigBoard || window.BigBoard;
var warning = fxControl.getUnsavedDataWarning();
if (warning != '')
return warning;
else
return;
}
window.onbeforeunload = shutdownHook;
-->
</script>
<!-- END call Flex function on browser close -->
</head>
<body scroll="no">
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);
// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
if ( hasProductInstall && !hasRequestedVersion ) {
// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
// DO NOT MODIFY THE FOLLOWING FOUR LINES
// Location visited after installation is complete if installation is required
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
var MMredirectURL = window.location;
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
var MMdoctitle = document.title;
AC_FL_RunContent(
"src", "playerProductInstall",
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else if (hasRequestedVersion) {
// if we've detected an acceptable version
// embed the Flash Content SWF when all tests are passed
// Cache Server Page namespace should be set here (don't forget the ampersand)
//var edpVars = "cspNmsp=CPM&cspDemo=500^10vehu^vehu10&";
//var edpVars = "cspServ=vhaislcfgm2.vha.med.va.gov/csp/CPM&cspToken=20012^662&";
//var edpVars = "vljServ=10.5.17.153:7001&";
//var edpVars = "vljServ=10.5.17.225:7001&";
//var edpVars = "vljServ=localhost:7001&";
//SEE LINE BELOW TO LAUNCH BIG BOARD FROM FLEX BUILDER AND PASSING IN A SITE ID
//var edpVars = "vljServ=vhaislbll2.vha.med.va.gov:7141&siteId=442&";
var edpVars = "contextRoot=<c:out value="${pageContext.request.contextPath}"/>&board=<c:out value="${param.board}"/>&siteId=<c:out value="${param.siteId}"/>&area=<c:out value="${param.area}"/>&helpContextRoot=<fmt:message key="help.contextRoot"/>";
AC_FL_RunContent(
"src", "<c:out value="${clientFinalName}"/>",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"flashvars", edpVars,
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here. '
+ 'This content requires the Adobe Flash Player. '
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="<c:out value="${clientArtifactId}"/>" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="<c:out value="${clientFinalName}"/>.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="<c:out value="${clientFinalName}"/>.swf" quality="high" allowFullScreen="true" bgcolor="#869ca7"
width="100%" height="100%" name="<c:out value="${clientArtifactId}"/>" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
</noscript>
</body>
</html>

View File

@ -0,0 +1,276 @@
// Flash Player Version Detection - Rev 1.6
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
var version;
var axo;
var e;
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
try {
// version will be set for 7.X or greater players
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version = axo.GetVariable("$version");
} catch (e) {
}
if (!version)
{
try {
// version will be set for 6.X players only
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
// installed player is some revision of 6.0
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
// so we have to be careful.
// default to the first public version
version = "WIN 6,0,21,0";
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
axo.AllowScriptAccess = "always";
// safe to call for 6.0r47 or greater
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 4.X or 5.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 3.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = "WIN 3,0,18,0";
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 2.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
version = "WIN 2,0,0,11";
} catch (e) {
version = -1;
}
}
return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
// NS/Opera version >= 3 check for Flash plugin in plugin array
var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
var descArray = flashDescription.split(" ");
var tempArrayMajor = descArray[2].split(".");
var versionMajor = tempArrayMajor[0];
var versionMinor = tempArrayMajor[1];
var versionRevision = descArray[3];
if (versionRevision == "") {
versionRevision = descArray[4];
}
if (versionRevision[0] == "d") {
versionRevision = versionRevision.substring(1);
} else if (versionRevision[0] == "r") {
versionRevision = versionRevision.substring(1);
if (versionRevision.indexOf("d") > 0) {
versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
}
}
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
}
}
// MSN/WebTV 2.6 supports Flash 4
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
// WebTV 2.5 supports Flash 3
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
// older WebTV supports Flash 2
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
else if ( isIE && isWin && !isOpera ) {
flashVer = ControlVersion();
}
return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
versionStr = GetSwfVer();
if (versionStr == -1 ) {
return false;
} else if (versionStr != 0) {
if(isIE && isWin && !isOpera) {
// Given "WIN 2,0,0,11"
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
tempString = tempArray[1]; // "2,0,0,11"
versionArray = tempString.split(","); // ['2', '0', '0', '11']
} else {
versionArray = versionStr.split(".");
}
var versionMajor = versionArray[0];
var versionMinor = versionArray[1];
var versionRevision = versionArray[2];
// is the major.revision >= requested major.revision AND the minor version >= requested minor
if (versionMajor > parseFloat(reqMajorVer)) {
return true;
} else if (versionMajor == parseFloat(reqMajorVer)) {
if (versionMinor > parseFloat(reqMinorVer))
return true;
else if (versionMinor == parseFloat(reqMinorVer)) {
if (versionRevision >= parseFloat(reqRevision))
return true;
}
}
return false;
}
}
function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?');
else
return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs)
{
var str = '';
if (isIE && isWin && !isOpera)
{
str += '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '</object>';
} else {
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += '> </embed>';
}
document.write(str);
}
function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();
switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "id":
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}

View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="exceptionHandler" class="gov.va.med.edp.web.handler.ExceptionResolver">
<property name="defaultErrorView" value="exception"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="strings"/>
</bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>
<bean name="/bigboard.html" class="gov.va.med.edp.web.controller.BigBoardClientVersionSynchronizationController">
<property name="clientArtifactId" value="edis-tracking-ui-bigboard"/>
<property name="viewName" value="bigBoard"/>
<property name="errorViewName" value="errorView"/>
<property name="siteCodeDao" ref="siteCodeDao"/>
<property name="serverPackageVersionDao" ref="serverPackageVersionDao"/>
<property name="trackingDao" ref="bigBoardDao"/>
</bean>
<bean name="/testpage.html" class="gov.va.med.edp.web.controller.TestController">
<property name="viewName" value="testPage"/>
</bean>
<bean name="/board.xml" class="gov.va.med.edp.web.controller.BigDisplayBoardController">
<property name="trackingDao" ref="bigBoardDao"/>
<property name="serverPackageVersionDao" ref="serverPackageVersionDao"/>
<property name="siteCodeDao" ref="siteCodeDao"/>
<property name="errorViewName" value="errorView"/>
</bean>
</beans>

View File

@ -0,0 +1,50 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><fmt:message key="app.name"/> - Version Incompatibility</title>
<script language="JavaScript">
var targetURL = '<c:url value="/"/>';
var countdownfrom = 30;
var currentsecond;
function init() {
currentsecond = document.getElementById('countdown').innerHTML = countdownfrom + 1;
countredirect();
}
function countredirect() {
if (currentsecond != 1) {
currentsecond -= 1;
document.getElementById('countdown').innerHTML = currentsecond;
}
else {
window.location = targetURL;
return
}
setTimeout("countredirect()", 1000);
}
</script>
</head>
<body onload="init()">
<%session.invalidate();%>
<h2>
<fmt:message key="app.name"/>
</h2>
<h3>Version Incompatibility</h3>
<p>This is EDIS web application version '<fmt:message key="app.version"/>'.<br/>
The EDIS server package version running in your VistA account is '<c:out value="${serverPackageVersion}"/>'.<br/>
A compatible client ('<c:out value="${clientFinalName}"/>') was not found bundled in this web application.
</p>
<p>Please ensure the version in your VistA account is compatible with version '<fmt:message key="app.version"/>' of the
EDIS web application.</p>
<p>Will attempt to re-establish connection in <span id="countdown">XX</span> seconds.</p>
</body>
</html>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="xmlView" class="gov.va.med.edp.web.view.XmlView"/>
<bean id="exception" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/exception.jsp"/>
</bean>
<bean id="bigBoard" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/bigdisplayboard.jsp"/>
</bean>
<bean id="errorView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/boardErrorReport.jsp"/>
</bean>
<bean id="testPage" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/testpage.jsp"/>
</bean>
<bean id="incompatibilityView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/jsp/incompatibility.jsp"/>
</bean>
</beans>

View File

@ -0,0 +1,126 @@
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Emergency Department Tracking Board Server Proxy Application</display-name>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>strings</param-value>
</context-param>
<!-- Fallback locale if no bundles found for browser's preferred locale -->
<!-- Force a single locale using param-name 'javax.servlet.jsp.jstl.fmt.locale' -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
<param-value>en</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext-dao.xml
</param-value>
</context-param>
<filter>
<filter-name>noCacheFilter</filter-name>
<filter-class>gov.va.med.edp.web.servlet.filter.ResponseHeaderFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>no-store,must-revalidate</param-value>
</init-param>
<init-param>
<param-name>Expires</param-name>
<param-value>Thu, 01 Jan 1970 01:00:00 GMT</param-value>
</init-param>
</filter>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>*.swf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/bigboard.html</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/bigboard.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/testpage.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>noCacheFilter</servlet-name>
<url-pattern>/testpage.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.csv</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
<security-constraint>
<web-resource-collection>
<web-resource-name>ED Tracking Board Flex Client</web-resource-name>
<url-pattern>*.swf</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.xml</url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.csv</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>SSL_AUTHENTICATED_USERS</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
<security-role>
<role-name>SSL_AUTHENTICATED_USERS</role-name>
</security-role>
</web-app>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>edisboardJSESSIONID</param-value>
</session-param>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated_if_clustered</param-value>
</session-param>
</session-descriptor>
<container-descriptor>
<session-monitoring-enabled>true</session-monitoring-enabled>
</container-descriptor>
<context-root>${edis.tracking.boardContextRoot}</context-root>
<security-role-assignment>
<role-name>SSL_AUTHENTICATED_USERS</role-name>
<principal-name>SSL_AUTHENTICATED_USERS</principal-name>
</security-role-assignment>
</weblogic-web-app>

View File

@ -0,0 +1,25 @@
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>
<fmt:message key="app.name"/>
</title>
</head>
<body>
<h2>
<fmt:message key="app.name"/>
</h2>
<h3>
<fmt:message key="app.version"/>
</h3>
<h4>Built: <fmt:message key="app.buildtime"/></h4>
<div>
Copyright <fmt:message key="copyright.year"/> - <a href="<fmt:message key="copyright.organization.url"/>"><fmt:message key="copyright.organization"/></a>
</div>
</body>
</html>

View File

@ -0,0 +1,146 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><fmt:message key="app.name"/></title>
<script src="AC_OETags.js" language="javascript"></script>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
overflow:hidden;
}
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 28;
// -----------------------------------------------------------------------------
// -->
</script>
<!-- BEGIN call Flex function on browser close -->
<script language="JavaScript" type="text/javascript">
<!--
function shutdownHook()
{
var fxControl = document.BigBoard || window.BigBoard;
var warning = fxControl.getUnsavedDataWarning();
if (warning != '')
return warning;
else
return;
}
window.onbeforeunload = shutdownHook;
-->
</script>
<!-- END call Flex function on browser close -->
</head>
<body scroll="no">
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);
// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
if ( hasProductInstall && !hasRequestedVersion ) {
// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
// DO NOT MODIFY THE FOLLOWING FOUR LINES
// Location visited after installation is complete if installation is required
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
var MMredirectURL = window.location;
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
var MMdoctitle = document.title;
AC_FL_RunContent(
"src", "playerProductInstall",
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else if (hasRequestedVersion) {
// if we've detected an acceptable version
// embed the Flash Content SWF when all tests are passed
// Cache Server Page namespace should be set here (don't forget the ampersand)
//var edpVars = "cspNmsp=CPM&cspDemo=500^10vehu^vehu10&";
//var edpVars = "cspServ=vhaislcfgm2.vha.med.va.gov/csp/CPM&cspToken=20012^662&";
//var edpVars = "vljServ=10.5.17.153:7001&";
//var edpVars = "vljServ=10.5.17.225:7001&";
//var edpVars = "vljServ=localhost:7001&";
//SEE LINE BELOW TO LAUNCH BIG BOARD FROM FLEX BUILDER AND PASSING IN A SITE ID
//var edpVars = "vljServ=vhaislbll2.vha.med.va.gov:7141&siteId=442&";
var edpVars = "contextRoot=<c:out value="${pageContext.request.contextPath}"/>&board=<c:out value="${param.board}"/>&area=<c:out value="${param.area}"/>&helpContextRoot=<fmt:message key="help.contextRoot"/>";
AC_FL_RunContent(
"src", "<c:out value="${clientFinalName}"/>",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"flashvars", edpVars,
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here. '
+ 'This content requires the Adobe Flash Player. '
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="<c:out value="${clientArtifactId}"/>" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="<c:out value="${clientFinalName}"/>.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="<c:out value="${clientFinalName}"/>.swf" quality="high" allowFullScreen="true" bgcolor="#869ca7"
width="100%" height="100%" name="<c:out value="${clientArtifactId}"/>" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
</noscript>
</body>
</html>

View File

@ -0,0 +1,22 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><fmt:message key="app.name"/></title>
</head>
<body>
<h2><fmt:message key="app.name"/></h2>
<p>This is EDIS web application version '<fmt:message key="app.version"/>'.</p>
<p>An error occurred while processing your request. The message is:<br/>
<font color="red"><b> <c:out value="${errorMessage}"/></b></font></p>
<p><a href="<%= request.getContextPath() %>">Click here to try again...</a></p>
</body>
</html>

View File

@ -0,0 +1,70 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<html>
<head><title><fmt:message key="app.name"/> Debug</title></head>
<body>
<h1><fmt:message key="app.name"/> Debug</h1>
<h4>initLogArea</h4>
<form name="initLogArea" action="tracking.xml" method="post">
<input name="command" type="hidden" value="initLogArea"/>
<table>
<tr>
<td><label for="init_area">area</label></td>
<td><input id="init_area" name="area" type="text" value="1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>initTrackingArea</h4>
<form name="initTrackingArea" action="board.xml" method="post">
<input name="command" type="hidden" value="initLogArea"/>
<table>
<tr>
<td><label for="init_area">area</label></td>
<td><input id="init_area" name="area" type="text" value="1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>refreshLogSelector</h4>
<form name="refreshLogSelector" action="tracking.xml" method="post">
<input name="command" type="hidden" value="refreshLogSelector"/>
<table>
<tr>
<td><label for="refresh_area">area</label></td>
<td><input id="refresh_area" name="area" type="text" value="1"/></td>
</tr>
<tr>
<td><label for="token">token</label></td>
<td><input id="token" name="token" type="text" value="-1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>switchLogEntry</h4>
<form name="switchLogEntry" action="tracking.xml" method="post">
<input name="command" type="hidden" value="switchLogEntry"/>
<table>
<tr>
<td><label for="logID">logID</label></td>
<td><input id="logID" name="logID" type="text" value="64"/></td>
</tr>
<tr>
<td><label for="getChoices">getChoices</label></td>
<td><input id="getChoices" name="getChoices" type="text" value="1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
</body>
</html>

View File

@ -0,0 +1,12 @@
<%@ page pageEncoding="UTF-8" contentType="application/xml;charset=UTF-8" language="java" session="false" isErrorPage="true" %><?xml version="1.0" encoding="UTF-8"?>
<results>
<error>
<code><%= request.getAttribute("javax.servlet.error.status_code") %></code>
<message><%= request.getAttribute("javax.servlet.error.exception") %></message>
<resource><%= request.getAttribute("javax.servlet.error.request_uri") %></resource>
<detail xml:space="preserve"><% Throwable e =
(Throwable) request.getAttribute("javax.servlet.error.exception");
e.printStackTrace(new java.io.PrintWriter(out));
%></detail>
</error>
</results>

View File

@ -0,0 +1,12 @@
<%@ page pageEncoding="UTF-8" contentType="application/xml;charset=UTF-8" language="java" session="false" isErrorPage="true" %><?xml version="1.0" encoding="UTF-8"?>
<results>
<error>
<code>500</code>
<message><%= ((Exception) request.getAttribute("exception")).getMessage() %></message>
<resource><%= request.getAttribute("resource") %></resource>
<detail xml:space="preserve"><% Exception e =
(Exception) request.getAttribute("exception");
e.printStackTrace(new java.io.PrintWriter(out));
%></detail>
</error>
</results>

View File

@ -0,0 +1,2 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:redirect url="/bigboard.html"/>

View File

@ -0,0 +1,16 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title><fmt:message key="app.name"/> Logged Out</title></head>
<body>
<%session.invalidate();%>
<h2>
<fmt:message key="app.name"/>
</h2>
<p>You have been logged out.</p>
<p><a href="<%= request.getContextPath() %>">Log in again.</a></p>
<p><a href="http://vhaislcfgm2.vha.med.va.gov/shadowfax/joomla/index.php?option=com_fireboard&Itemid=121&task=listcat&catid=14">EDIS Tracking Feedback Forum</a></p>
</body>
</html>

View File

@ -0,0 +1,3 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<% session.invalidate(); %>
<c:redirect url="/"/>

View File

@ -0,0 +1,25 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><fmt:message key="app.name"/></title>
</head>
<body>
<h2><fmt:message key="app.name"/></h2>
<p>This is EDIS web application version '<fmt:message key="app.version"/>'.</p>
<p>HTTP Header Value for 'EdisClientMachineName' =<b><font color="blue">
<c:out value="${EdisClientMachineName}"/></font></b></p>
<p>All HTTP Headers Were:<b><font color="blue">
<c:out value="${HttpHeaders}"/></font></b></p>
</body>
</html>

View File

@ -0,0 +1,168 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-parent</artifactId>
<version>1.0-T29-SNAPSHOT</version>
<relativePath>../tracking-parent</relativePath>
</parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-core</artifactId>
<packaging>jar</packaging>
<name>EDIS Tracking Server Core</name>
<version>1.0-T29-SNAPSHOT</version>
<description>Emergency Department Integration Software - Tracking Application Server Core</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jca</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
</exclusion>
<exclusion>
<groupId>avalon-framework</groupId>
<artifactId>avalon-framework</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
</exclusion>
<exclusion>
<groupId>avalon-framework</groupId>
<artifactId>avalon-framework</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
</exclusion>
<exclusion>
<groupId>avalon-framework</groupId>
<artifactId>avalon-framework</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>gov.va.med.authentication</groupId>
<artifactId>kaajee</artifactId>
<version>1.0.1.002</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>weblogic</groupId>
<artifactId>weblogic</artifactId>
<version>8.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>gov.va.med.vistalink</groupId>
<artifactId>vljFoundationsLib</artifactId>
<version>1.5.0.026</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>gov.va.med.vistalink</groupId>
<artifactId>vljConnector</artifactId>
<version>1.5.0.026</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<version>1.2_Java1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
</exclusion>
<exclusion>
<groupId>avalon-framework</groupId>
<artifactId>avalon-framework</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

View File

@ -0,0 +1,14 @@
package gov.va.med.edp.dao;
import gov.va.med.edp.vo.BigBoardDebugInfoVO;
import org.springframework.dao.DataAccessException;
/**
* TODO: document ServerPackageVersionDao
*/
public interface ServerPackageVersionDao {
String getServerPackageVersion(String stationNumber);
BigBoardDebugInfoVO getVistaLinkConnectionInfo(String stationNumber) throws DataAccessException;
}

View File

@ -0,0 +1,8 @@
package gov.va.med.edp.dao;
import gov.va.med.edp.vo.SessionVO;
import org.springframework.dao.DataAccessException;
public interface SessionDao {
SessionVO getSessionInfo(String stationNumber, String duz) throws DataAccessException;
}

View File

@ -0,0 +1,7 @@
package gov.va.med.edp.dao;
import org.springframework.dao.DataAccessException;
public interface SiteCodeLookUpDao {
String getSiteCode(String machineName) throws DataAccessException;
}

View File

@ -0,0 +1,9 @@
package gov.va.med.edp.dao;
import org.springframework.dao.DataAccessException;
import java.util.Map;
public interface TrackingDao {
String executeCommand(String stationNumber, String duz, Map params) throws DataAccessException;
}

View File

@ -0,0 +1,72 @@
package gov.va.med.edp.dao.jdbc;
import gov.va.med.edp.dao.SiteCodeLookUpDao;
import java.util.List;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.Assert;
public class JdbcSiteCodeLookUpDao implements SiteCodeLookUpDao, InitializingBean {
private JdbcTemplate jdbcTemplate;
private static Logger logger = Logger.getLogger(JdbcSiteCodeLookUpDao.class);
public String getSiteCode(String machineName) throws DataAccessException {
String sql = "select siteCode from EDP.SiteMapper where sitePrefix=?";
String siteCode = "";
List siteCodeList = null;
if (logger.isDebugEnabled()){
logger.debug("Executing SQL: " + sql + " with parameter: " + machineName);
}
siteCodeList = jdbcTemplate.queryForList(sql, new Object[]{machineName} , String.class);
if (!(siteCodeList!= null && siteCodeList.size() == 1)){
String sitePrefix = parseSitePrefix(machineName);
if (logger.isDebugEnabled()){
logger.debug("Matching site code was not found for the full machineName. Now executing SQL query:" + sql + " with parameter: " + sitePrefix);
}
siteCodeList = jdbcTemplate.queryForList(sql, new Object[]{sitePrefix} , String.class);
}
if (siteCodeList!= null && siteCodeList.size() == 1){
siteCode = siteCodeList.get(0).toString();
if (logger.isDebugEnabled()) logger.debug("SQL Query executed successfully. The Site Code is: " + siteCode);
return siteCode;
}
if (logger.isDebugEnabled()) logger.debug("No Results were found for the SQL Query. Returning null for siteCode");
return null;
}
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(jdbcTemplate, "jdbcTemplate must not be null");
}
private String parseSitePrefix(String machineName){
String sitePrefix = "";
if (machineName.startsWith("VHA")){
sitePrefix = machineName.substring(3, 6);
} else {
sitePrefix = machineName.substring(0, 3);
}
if (logger.isDebugEnabled()){
logger.debug("Parsed sitePrefix from the machineName: " + machineName + " is: " + sitePrefix);
}
return sitePrefix;
}
}

View File

@ -0,0 +1,51 @@
package gov.va.med.edp.dao.rpc;
import gov.va.med.edp.dao.TrackingDao;
import gov.va.med.edp.rpc.VistaLinkDaoSupport;
import org.springframework.dao.DataAccessException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class VistaLinkBigBoardDao extends VistaLinkDaoSupport implements TrackingDao {
static final String EDPS_BOARD_CONTEXT = "EDPS BOARD CONTEXT";
static final String EDP_CONTROLLER_BOARD_RPC = "EDPCBRD RPC";
static final String EDPTRACKING_APPLICATION_USER = "EDPTRACKING,PROXY";
/**
* Builds the list of parameters to pass to the RPC.
* First argument to the RPC is a string of the format "${duz}^${stationNumber}". If duz is null, will send "0^${stationNumber}"
* Second argument to the RPC is a multiple containing key value pairs passed in as a map.
*
* @param stationNumber The station number that this command is being executed on behalf of. Note how this is different
* from the station number of the vista account this dao is communicating with.
* @param duz user who command is being executed on behalf of. Can be null for some operations. Note how this is different
* from the "application user duz" that RPCs are executed with.
* @param params A map containing key value pairs that are passed to RPC as a multiple.
* @return list with two items in it, a string and a multiple, to be passed as RPC arguments.
*/
protected List buildRpcParameterList(String stationNumber, String duz, Map params) {
ArrayList paramList = new ArrayList();
paramList.add((duz == null ? "0" : duz) + '^' + stationNumber);
paramList.add(params);
return paramList;
}
/**
* Commands executed by this data access object are always executed by the "application user" against the stationNumber
* set by the property on this bean.
*
* @param stationNumber The station number that this command is being executed on behalf of. Note how this is different
* from the station number of the vista account this dao is communicating with. Cannot be null.
* @param duz A duz to execute the command on behalf of. Can be null for some operations. Note how this is different
* from the "application user duz" that RPCs are executed with.
* @param params A map containing key value pairs that are passed to the RPC as a multiple.
* @return result of executing command RPC as a string.
* @throws org.springframework.dao.DataAccessException
*
*/
public String executeCommand(String stationNumber, String duz, Map params) throws DataAccessException {
return getRpcTemplate().rpcAsApplication(stationNumber, EDPTRACKING_APPLICATION_USER, EDPS_BOARD_CONTEXT, EDP_CONTROLLER_BOARD_RPC, buildRpcParameterList(stationNumber, duz, params));
}
}

View File

@ -0,0 +1,68 @@
package gov.va.med.edp.dao.rpc;
import gov.va.med.edp.rpc.VistaLinkDaoSupport;
import gov.va.med.edp.vo.BigBoardDebugInfoVO;
import gov.va.med.edp.dao.ServerPackageVersionDao;
import java.util.Map;
import java.util.HashMap;
import java.io.StringReader;
import java.io.IOException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataRetrievalFailureException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
/**
* TODO: document VistaLinkServerPackageVersionDao
*/
public class VistaLinkServerPackageVersionDao extends VistaLinkBigBoardDao implements ServerPackageVersionDao {
private static final String UNABLE_TO_GET_VERSION_INFO = "unable to get version info";
public String getServerPackageVersion(String stationNumber) {
Map params = new HashMap();
params.put("command", "initTracking");
String result = executeCommand(stationNumber, null, params);
return getVersion(result);
}
public BigBoardDebugInfoVO getVistaLinkConnectionInfo(String stationNumber) throws DataAccessException {
return getRpcTemplate().getVistaLinkConnectionInfo(stationNumber, EDPTRACKING_APPLICATION_USER);
}
private String getVersion(String result) {
Document doc = buildDocument(result);
return getVersion(doc);
}
private Element getUserElement(Document doc) {
return (Element) doc.getDocumentElement().getElementsByTagName("user").item(0);
}
private String getVersion(Document doc) {
Element user = getUserElement(doc);
if (user == null) return null;
return user.getAttribute("version");
}
private Document buildDocument(String result) {
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
return builder.parse(new InputSource(new StringReader("<results>" + result + "</results>")));
} catch (ParserConfigurationException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_VERSION_INFO, e);
} catch (IOException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_VERSION_INFO, e);
} catch (SAXException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_VERSION_INFO, e);
}
}
}

View File

@ -0,0 +1,70 @@
package gov.va.med.edp.dao.rpc;
import gov.va.med.edp.dao.SessionDao;
import gov.va.med.edp.vo.SessionVO;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataRetrievalFailureException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
public class VistaLinkSessionDao extends VistaLinkTrackingDao implements SessionDao {
private static final String UNABLE_TO_GET_USER_INFO = "unable to get user info";
public SessionVO getSessionInfo(String stationNumber, String duz) throws DataAccessException {
Map params = new HashMap();
params.put("command", "initUser");
String result = executeCommand(stationNumber, duz, params);
return createSessionInfo(result);
}
private SessionVO createSessionInfo(String result) {
Document doc = buildDocument(result);
SessionVO session = new SessionVO();
session.setServerPackageVersion(getServerPackageVersion(doc));
session.setTimeOutMillis(Integer.parseInt(getTimeout(doc)));
session.setCountDownMillis(Integer.parseInt(getCountdown(doc)));
return session;
}
private String getServerPackageVersion(Document doc) {
return getUserElement(doc).getAttribute("version");
}
private String getTimeout(Document doc) {
return getUserElement(doc).getAttribute("timeOut");
}
private Element getUserElement(Document doc) {
return ((Element) doc.getDocumentElement().getElementsByTagName("user").item(0));
}
private String getCountdown(Document doc) {
return getUserElement(doc).getAttribute("countDown");
}
private Document buildDocument(String result) {
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
return builder.parse(new InputSource(new StringReader("<results>" + result + "</results>")));
} catch (ParserConfigurationException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_USER_INFO, e);
} catch (IOException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_USER_INFO, e);
} catch (SAXException e) {
throw new DataRetrievalFailureException(UNABLE_TO_GET_USER_INFO, e);
}
}
}

View File

@ -0,0 +1,25 @@
package gov.va.med.edp.dao.rpc;
import org.springframework.dao.DataAccessException;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import gov.va.med.edp.dao.TrackingDao;
import gov.va.med.edp.rpc.VistaLinkDaoSupport;
public class VistaLinkTrackingDao extends VistaLinkDaoSupport implements TrackingDao {
static final String EDPF_TRACKING_SYSTEM_CONTEXT = "EDPF TRACKING SYSTEM";
static final String EDP_CONTROLLER_RPC = "EDPCTRL RPC";
public String executeCommand(String stationNumber, String duz, Map params) throws DataAccessException {
return getRpcTemplate().rpcAsUser(stationNumber, duz, EDPF_TRACKING_SYSTEM_CONTEXT, EDP_CONTROLLER_RPC, buildRpcParameterList(params));
}
private List buildRpcParameterList(Map params) {
ArrayList paramList = new ArrayList();
paramList.add(params);
return paramList;
}
}

View File

@ -0,0 +1,22 @@
package gov.va.med.edp.rpc;
import org.springframework.dao.DataAccessResourceFailureException;
import javax.resource.cci.ConnectionFactory;
/**
* Implementations of this interface retrieve JCA connection factories for a particular VistA station number.
*
* @see InstitutionMappingConnectionFactoryLocator
*/
public interface ConnectionFactoryLocator {
/**
* Retrieves a connection factory for the specified station number, or throws an exception. Never should return null.
*
* @param stationNumber
* @return the connection factory for the specified station number, or throw a data access resource exception if there is none.
* @throws DataAccessResourceFailureException
*
*/
ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException;
}

View File

@ -0,0 +1,39 @@
package gov.va.med.edp.rpc;
import gov.va.med.vistalink.adapter.cci.VistaLinkConnectionFactory;
import gov.va.med.vistalink.institution.InstitutionMapNotInitializedException;
import gov.va.med.vistalink.institution.InstitutionMappingDelegate;
import gov.va.med.vistalink.institution.InstitutionMappingNotFoundException;
import org.springframework.dao.DataAccessResourceFailureException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.resource.cci.ConnectionFactory;
import java.text.MessageFormat;
public class InstitutionMappingConnectionFactoryLocator implements ConnectionFactoryLocator {
private static final String NO_CONNECTION_FACTORY = "Unable to obtain connection factory for station ''{0}''";
private static final String NO_CONNECTION_FACTORY_JNDI = "Unable to obtain connection factory for station ''{0}'' at JNDI name ''{1}''";
public ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException {
try {
String jndiConnectorName = InstitutionMappingDelegate.getJndiConnectorNameForInstitution(
stationNumber);
try {
Context ic = new InitialContext();
VistaLinkConnectionFactory vistaLinkConnectionFactory = (VistaLinkConnectionFactory) ic.lookup(jndiConnectorName);
if (vistaLinkConnectionFactory == null)
throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY_JNDI, new Object[]{stationNumber, jndiConnectorName}));
return vistaLinkConnectionFactory;
} catch (NamingException e) {
throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY_JNDI, new Object[]{stationNumber, jndiConnectorName}), e);
}
} catch (InstitutionMappingNotFoundException e) {
throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY, new Object[]{stationNumber}), e);
} catch (InstitutionMapNotInitializedException e) {
throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY, new Object[]{stationNumber}), e);
}
}
}

View File

@ -0,0 +1,34 @@
package gov.va.med.edp.rpc;
import org.springframework.dao.support.DaoSupport;
public class VistaLinkDaoSupport extends DaoSupport {
private VistaLinkRpcTemplate rpcTemplate;
protected void checkDaoConfig() throws IllegalArgumentException {
if (this.rpcTemplate == null) {
setConnectionFactoryLocator(new InstitutionMappingConnectionFactoryLocator());
}
}
protected VistaLinkRpcTemplate createRpcTemplate(ConnectionFactoryLocator connectionFactoryLocator) {
return new VistaLinkRpcTemplate(connectionFactoryLocator);
}
public ConnectionFactoryLocator getConnectionFactoryLocator() {
return rpcTemplate.getConnectionFactoryLocator();
}
public void setConnectionFactoryLocator(ConnectionFactoryLocator connectionFactoryLocator) {
setRpcTemplate(createRpcTemplate(connectionFactoryLocator));
}
public VistaLinkRpcTemplate getRpcTemplate() {
return rpcTemplate;
}
public void setRpcTemplate(VistaLinkRpcTemplate rpcTemplate) {
this.rpcTemplate = rpcTemplate;
}
}

View File

@ -0,0 +1,38 @@
package gov.va.med.edp.rpc;
import gov.va.med.vistalink.adapter.record.VistaLinkFaultException;
import org.springframework.dao.DataRetrievalFailureException;
public class VistaLinkRpcDataRetrievalFailureException extends DataRetrievalFailureException {
private VistaLinkFaultException fault;
public VistaLinkRpcDataRetrievalFailureException(VistaLinkFaultException fault) {
super(fault.getMessage(), fault);
this.fault = fault;
}
public String getErrorCode() {
return fault.getErrorCode();
}
public String getErrorMessage() {
return fault.getErrorMessage();
}
public String getErrorType() {
return fault.getErrorType();
}
public String getFaultActor() {
return fault.getFaultActor();
}
public String getFaultCode() {
return fault.getFaultCode();
}
public String getFaultString() {
return fault.getFaultString();
}
}

View File

@ -0,0 +1,41 @@
package gov.va.med.edp.rpc;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import gov.va.med.vistalink.adapter.record.VistaLinkFaultException;
/**
* TODO: document VistaLinkRpcInvalidApiUsageException
*/
public class VistaLinkRpcInvalidApiUsageException extends InvalidDataAccessApiUsageException {
private VistaLinkFaultException fault;
public VistaLinkRpcInvalidApiUsageException(VistaLinkFaultException fault) {
super(fault.getMessage());
this.fault = fault;
}
public String getErrorCode() {
return fault.getErrorCode();
}
public String getErrorMessage() {
return fault.getErrorMessage();
}
public String getErrorType() {
return fault.getErrorType();
}
public String getFaultActor() {
return fault.getFaultActor();
}
public String getFaultCode() {
return fault.getFaultCode();
}
public String getFaultString() {
return fault.getFaultString();
}
}

View File

@ -0,0 +1,38 @@
package gov.va.med.edp.rpc;
import gov.va.med.vistalink.adapter.record.VistaLinkFaultException;
import org.springframework.dao.PermissionDeniedDataAccessException;
public class VistaLinkRpcPermissionDeniedException extends PermissionDeniedDataAccessException {
private VistaLinkFaultException fault;
public VistaLinkRpcPermissionDeniedException(VistaLinkFaultException fault) {
super(fault.getMessage(), fault);
this.fault = fault;
}
public String getErrorCode() {
return fault.getErrorCode();
}
public String getErrorMessage() {
return fault.getErrorMessage();
}
public String getErrorType() {
return fault.getErrorType();
}
public String getFaultActor() {
return fault.getFaultActor();
}
public String getFaultCode() {
return fault.getFaultCode();
}
public String getFaultString() {
return fault.getFaultString();
}
}

View File

@ -0,0 +1,169 @@
package gov.va.med.edp.rpc;
import gov.va.med.edp.vo.BigBoardDebugInfoVO;
import gov.va.med.exception.FoundationsException;
import gov.va.med.vistalink.adapter.cci.VistaLinkAppProxyConnectionSpec;
import gov.va.med.vistalink.adapter.cci.VistaLinkConnection;
import gov.va.med.vistalink.adapter.cci.VistaLinkConnectionSpec;
import gov.va.med.vistalink.adapter.cci.VistaLinkDuzConnectionSpec;
import gov.va.med.vistalink.adapter.record.LoginsDisabledFaultException;
import gov.va.med.vistalink.adapter.record.VistaLinkFaultException;
import gov.va.med.vistalink.adapter.spi.VistaLinkServerInfo;
import gov.va.med.vistalink.rpc.*;
import gov.va.med.vistalink.security.m.SecurityFaultException;
import gov.va.med.vistalink.security.m.SecurityDivisionDeterminationFaultException;
import org.apache.log4j.Logger;
import org.springframework.dao.*;
import org.springframework.jca.cci.core.CciTemplate;
import org.springframework.jca.cci.core.ConnectionCallback;
import org.springframework.util.Assert;
import javax.resource.ResourceException;
import javax.resource.cci.Connection;
import javax.resource.cci.ConnectionFactory;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.List;
/**
* This is the central class in the rpc package. It simplifies the use of VistaLink RPCs and helps to avoid common errors.
* It executes core RPC workflow, leaving application code to provide RPC names and parameters and extract results. This
* class executes RPCs with VistaLink, initiating iteration over RPC results and catching VistaLink exceptions and
* translating them to the generic data access exception hierarchy defined in the org.springframework.dao package.
*/
public class VistaLinkRpcTemplate {
private static final int USER_TYPE_DUZ = 1;
private static final int USER_TYPE_APPLICATION_PROXY = 2;
static final int DEFAULT_TIMEOUT = 10000;
private static Logger log = Logger.getLogger(VistaLinkRpcTemplate.class);
private int timeOut = DEFAULT_TIMEOUT;
private String rpcContext;
private ConnectionFactoryLocator connectionFactoryLocator;
private static final String UNABLE_TO_EXECUTE_RPC = "Unable to execute RPC";
public VistaLinkRpcTemplate(ConnectionFactoryLocator connectionFactoryLocator) {
this.connectionFactoryLocator = connectionFactoryLocator;
}
public String rpcAsUser(final String division, final String duz, final String rpcContext, final String rpcName) throws DataAccessException {
return rpcAsUser(division, duz, rpcContext, rpcName, null);
}
public String rpcAsUser(final String division, final String duz, final String rpcContext, final String rpcName, final List params) throws DataAccessException {
return rpc(division, duz, rpcContext, rpcName, params, USER_TYPE_DUZ);
}
public String rpcAsApplication(final String division, final String applicationProxyName, final String rpcContext, final String rpcName) throws DataAccessException {
return rpcAsApplication(division, applicationProxyName, rpcContext, rpcName, null);
}
public String rpcAsApplication(final String division, final String applicationProxyName, final String rpcContext, final String rpcName, final List params) throws DataAccessException {
return rpc(division, applicationProxyName, rpcContext, rpcName, params, USER_TYPE_APPLICATION_PROXY);
}
public BigBoardDebugInfoVO getVistaLinkConnectionInfo(final String division, final String user) throws DataAccessException {
return getConnectionInfo(division, user, USER_TYPE_APPLICATION_PROXY);
}
public String rpc(final String division, final String user, final String rpcContext, final String rpcName, final List params, final int userType) throws DataAccessException {
if (log.isDebugEnabled())
log.debug(MessageFormat.format("''{0}'' called in context ''{1}'' by ''{2}'' at facility ''{3}'' with params: {4}", new Object[]{rpcName, rpcContext, user, division, params}));
ConnectionFactory connectionFactory = connectionFactoryLocator.getConnectionFactory(division);
try {
CciTemplate t = new CciTemplate(connectionFactory, createConnectionSpec(division, user, userType));
RpcResponse response = (RpcResponse) t.execute(new ConnectionCallback() {
public Object doInConnection(Connection connection, ConnectionFactory connectionFactory) throws ResourceException, SQLException, DataAccessException {
try {
Assert.isInstanceOf(VistaLinkConnection.class, connection);
VistaLinkConnection conn = (VistaLinkConnection) connection;
conn.setTimeOut(getTimeOut());
RpcRequest request = RpcRequestFactory.getRpcRequest(rpcContext, rpcName);
request.setUseProprietaryMessageFormat(true);
request.setXmlResponse(false);
if (params != null) {
request.setParams(params);
}
return conn.executeRPC(request);
} catch (IllegalArgumentException e) {
throw new InvalidDataAccessApiUsageException(UNABLE_TO_EXECUTE_RPC, e);
} catch (NoRpcContextFaultException e) {
throw new VistaLinkRpcInvalidApiUsageException(e);
} catch (RpcNotOkForProxyUseException e) {
throw new VistaLinkRpcInvalidApiUsageException(e);
} catch (RpcNotInContextFaultException e) {
throw new VistaLinkRpcPermissionDeniedException(e);
} catch (LoginsDisabledFaultException e) {
throw new DataAccessResourceFailureException(UNABLE_TO_EXECUTE_RPC, e);
} catch (SecurityDivisionDeterminationFaultException e) {
throw new VistaLinkRpcInvalidApiUsageException(e);
} catch (SecurityFaultException e) {
throw new VistaLinkRpcPermissionDeniedException(e);
} catch (VistaLinkFaultException e) {
throw new DataRetrievalFailureException(UNABLE_TO_EXECUTE_RPC, e);
} catch (FoundationsException e) {
throw new DataRetrievalFailureException(UNABLE_TO_EXECUTE_RPC, e);
}
}
});
String result = response.getResults();
if (log.isDebugEnabled()) {
log.debug(MessageFormat.format("''{0}'' returned: {1}", new Object[]{rpcName, result}));
}
return result;
} catch (IllegalArgumentException e) {
throw new InvalidDataAccessApiUsageException(UNABLE_TO_EXECUTE_RPC, e);
}
}
private BigBoardDebugInfoVO getConnectionInfo(final String division, final String user, final int userType) throws DataAccessException {
VistaLinkConnection conn = null;
ConnectionFactory connectionFactory = connectionFactoryLocator.getConnectionFactory(division);
try {
conn = (VistaLinkConnection)connectionFactory.getConnection(createConnectionSpec(division, user, userType));
} catch (ResourceException e) {
throw new DataAccessResourceFailureException("error getting connection info", e);
}
VistaLinkServerInfo vistaLinkServerInfo = conn.getConnectionInfo();
BigBoardDebugInfoVO bbd = new BigBoardDebugInfoVO(vistaLinkServerInfo.getAddress().toString(), new Integer(vistaLinkServerInfo.getPort()).toString());
return bbd;
}
private VistaLinkConnectionSpec createConnectionSpec(String division, String user, int userType) {
switch (userType) {
case USER_TYPE_APPLICATION_PROXY:
return new VistaLinkAppProxyConnectionSpec(division, user);
case USER_TYPE_DUZ:
default:
return new VistaLinkDuzConnectionSpec(division, user);
}
}
public int getTimeOut() {
return timeOut;
}
public void setTimeOut(int timeOut) {
this.timeOut = timeOut;
}
public String getRpcContext() {
return rpcContext;
}
public void setRpcContext(String rpcContext) {
this.rpcContext = rpcContext;
}
public ConnectionFactoryLocator getConnectionFactoryLocator() {
return connectionFactoryLocator;
}
}

View File

@ -0,0 +1,74 @@
package gov.va.med.edp.vo;
public class BigBoardDebugInfoVO {
private String vistalinkIPAddress;
private String vistalinkPort;
private String siteId;
private String machineName;
public BigBoardDebugInfoVO(String vistalinkIPAddress, String vistalinkPort) {
super();
this.vistalinkIPAddress = vistalinkIPAddress;
this.vistalinkPort = vistalinkPort;
}
public BigBoardDebugInfoVO() {
super();
}
public String getVistalinkIPAddress() {
return vistalinkIPAddress;
}
public void setVistalinkIPAddress(String vistalinkIPAddress) {
this.vistalinkIPAddress = vistalinkIPAddress;
}
public String getVistalinkPort() {
return vistalinkPort;
}
public void setVistalinkPort(String vistalinkPort) {
this.vistalinkPort = vistalinkPort;
}
public String getSiteId() {
return siteId;
}
public void setSiteId(String siteId) {
this.siteId = siteId;
}
public String getMachineName() {
return machineName;
}
public void setMachineName(String machineName) {
this.machineName = machineName;
}
public String toString() {
return "<vistalinkConnectionInfo><vistalinkIPAddress>" + vistalinkIPAddress + "</vistalinkIPAddress>" +
"<vistalinkPort>" + vistalinkPort + "</vistalinkPort>" +
"<siteId>" + siteId + "</siteId>" +
"<machineName>" + machineName + "</machineName>" +
"</vistalinkConnectionInfo>";
}
}

View File

@ -0,0 +1,52 @@
package gov.va.med.edp.vo;
public class SessionVO {
static final int DEFAULT_TIMEOUT_MS = 300000; // 5 minutes
static final int DEFAULT_COUNTDOWN_MS = 10000; // 10 seconds
private String serverPackageVersion;
private int timeOutMillis = DEFAULT_TIMEOUT_MS;
private int countDownMillis = DEFAULT_COUNTDOWN_MS;
public String getServerPackageVersion() {
return serverPackageVersion;
}
public void setServerPackageVersion(String serverPackageVersion) {
this.serverPackageVersion = serverPackageVersion;
}
public int getTimeOutMillis() {
return timeOutMillis;
}
public void setTimeOutMillis(int timeOutMillis) {
this.timeOutMillis = timeOutMillis;
}
public int getCountDownMillis() {
return countDownMillis;
}
public void setCountDownMillis(int countDownMillis) {
this.countDownMillis = countDownMillis;
}
/**
* Calculates the time, in seconds, between client requests before the servlet container will invalidate this session.
*
* @return
*/
public int getMaxInactiveInterval() {
return (getTimeOutMillis() + getCountDownMillis()) / 1000 + 60;
}
public String toString() {
return "SessionVO{" +
"serverPackageVersion='" + serverPackageVersion + '\'' +
", timeOutMillis=" + timeOutMillis +
", countDownMillis=" + countDownMillis +
'}';
}
}

View File

@ -0,0 +1,93 @@
package gov.va.med.edp.web.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
/**
* TODO: document BigBoardClientVersionSynchronizationController
*/
public class BigBoardClientVersionSynchronizationController extends ClientVersionSynchronizationController {
private String errorMsg;
private static Logger logger = Logger.getLogger(BigBoardClientVersionSynchronizationController.class);
public void afterPropertiesSet() throws Exception {
setRequireSession(false);
super.afterPropertiesSet();
Assert.notNull(serverPackageVersionDao, "serverPackageVersionDao must not be null");
Assert.notNull(getSiteCodeDao(), "siteCodeDao is required");
Assert.notNull(getTrackingDao(), "trackingDao is required");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
//First attempt is to get the machineName from HTTP Header:EdisClientMachineName as decided
// this HTTP header is appended by the load balancer and the value of this header (the machine name)
//is parsed by the load balancer.
String machineName = parseCNFromHttpHeaders(request.getHeader(MACHINE_NAME_HEADER));
if (StringUtils.hasText(machineName)){
debug("Machine name obtained from HTTP Header:" + MACHINE_NAME_HEADER + " was: " + machineName);
} else {
debug("No Machine name was found in HTTP Header:" + MACHINE_NAME_HEADER );
machineName = getMachineNameFromUserPrincipalOrSessionOrRequest(request);
}
//set the machine name in an existing session for refreshes/restored sessions
HttpSession session = request.getSession(false);
if (session != null){
session.setAttribute(MACHINE_NAME_PARAM, machineName);
} else {
return createErrorModelAndView("Invalid Session was detected. Please try re-launching the EDIS Big Board");
}
String siteCode = getSiteCodeDao().getSiteCode(machineName);
debug("Site Code Obtained for Machine: " + machineName + " was: " + siteCode);
if (!StringUtils.hasText(siteCode)){
errorMsg = "A matching site code for the machine: " + machineName + " was not found in the EDP.SiteMapper table.\n" +
"Please contact the EDIS national help desk with this message for remedy.";
return createErrorModelAndView(errorMsg);
}
String serverPackageVersion = (String) request.getSession().getAttribute(SessionConstants.SERVER_PACKAGE_VERSION_KEY);
if (serverPackageVersion == null) {
serverPackageVersion = serverPackageVersionDao.getServerPackageVersion(siteCode);
request.getSession().setAttribute(SessionConstants.SERVER_PACKAGE_VERSION_KEY, serverPackageVersion);
}
debug("serverPackageVersion is: " + serverPackageVersion);
if (isBoardNameAvailableForMachine(siteCode, machineName, request)) return super.handleRequestInternal(request, response);
return createErrorModelAndView(errorMsg);
}
private boolean isBoardNameAvailableForMachine(String siteCode, String machineName, HttpServletRequest request) {
String result = getTrackingDao().executeCommand(siteCode, "0", buildParameterMap(request,machineName));
if (result.startsWith("<error>")){
int start = result.indexOf("<error>");
int end = result.indexOf("</error>");
errorMsg = result.substring(start + 7, end);
debug("isBoardNameAvailableForMachine: false");
return false;
}
debug("isBoardNameAvailableForMachine: true");
return true;
}
private void debug(String s) {
if (logger.isDebugEnabled()){
logger.debug(s);
}
}
}

View File

@ -0,0 +1,92 @@
package gov.va.med.edp.web.controller;
import gov.va.med.edp.vo.BigBoardDebugInfoVO;
import gov.va.med.edp.web.view.XmlView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.WebContentGenerator;
public class BigDisplayBoardController extends SiteCodeController implements InitializingBean {
private static final String MACHINE_NAME_PARAM = SiteCodeController.MACHINE_NAME_PARAM;
public static final String MACHINE_NAME_HEADER = SiteCodeController.MACHINE_NAME_HEADER;
protected static final String XML_VIEW = "xmlView";
private static Logger log = Logger.getLogger(BigDisplayBoardController.class);
public BigDisplayBoardController() {
setRequireSession(false);
setSupportedMethods(new String[]{WebContentGenerator.METHOD_POST, WebContentGenerator.METHOD_GET});
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(getSiteCodeDao(), "siteCodeDao is required");
Assert.notNull(getTrackingDao(), "trackingDao is required");
Assert.notNull(getServerPackageVersionDao(), "ServerPackageVersionDao is required");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String result = "";
//First attempt is to get the machineName from HTTP Header:EdisClientMachineName as decided
// this HTTP header is appended by the load balancer and the value of this header (the machine name)
//is parsed by the load balancer.
String machineName = parseCNFromHttpHeaders(request.getHeader(MACHINE_NAME_HEADER));
if (StringUtils.hasText(machineName)){
clearRequestAndSession(request);
} else {
machineName = getMachineNameFromUserPrincipalOrSessionOrRequest(request);
}
debug("Machine name obtained from certificate/HTTP Header/request/session:" + machineName);
String siteCode = getSiteCodeDao().getSiteCode(machineName);
if (!StringUtils.hasText(siteCode)){
String errorMsg = "No site code was found for the machine name: " + machineName;
return createErrorModelAndView(errorMsg);
}
result = getTrackingDao().executeCommand(siteCode, "0", buildParameterMap(request,machineName));
if (isInitCommand(request))
result = appendSiteAndVistaLinkConnectionInfo(result, request, siteCode, machineName);
return createModelAndView(result, siteCode, machineName);
}
private void clearRequestAndSession(HttpServletRequest request) {
request.getSession().setAttribute(MACHINE_NAME_PARAM, null);
request.setAttribute(MACHINE_NAME_PARAM, null);
}
private boolean isInitCommand(HttpServletRequest request) {
if (request.getParameter("command").equals("initDisplayBoard")) return true;
return false;
}
protected ModelAndView createModelAndView(String result, String siteCode, String machineName) {
return new ModelAndView(XML_VIEW, XmlView.XML_FRAGMENT, result);
}
private String appendSiteAndVistaLinkConnectionInfo(String result,HttpServletRequest request, String siteCode, String machineName) {
BigBoardDebugInfoVO vistalinkInfo = serverPackageVersionDao.getVistaLinkConnectionInfo(siteCode);
vistalinkInfo.setSiteId(siteCode);
vistalinkInfo.setMachineName(machineName);
result = result.concat(vistalinkInfo.toString());
return result;
}
private void debug(String s) {
if (log.isDebugEnabled()){
log.debug(s);
}
}
}

View File

@ -0,0 +1,122 @@
package gov.va.med.edp.web.controller;
import gov.va.med.edp.web.servlet.listener.TimeOutIntegrationSessionAttributeListener;
import java.util.Random;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import org.springframework.dao.DataAccessException;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
/**
* TODO: document PackageClientVersionSynchronizationController
*/
public class ClientVersionSynchronizationController extends SiteCodeController implements InitializingBean {
public static final String DEFAULT_INCOMPATIBILITY_VIEW = "incompatibilityView";
private String clientArtifactId;
private String viewName;
private String incompatibilityViewName = DEFAULT_INCOMPATIBILITY_VIEW;
private Random random = new Random();
public ClientVersionSynchronizationController() {
setRequireSession(true);
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(clientArtifactId, "clientArtifactId must not be null");
Assert.notNull(viewName, "viewName must not be null");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String serverPackageVersion = (String) request.getSession().getAttribute(SessionConstants.SERVER_PACKAGE_VERSION_KEY);
if (serverPackageVersion == null) {
DataAccessException error = (DataAccessException) request.getSession().getAttribute(SessionConstants.SERVER_ERROR_KEY);
if (error != null) {
throw error;
} else {
throw new IllegalStateException("Didn't find server package version number or an error explaining its absence in session. Is the " +
TimeOutIntegrationSessionAttributeListener.class.getName() + " session listener configured correctly?");
}
}
String swfID = generateAndRememberSwfId(request);
return createModelAndView(serverPackageVersion, swfID);
}
// generate a swf id and add to list for this session
private String generateAndRememberSwfId(HttpServletRequest request) {
String swfID = generateUid();
String ids = (String) request.getSession().getAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY);
Set idSet = StringUtils.commaDelimitedListToSet(ids);
while (idSet.contains(swfID)) {
swfID = generateUid();
}
idSet.add(swfID);
ids = StringUtils.collectionToCommaDelimitedString(idSet);
request.getSession().setAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY, ids);
return swfID;
}
protected ModelAndView createModelAndView(String serverPackageVersion, String swfID) {
ModelAndView mav = new ModelAndView(isCompatible(serverPackageVersion) ? getViewName() : getIncompatibilityViewName());
mav.addObject("swfID", swfID);
mav.addObject("serverPackageVersion", serverPackageVersion);
mav.addObject("clientVersion", serverPackageVersion); // TODO: remove this from flashVars after Flex 3 migration (use resource bundle inside SWF)
mav.addObject("clientArtifactId", getClientArtifactId());
mav.addObject("clientFinalName", getClientFinalName(serverPackageVersion));
return mav;
}
private String generateUid() {
return Integer.toString(Math.abs(random.nextInt()));
}
private boolean isCompatible(String serverPackageVersion) {
Resource r = getWebApplicationContext().getResource(getClientFileName(serverPackageVersion));
return r.exists();
}
private String getClientFinalName(String serverPackageVersion) {
return getClientArtifactId() + "-" + serverPackageVersion;
}
private String getClientFileName(String serverPackageVersion) {
return getClientFinalName(serverPackageVersion) + ".swf";
}
public String getClientArtifactId() {
return clientArtifactId;
}
public void setClientArtifactId(String clientArtifactId) {
this.clientArtifactId = clientArtifactId;
}
public String getViewName() {
return viewName;
}
public void setViewName(String viewName) {
this.viewName = viewName;
}
public String getIncompatibilityViewName() {
return incompatibilityViewName;
}
public void setIncompatibilityViewName(String incompatibilityViewName) {
this.incompatibilityViewName = incompatibilityViewName;
}
}

View File

@ -0,0 +1,19 @@
package gov.va.med.edp.web.controller;
import gov.va.med.edp.web.view.CsvView;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.WebContentGenerator;
public class ExportReportController extends TrackingController {
private static final String CSV_VIEW = "csvView";
public ExportReportController() {
super();
setSupportedMethods(new String[]{WebContentGenerator.METHOD_POST, WebContentGenerator.METHOD_GET});
}
protected ModelAndView createModelAndView(String result) {
return new ModelAndView(CSV_VIEW, CsvView.CSV_MODEL, result);
}
}

View File

@ -0,0 +1,60 @@
package gov.va.med.edp.web.controller;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.util.StringUtils;
import org.springframework.util.Assert;
import org.springframework.beans.factory.InitializingBean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Set;
/**
* Controller for handling logout.
* <p/>
* Only logic for logout other than invalidating the session is remove the swfID from the list of recognized ones
* for this session. If the count drops to 0, or the swfID is not supplied, then invalidate the session.
*/
public class LogoutController extends AbstractController implements InitializingBean {
public static final String DEFAULT_VIEW_NAME = "logout";
private String viewName = DEFAULT_VIEW_NAME;
public void afterPropertiesSet() throws Exception {
Assert.notNull(viewName, "viewName must not be null");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String swfID = request.getParameter("swfID");
if (!StringUtils.hasLength(swfID)) {
request.getSession().invalidate();
} else {
String ids = (String) request.getSession().getAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY);
Set idSet = StringUtils.commaDelimitedListToSet(ids);
if (idSet.isEmpty()) {
request.getSession().invalidate();
} else {
idSet.remove(swfID);
if (idSet.isEmpty()) {
request.getSession().setAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY, null);
request.getSession().invalidate();
} else {
ids = StringUtils.collectionToCommaDelimitedString(idSet);
request.getSession().setAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY, ids);
}
}
}
return new ModelAndView(getViewName());
}
public String getViewName() {
return viewName;
}
public void setViewName(String viewName) {
this.viewName = viewName;
}
}

View File

@ -0,0 +1,4 @@
package gov.va.med.edp.web.controller;
public class NoUserInfoInSessionException extends Exception {
}

View File

@ -0,0 +1,11 @@
package gov.va.med.edp.web.controller;
/**
* Constants used as keys for session attributes.
*/
public class SessionConstants {
public static final String SERVER_PACKAGE_VERSION_KEY = "edis.server.package.version";
public static final String SERVER_ERROR_KEY = "edis.server.error";
public static final String RECOGNIZED_SWF_IDS_KEY = "edis.swf.ids";
}

View File

@ -0,0 +1,132 @@
package gov.va.med.edp.web.controller;
import gov.va.med.edp.dao.ServerPackageVersionDao;
import gov.va.med.edp.dao.SiteCodeLookUpDao;
import gov.va.med.edp.dao.TrackingDao;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public abstract class SiteCodeController extends AbstractController {
public static final String MACHINE_NAME_PARAM = "machineName";
public static final String SITE_CODE_PARAM = "siteCode";
public static final String MACHINE_NAME_HEADER = "EdisClientMachineName";
private SiteCodeLookUpDao siteCodeDao;
private TrackingDao trackingDao;
private String errorViewName;
protected ServerPackageVersionDao serverPackageVersionDao;
private static Logger log = Logger.getLogger(SiteCodeController.class);
protected ModelAndView createErrorModelAndView(String errorMessage) {
ModelAndView mav = new ModelAndView(getErrorViewName());
mav.addObject("errorMessage", errorMessage);
return mav;
}
public SiteCodeLookUpDao getSiteCodeDao() {
return siteCodeDao;
}
public void setSiteCodeDao(SiteCodeLookUpDao siteCodeDao) {
this.siteCodeDao = siteCodeDao;
}
public String getErrorViewName() {
return errorViewName;
}
public void setErrorViewName(String errorViewName) {
this.errorViewName = errorViewName;
}
protected Map buildParameterMap(HttpServletRequest request, String machineName) {
Map params = new HashMap();
Enumeration e = request.getParameterNames();
while (e.hasMoreElements()) {
String paramName = (String) e.nextElement();
params.put(paramName, request.getParameter(paramName));
}
//add the machine name that needs to be passed into M here
params.put("machine", machineName.toUpperCase());
debug("Parameters:" + params.toString());
return params;
}
protected String parseCNFromHttpHeaders(String machineName){
if (StringUtils.hasText(machineName) && machineName.startsWith("CN=")){
return machineName.substring(3);
}
debug("Parsed Machine Name from Http Header is:" + machineName);
return machineName;
}
public TrackingDao getTrackingDao() {
return trackingDao;
}
public void setTrackingDao(TrackingDao trackingDao) {
this.trackingDao = trackingDao;
}
private void debug(String s) {
if (logger.isDebugEnabled()){
logger.debug(s);
}
}
protected String getMachineNameFromUserPrincipalOrSessionOrRequest(HttpServletRequest request) throws UnrecognizedClientException {
String machineName = "";
//first try user principal. This is for situations where we don't have a load balancer in the mix
// this is where the client is talking directly to a weblogic server using 2-way ssl..
if (request.getUserPrincipal() != null){
machineName = request.getUserPrincipal().getName();
debug("Machine name retrieved from user principal is:" + machineName);
}
//then try request
if (!StringUtils.hasText(machineName)){
machineName = request.getParameter(MACHINE_NAME_PARAM);
debug("Machine name retrieved from HTTP Request is:" + machineName);
}
//then try the session..
if (!StringUtils.hasText(machineName)){
machineName =(String)request.getSession().getAttribute(MACHINE_NAME_PARAM);
debug("Machine name retrieved from HTTP Session is:" + machineName);
}
if (StringUtils.hasText(machineName)){
return machineName;
} else {
throw new UnrecognizedClientException(UnrecognizedClientException.NO_MACHINE_NAME_PARAM_MESSAGE, MACHINE_NAME_PARAM);
}
}
public void setServerPackageVersionDao(ServerPackageVersionDao serverPackageVersionDao) {
this.serverPackageVersionDao = serverPackageVersionDao;
}
public ServerPackageVersionDao getServerPackageVersionDao() {
return this.serverPackageVersionDao;
}
}

View File

@ -0,0 +1,79 @@
package gov.va.med.edp.web.controller;
import java.util.Enumeration;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/**
* TODO: document PackageClientVersionSynchronizationController
*/
public class TestController extends AbstractController implements InitializingBean {
public static final String EDIS_MACHINE_NAME_HEADER = "EdisClientMachineName";
private String viewName;
private static Logger logger = Logger.getLogger(TestController.class);
public TestController() {
setRequireSession(true);
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(viewName, "viewName must not be null");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
if (logger.isDebugEnabled()){
logger.debug("Inside handleRequestInternal() method. The view name is:" + getViewName());
logger.debug("The value for the HTTP Header '" + EDIS_MACHINE_NAME_HEADER + "' is: " + getClientMachineName(request));
}
ModelAndView mav = new ModelAndView(getViewName());
mav.addObject(EDIS_MACHINE_NAME_HEADER, getClientMachineName(request));
mav.addObject("HttpHeaders", getAllHttpHeaders(request));
return mav;
}
private Object getAllHttpHeaders(HttpServletRequest request) {
String headers = "";
Enumeration headersEnum = request.getHeaderNames();
while (headersEnum.hasMoreElements()) {
String headerName = (String) headersEnum.nextElement();
headers = headers + headerName + "=" + request.getHeader(headerName) + "<br/>";
}
return headers;
}
private String getClientMachineName(HttpServletRequest request) {
return parseMachineName(request.getHeader(EDIS_MACHINE_NAME_HEADER));
}
private String parseMachineName(String machineName){
if (StringUtils.hasText(machineName) && machineName.startsWith("CN=")){
String name = machineName.substring(3);
return name;
}
return machineName;
}
public String getViewName() {
return viewName;
}
public void setViewName(String viewName) {
this.viewName = viewName;
}
}

View File

@ -0,0 +1,96 @@
package gov.va.med.edp.web.controller;
import gov.va.med.authentication.kernel.LoginUserInfoVO;
import gov.va.med.edp.dao.ServerPackageVersionDao;
import gov.va.med.edp.dao.TrackingDao;
import gov.va.med.edp.vo.BigBoardDebugInfoVO;
import gov.va.med.edp.web.view.XmlView;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.web.servlet.support.WebContentGenerator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import java.util.Set;
public class TrackingController extends AbstractController implements InitializingBean {
private TrackingDao trackingDao;
private ServerPackageVersionDao serverPackageVersionDao;
protected static final String XML_VIEW = "xmlView";
public TrackingController() {
setRequireSession(true);
setSupportedMethods(new String[]{WebContentGenerator.METHOD_POST});
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(trackingDao, "trackingDao is required");
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
validateSwfID(request);
LoginUserInfoVO userInfo = getUserInfo(request);
String result = trackingDao.executeCommand(userInfo.getLoginStationNumber(), userInfo.getUserDuz(), buildParameterMap(request));
if (isInitDisplayBoardCommand(request))
result = appendSiteAndVistaLinkConnectionInfo(result, request);
return createModelAndView(result);
}
private void validateSwfID(HttpServletRequest request) throws UnrecognizedClientException {
String swfID = request.getParameter("swfID");
if (!StringUtils.hasLength(swfID)) return;
String ids = (String) request.getSession().getAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY);
Set idSet = StringUtils.commaDelimitedListToSet(ids);
if (idSet.isEmpty()) throw new UnrecognizedClientException(UnrecognizedClientException.UNRECOGNIZED_CLIENT_MESSAGE, swfID);
if (!idSet.contains(swfID)) throw new UnrecognizedClientException(UnrecognizedClientException.UNRECOGNIZED_CLIENT_MESSAGE, swfID);
}
public void setTrackingDao(TrackingDao trackingDao) {
this.trackingDao = trackingDao;
}
public void setServerPackageVersionDao(ServerPackageVersionDao serverPackageVersionDao) {
this.serverPackageVersionDao = serverPackageVersionDao;
}
protected LoginUserInfoVO getUserInfo(HttpServletRequest request) throws NoUserInfoInSessionException {
LoginUserInfoVO userInfo = (LoginUserInfoVO) request.getSession().getAttribute(LoginUserInfoVO.SESSION_KEY);
if (userInfo == null) throw new NoUserInfoInSessionException();
return userInfo;
}
protected ModelAndView createModelAndView(String result) {
return new ModelAndView(XML_VIEW, XmlView.XML_FRAGMENT, result);
}
private boolean isInitDisplayBoardCommand(HttpServletRequest request) {
if (request.getParameter("command").equals("initDisplayBoard")) return true;
return false;
}
private String appendSiteAndVistaLinkConnectionInfo(String result,HttpServletRequest request) throws Exception{
String stnNumber = getUserInfo(request).getLoginStationNumber();
BigBoardDebugInfoVO vistalinkInfo = serverPackageVersionDao.getVistaLinkConnectionInfo(stnNumber);
vistalinkInfo.setSiteId(stnNumber);
result = result.concat(vistalinkInfo.toString());
return result;
}
protected Map buildParameterMap(HttpServletRequest request) {
Map params = new HashMap();
Enumeration e = request.getParameterNames();
while (e.hasMoreElements()) {
String paramName = (String) e.nextElement();
params.put(paramName, request.getParameter(paramName));
}
return params;
}
}

View File

@ -0,0 +1,14 @@
package gov.va.med.edp.web.controller;
/**
* TODO: document UnrecognizedClientException
*/
public class UnrecognizedClientException extends Exception {
public static final String UNRECOGNIZED_CLIENT_MESSAGE = "request from an unrecognized client with swfID=";
public static final String NO_MACHINE_NAME_PARAM_MESSAGE = "Could not find machine name in the HTTPHeader " + SiteCodeController.MACHINE_NAME_HEADER + " nor found the machine name in user principal or request parameter with name";
public UnrecognizedClientException(String message, String swfID) {
super(message + "'" + swfID + "'");
}
}

View File

@ -0,0 +1,14 @@
package gov.va.med.edp.web.handler;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
public class ExceptionResolver extends SimpleMappingExceptionResolver{
protected ModelAndView getModelAndView(String viewName, Exception ex, HttpServletRequest request) {
ModelAndView mav = super.getModelAndView(viewName, ex, request);
mav.addObject("resource", request.getRequestURI());
return mav;
}
}

View File

@ -0,0 +1,50 @@
package gov.va.med.edp.web.servlet.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
/**
* Servlet filter that sets HTTP Response Headers based on initialization parameters.
* <p/>
* Example usage in web.xml of servlet application:
* <code>
* <filter>
* <filter-name>responseHeaderFilter</filter-name>
* <filter-class>gov.va.med.edp.web.servlet.filter.ResponseHeaderFilter</filter-class>
* <init-param>
* <param-name>Cache-Control</param-name>
* <param-value>max-age=3600</param-value>
* </init-param>
* </filter>
* ...
* <filter-mapping>
* <filter-name>responseHeaderFilter</filter-name>
* <url-pattern>/logo.png</url-pattern>
* </filter-mapping>
* </code>
*/
public class ResponseHeaderFilter implements Filter {
FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
// set the provided HTTP response parameters
for (Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements();) {
String headerName = (String) e.nextElement();
response.addHeader(headerName, filterConfig.getInitParameter(headerName));
}
filterChain.doFilter(req, response);
}
public void destroy() {
this.filterConfig = null;
}
}

View File

@ -0,0 +1,63 @@
package gov.va.med.edp.web.servlet.listener;
import gov.va.med.authentication.kernel.LoginUserInfoVO;
import gov.va.med.edp.dao.SessionDao;
import gov.va.med.edp.vo.SessionVO;
import gov.va.med.edp.web.controller.SessionConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.dao.DataAccessException;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class TimeOutIntegrationSessionAttributeListener implements HttpSessionAttributeListener {
private static final String SESSION_DAO_BEAN_NAME = "sessionDao";
private static final Log log = LogFactory.getLog(TimeOutIntegrationSessionAttributeListener.class);
public void attributeAdded(HttpSessionBindingEvent event) {
if (!event.getName().equals(LoginUserInfoVO.SESSION_KEY)) return;
setTimeOut(event);
}
public void attributeRemoved(HttpSessionBindingEvent event) {
if (!event.getName().equals(LoginUserInfoVO.SESSION_KEY)) return;
}
public void attributeReplaced(HttpSessionBindingEvent event) {
if (!event.getName().equals(LoginUserInfoVO.SESSION_KEY)) return;
setTimeOut(event);
}
private void setTimeOut(HttpSessionBindingEvent event) {
LoginUserInfoVO userInfo = (LoginUserInfoVO) event.getValue();
try {
WebApplicationContext ac = getApplicationContext(event);
SessionDao dao = (SessionDao) ac.getBean(SESSION_DAO_BEAN_NAME, SessionDao.class);
SessionVO sessionInfo = dao.getSessionInfo(userInfo.getLoginStationNumber(), userInfo.getUserDuz());
String serverPackageVersion = sessionInfo.getServerPackageVersion();
if (log.isDebugEnabled()) log.debug("set server package version to '" + serverPackageVersion + "'");
event.getSession().setAttribute(SessionConstants.SERVER_PACKAGE_VERSION_KEY, serverPackageVersion);
int timeOut = sessionInfo.getMaxInactiveInterval();
event.getSession().setMaxInactiveInterval(timeOut);
if (log.isDebugEnabled()) log.debug("set timeout for user " + userInfo.getUserDuz() + " to " + timeOut + " seconds.");
} catch (DataAccessException e) {
log.error("unable to fetch session info", e);
event.getSession().setAttribute(SessionConstants.SERVER_ERROR_KEY, e);
}
}
private WebApplicationContext getApplicationContext(HttpSessionBindingEvent event) throws IllegalStateException {
return WebApplicationContextUtils.getRequiredWebApplicationContext(event.getSession().getServletContext());
}
}

View File

@ -0,0 +1,23 @@
package gov.va.med.edp.web.view;
import org.springframework.web.servlet.view.AbstractView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class CsvView extends AbstractView {
public static final String CSV_MODEL = "csvModel";
private static final String CONTENT_TYPE = "application/vnd.ms-excel";
public CsvView() {
setContentType(CONTENT_TYPE);
}
protected void renderMergedOutputModel(Map map, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpCacheControl.addNoCacheHeaders(response);
response.getWriter().print(map.get(CSV_MODEL));
response.getWriter().close();
}
}

View File

@ -0,0 +1,18 @@
package gov.va.med.edp.web.view;
import org.springframework.web.servlet.support.WebContentGenerator;
import javax.servlet.http.HttpServletResponse;
/**
* TODO: document HttpCacheControl
*/
public class HttpCacheControl {
static final java.lang.String HEADER_CACHE_CONTROL = "Cache-Control";
static final java.lang.String HEADER_EXPIRES = "Expires";
public static void addNoCacheHeaders(HttpServletResponse response) {
response.setHeader(HEADER_CACHE_CONTROL, "no-store, must-revalidate");
response.setHeader(HEADER_EXPIRES, "Thu, 01 Jan 1970 01:00:00 GMT");
}
}

View File

@ -0,0 +1,25 @@
package gov.va.med.edp.web.view;
import org.springframework.web.servlet.view.AbstractView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class XmlView extends AbstractView {
public static final String XML_FRAGMENT = "xmlFragment";
public XmlView() {
setContentType("text/xml;charset=utf-8");
}
protected void renderMergedOutputModel(Map map, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpCacheControl.addNoCacheHeaders(response);
response.getWriter().println("<?xml version='1.0' encoding='UTF-8'?>");
response.getWriter().println("<results>");
response.getWriter().println(map.get(XML_FRAGMENT));
response.getWriter().println("</results>");
response.getWriter().close();
}
}

View File

@ -0,0 +1,233 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-parent</artifactId>
<version>1.0-T29-SNAPSHOT</version>
<relativePath>../tracking-parent</relativePath>
</parent>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-main</artifactId>
<packaging>war</packaging>
<name>EDIS Tracking Server Application</name>
<version>1.0-T29-SNAPSHOT</version>
<description>Emergency Department Integration Software - Tracking Server Application</description>
<dependencies>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-ui-main</artifactId>
<version>${project.version}</version>
<type>swf</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-ui-bigboard</artifactId>
<version>${project.version}</version>
<type>swf</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>gov.va.med.edp</groupId>
<artifactId>edis-tracking-server-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>gov.va.med.authentication</groupId>
<artifactId>kaajee</artifactId>
<version>1.0.1.002</version>
</dependency>
<dependency>
<groupId>gov.va.med.term</groupId>
<artifactId>vha-stddata-client</artifactId>
<version>${vha.stddata.version}</version>
</dependency>
<dependency>
<groupId>gov.va.med.term</groupId>
<artifactId>vha-stddata-basic</artifactId>
<version>${vha.stddata.version}</version>
</dependency>
<dependency>
<groupId>com.intersystems</groupId>
<artifactId>cache-db</artifactId>
<version>5.2</version>
<classifier>jdk14</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>weblogic</groupId>
<artifactId>weblogic</artifactId>
<version>8.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${edis.tracking.trackingContextRoot}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<includes>
<include>kaajeeConfig.xml</include>
<include>weblogic.xml</include>
</includes>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>${edis.tracking.build.swf.directory}</directory>
<targetPath>/</targetPath>
<filtering>false</filtering>
<includes>
<include>*.swf</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<tstamp>
<format property="timestamp" pattern="yyyy/MM/dd HH:mm:ss z"/>
</tstamp>
<replaceregexp byline="true">
<regexp pattern="app.buildtime=BUILD_TIME_PLACEHOLDER"/>
<substitution expression="app.buildtime=${timestamp}"/>
<fileset dir="target" includes="**/*.properties"/>
</replaceregexp>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.6.5</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>include-latest-client-version</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeTypes>swf</includeTypes>
<outputDirectory>${edis.tracking.build.swf.directory}</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
<execution>
<id>include-backwards-compatible-client-versions</id>
<phase>generate-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>edis-tracking-ui-main</artifactId>
<version>1.0-T28</version>
<type>swf</type>
</artifactItem>
</artifactItems>
<outputDirectory>${edis.tracking.build.swf.directory}</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp-dev/WEB-INF</directory>
<includes>
<include>kaajeeConfig.xml</include>
</includes>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<includes>
<include>weblogic.xml</include>
</includes>
<excludes>
<exclude>kaajeeConfig.xml</exclude>
</excludes>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
<resource>
<directory>${edis.tracking.build.swf.directory}</directory>
<targetPath>/</targetPath>
<filtering>false</filtering>
<includes>
<include>*.swf</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<properties>
<edis.tracking.build.swf.directory>${project.build.directory}/swf</edis.tracking.build.swf.directory>
</properties>
</project>

View File

@ -0,0 +1,9 @@
# Generated by genAppProperties.xsl at 2007-09-06 02:48:11
#
# Application=med.term.access
# Environment=readonly
# Database=hsqldb
#
gov.va.med.term.access.util.ImplementorRegistry/gov.va.med.term.access.TableManager$Factory=gov.va.med.term.access.readonly.factory.db.TableManagerFactory
gov.va.med.term.access.util.ImplementorRegistry/gov.va.med.term.access.*$Factory=gov.va.med.term.access.readonly.factory.cache.*Factory
gov.va.med.term.access.util.ImplementorRegistry/gov.va.med.term.access.readonly.Readonly*$Factory=gov.va.med.term.access.readonly.factory.db.*Factory

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="trackingDao" class="gov.va.med.edp.dao.rpc.VistaLinkTrackingDao"/>
<bean id="bigBoardDao" class="gov.va.med.edp.dao.rpc.VistaLinkBigBoardDao"/>
<bean id="sessionDao" class="gov.va.med.edp.dao.rpc.VistaLinkSessionDao"/>
<bean id="serverPackageVersionDao" class="gov.va.med.edp.dao.rpc.VistaLinkServerPackageVersionDao"/>
</beans>

View File

@ -0,0 +1,9 @@
app.name=Emergency Department Integration Software - Tracking Application
app.version=${project.version}
app.buildtime=BUILD_TIME_PLACEHOLDER
copyright.year=2008
copyright.organization.url=http://www.va.gov
copyright.organization=Department of Veterans Affairs
help.contextRoot=${edis.tracking.helpContextRoot}
logged.out=You have been logged out.
login.again=Log in again.

View File

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8"?>
<kaajee-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="kaajeeConfig.xsd">
<!-- host application name, used for login page display and logging -->
<host-application-name>EDIS Tracking Board</host-application-name>
<!-- put each station number for KAAJEE login here -->
<login-station-numbers>
<station-number>402</station-number>
<station-number>405</station-number>
<station-number>423</station-number>
<station-number>433</station-number>
<station-number>436</station-number>
<station-number>437</station-number>
<station-number>438</station-number>
<station-number>442</station-number>
<station-number>447</station-number>
<station-number>454</station-number>
<station-number>459</station-number>
<station-number>460</station-number> <station-number>463</station-number>
<station-number>500</station-number>
<station-number>501</station-number>
<station-number>502</station-number>
<station-number>503</station-number>
<station-number>504</station-number>
<station-number>506</station-number>
<station-number>508</station-number>
<station-number>509</station-number>
<station-number>509A0</station-number>
<station-number>512</station-number>
<station-number>512A5</station-number>
<station-number>515</station-number>
<station-number>516</station-number>
<station-number>517</station-number>
<station-number>518</station-number>
<station-number>519</station-number>
<station-number>520</station-number>
<station-number>520A0</station-number>
<station-number>521</station-number>
<station-number>523</station-number>
<station-number>523A4</station-number>
<station-number>523A5</station-number>
<station-number>524</station-number>
<station-number>526</station-number>
<station-number>528</station-number>
<station-number>528A4</station-number>
<station-number>528A5</station-number>
<station-number>528A6</station-number>
<station-number>528A7</station-number>
<station-number>528A8</station-number>
<station-number>529</station-number>
<station-number>531</station-number>
<station-number>534</station-number>
<station-number>537</station-number>
<station-number>538</station-number>
<station-number>539</station-number>
<station-number>540</station-number>
<station-number>541</station-number>
<station-number>542</station-number>
<station-number>544</station-number>
<station-number>546</station-number>
<station-number>548</station-number>
<station-number>549</station-number>
<station-number>549A4</station-number>
<station-number>550</station-number>
<station-number>552</station-number>
<station-number>553</station-number>
<station-number>554</station-number>
<station-number>556</station-number>
<station-number>557</station-number>
<station-number>558</station-number>
<station-number>561</station-number>
<station-number>561A4</station-number>
<station-number>562</station-number>
<station-number>564</station-number>
<station-number>565</station-number>
<station-number>568</station-number>
<station-number>568A4</station-number>
<station-number>570</station-number>
<station-number>573</station-number>
<station-number>573A4</station-number>
<station-number>575</station-number>
<station-number>578</station-number>
<station-number>580</station-number>
<station-number>581</station-number>
<station-number>583</station-number>
<station-number>585</station-number>
<station-number>586</station-number>
<station-number>589</station-number>
<station-number>589A4</station-number>
<station-number>589A5</station-number>
<station-number>589A6</station-number>
<station-number>589A7</station-number>
<station-number>590</station-number>
<station-number>593</station-number>
<station-number>595</station-number>
<station-number>596</station-number>
<station-number>596A4</station-number>
<station-number>598</station-number>
<station-number>600</station-number>
<station-number>603</station-number>
<station-number>605</station-number>
<station-number>607</station-number>
<station-number>608</station-number>
<station-number>610</station-number>
<station-number>610A4</station-number>
<station-number>612</station-number>
<station-number>612A4</station-number>
<station-number>613</station-number>
<station-number>614</station-number>
<station-number>618</station-number>
<station-number>619</station-number>
<station-number>619A4</station-number>
<station-number>620</station-number>
<station-number>620A4</station-number>
<station-number>621</station-number>
<station-number>623</station-number>
<station-number>626</station-number>
<station-number>626A4</station-number>
<station-number>629</station-number>
<station-number>630</station-number>
<station-number>630A4</station-number>
<station-number>630A5</station-number>
<station-number>631</station-number>
<station-number>632</station-number>
<station-number>635</station-number>
<station-number>636</station-number>
<station-number>636A4</station-number>
<station-number>636A6</station-number>
<station-number>636A7</station-number>
<station-number>636A8</station-number>
<station-number>637</station-number>
<station-number>640</station-number>
<station-number>640A4</station-number>
<station-number>642</station-number>
<station-number>644</station-number>
<station-number>646</station-number>
<station-number>646A4</station-number>
<station-number>646A5</station-number>
<station-number>648</station-number>
<station-number>648A4</station-number>
<station-number>649</station-number>
<station-number>650</station-number>
<station-number>652</station-number>
<station-number>653</station-number>
<station-number>654</station-number>
<station-number>655</station-number>
<station-number>656</station-number>
<station-number>657</station-number>
<station-number>657A0</station-number>
<station-number>657A4</station-number>
<station-number>657A5</station-number>
<station-number>658</station-number>
<station-number>659</station-number>
<station-number>660</station-number>
<station-number>662</station-number>
<station-number>663</station-number>
<station-number>663A4</station-number>
<station-number>664</station-number>
<station-number>666</station-number>
<station-number>667</station-number>
<station-number>668</station-number>
<station-number>671</station-number>
<station-number>671A4</station-number>
<station-number>672</station-number>
<station-number>673</station-number>
<station-number>674</station-number>
<station-number>674A4</station-number>
<station-number>674A5</station-number>
<station-number>675</station-number>
<station-number>676</station-number>
<station-number>678</station-number>
<station-number>679</station-number>
<station-number>687</station-number>
<station-number>688</station-number>
<station-number>689</station-number>
<station-number>689A4</station-number>
<station-number>691</station-number>
<station-number>691A4</station-number>
<station-number>692</station-number>
<station-number>693</station-number>
<station-number>695</station-number>
<station-number>757</station-number>
<station-number>982</station-number>
</login-station-numbers>
<!-- defined application context root Name -->
<context-root-name>${edis.tracking.trackingContextRoot}</context-root-name>
<!-- put the system announcement here. Use ~ for a line break, or ~ ~ for a
paragraph break. -->
<system-announcement>
U.S. Government Computer System
~ ~
U. S. government systems are intended to be used by authorized government network users for viewing and
retrieving information only, except as otherwise explicitly authorized for official business and limited
personal use in accordance with policy. Information from these systems resides on and transmits through computer
systems and networks funded by the government. All access or use constitutes understanding and acceptance that
there is no reasonable expectation of privacy in the use of Government networks or systems.
~ ~
The data and documents on this system include Federal records that contain sensitive information protected by
various Federal statutes, including the Privacy Act, 5 U.S.C. Section 552a, and veterans' records
confidentiality statutes such as 38 U.S.C. Sections 5701 and 7332. Access to the data and records is on a
need-to-know basis only.
~ ~
All access or use of this system constitutes user understanding and acceptance of these terms and constitutes
unconditional consent to review and action including (but not limited to) monitoring, recording, copying,
auditing, inspecting, investigating, restricting access, blocking, tracking, disclosing to authorized personnel,
or any other authorized actions by all authorized government and law enforcement personnel.
~ ~
Unauthorized user attempts or acts to (1) access, upload, change, or delete information on this system, (2)
modify this system, (3) deny access to this system, (4) accrue resources for unauthorized use or (5) otherwise
misuse this system are strictly prohibited. Such attempts or acts are subject to action that may result in
criminal, civil, or administrative penalties.
</system-announcement>
<!-- set to true to return a user's "New Person" division multiple as part
of login -->
<user-new-person-divisions retrieve="true"/>
<!-- set to true to return all children divisions of the login division's
computing facility, as part of login -->
<computing-facility-divisions retrieve="true"/>
<cactus-insecure-mode enabled="false"/>
<!-- BEAWeblogic Server SSL listen port , used for login page to implement SSL -->
<!-- <ssl-listen-port-number>7002</ssl-listen-port-number> -->
</kaajee-config>

View File

@ -0,0 +1,276 @@
// Flash Player Version Detection - Rev 1.6
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
var version;
var axo;
var e;
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
try {
// version will be set for 7.X or greater players
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version = axo.GetVariable("$version");
} catch (e) {
}
if (!version)
{
try {
// version will be set for 6.X players only
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
// installed player is some revision of 6.0
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
// so we have to be careful.
// default to the first public version
version = "WIN 6,0,21,0";
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
axo.AllowScriptAccess = "always";
// safe to call for 6.0r47 or greater
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 4.X or 5.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 3.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = "WIN 3,0,18,0";
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 2.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
version = "WIN 2,0,0,11";
} catch (e) {
version = -1;
}
}
return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
// NS/Opera version >= 3 check for Flash plugin in plugin array
var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
var descArray = flashDescription.split(" ");
var tempArrayMajor = descArray[2].split(".");
var versionMajor = tempArrayMajor[0];
var versionMinor = tempArrayMajor[1];
var versionRevision = descArray[3];
if (versionRevision == "") {
versionRevision = descArray[4];
}
if (versionRevision[0] == "d") {
versionRevision = versionRevision.substring(1);
} else if (versionRevision[0] == "r") {
versionRevision = versionRevision.substring(1);
if (versionRevision.indexOf("d") > 0) {
versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
}
}
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
}
}
// MSN/WebTV 2.6 supports Flash 4
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
// WebTV 2.5 supports Flash 3
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
// older WebTV supports Flash 2
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
else if ( isIE && isWin && !isOpera ) {
flashVer = ControlVersion();
}
return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
versionStr = GetSwfVer();
if (versionStr == -1 ) {
return false;
} else if (versionStr != 0) {
if(isIE && isWin && !isOpera) {
// Given "WIN 2,0,0,11"
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
tempString = tempArray[1]; // "2,0,0,11"
versionArray = tempString.split(","); // ['2', '0', '0', '11']
} else {
versionArray = versionStr.split(".");
}
var versionMajor = versionArray[0];
var versionMinor = versionArray[1];
var versionRevision = versionArray[2];
// is the major.revision >= requested major.revision AND the minor version >= requested minor
if (versionMajor > parseFloat(reqMajorVer)) {
return true;
} else if (versionMajor == parseFloat(reqMajorVer)) {
if (versionMinor > parseFloat(reqMinorVer))
return true;
else if (versionMinor == parseFloat(reqMinorVer)) {
if (versionRevision >= parseFloat(reqRevision))
return true;
}
}
return false;
}
}
function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?');
else
return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs)
{
var str = '';
if (isIE && isWin && !isOpera)
{
str += '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '</object>';
} else {
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += '> </embed>';
}
document.write(str);
}
function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();
switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "id":
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}

View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="exceptionHandler" class="gov.va.med.edp.web.handler.ExceptionResolver">
<property name="defaultErrorView" value="exception"/>
<property name="exceptionMappings">
<props>
<prop key="gov.va.med.edp.rpc.VistaLinkRpcPermissionDeniedException">vistaLinkPermissionDeniedView
</prop>
</props>
</property>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="strings"/>
</bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>
<bean name="/tracking.html" class="gov.va.med.edp.web.controller.ClientVersionSynchronizationController">
<property name="clientArtifactId" value="edis-tracking-ui-main"/>
<property name="viewName" value="tracking"/>
</bean>
<bean name="/board.html" class="gov.va.med.edp.web.controller.ClientVersionSynchronizationController">
<property name="clientArtifactId" value="edis-tracking-ui-bigboard"/>
<property name="viewName" value="board"/>
</bean>
<bean name="/logout.html" class="gov.va.med.edp.web.controller.LogoutController"/>
<bean name="/tracking.xml" class="gov.va.med.edp.web.controller.TrackingController">
<property name="trackingDao" ref="trackingDao"/>
</bean>
<bean name="/board.xml" class="gov.va.med.edp.web.controller.TrackingController">
<property name="trackingDao" ref="bigBoardDao"/>
<property name="serverPackageVersionDao" ref="serverPackageVersionDao"/>
</bean>
<bean name="/export.csv" class="gov.va.med.edp.web.controller.ExportReportController">
<property name="trackingDao" ref="trackingDao"/>
</bean>
</beans>

View File

@ -0,0 +1,22 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title><fmt:message key="app.name"/> - Version Incompatibility</title></head>
<body>
<%session.invalidate();%>
<h2>
<fmt:message key="app.name"/>
</h2>
<h3>Version Incompatibility</h3>
<p>This is EDIS web application version '<fmt:message key="app.version"/>'.<br/>
The EDIS server package version running in your VistA account is '<c:out value="${serverPackageVersion}"/>'.<br/>
A compatible client ('<c:out value="${clientFinalName}"/>') was not found bundled in this web application.
</p>
<p>Please ensure the version in your VistA account is compatible with version '<fmt:message key="app.version"/>' of the EDIS web application.</p>
<p><fmt:message key="logged.out"/></p>
<p><a href="<%= request.getContextPath() %>"><fmt:message key="login.again"/></a></p>
</body>
</html>

View File

@ -0,0 +1,15 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title><fmt:message key="app.name"/> Logged Out</title></head>
<body>
<h2>
<fmt:message key="app.name"/>
</h2>
<p><fmt:message key="logged.out"/></p>
<p><a href="<%= request.getContextPath() %>"><fmt:message key="login.again"/></a></p>
<p><a href="http://vhaislcfgm2.vha.med.va.gov/shadowfax/joomla/index.php?option=com_fireboard&Itemid=121&task=listcat&catid=14">EDIS Tracking Feedback Forum</a></p>
</body>
</html>

View File

@ -0,0 +1,19 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title><fmt:message key="app.name"/> - Permission Denied</title></head>
<body>
<%session.invalidate();%>
<h2>
<fmt:message key="app.name"/>
</h2>
<h3>Permission Denied</h3>
<p><c:out value="${exception.errorMessage}"/></p>
<p>Please communicate with IRM to ensure you have the appropriate permissions in this VistA account in order to use EDIS.</p>
<p><fmt:message key="logged.out"/></p>
<p><a href="<%= request.getContextPath() %>"><fmt:message key="login.again"/></a></p>
</body>
</html>

View File

@ -0,0 +1,234 @@
<?xml version="1.0" encoding="UTF-8"?>
<kaajee-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="kaajeeConfig.xsd">
<!-- host application name, used for login page display and logging -->
<host-application-name>EDIS Tracking Board</host-application-name>
<!-- put each station number for KAAJEE login here -->
<login-station-numbers>
<station-number>402</station-number>
<station-number>405</station-number>
<station-number>423</station-number>
<station-number>433</station-number>
<station-number>436</station-number>
<station-number>437</station-number>
<station-number>438</station-number>
<station-number>442</station-number>
<station-number>447</station-number>
<station-number>454</station-number>
<station-number>459</station-number>
<station-number>460</station-number> <station-number>463</station-number>
<station-number>501</station-number>
<station-number>502</station-number>
<station-number>503</station-number>
<station-number>504</station-number>
<station-number>506</station-number>
<station-number>508</station-number>
<station-number>509</station-number>
<station-number>509A0</station-number>
<station-number>512</station-number>
<station-number>512A5</station-number>
<station-number>515</station-number>
<station-number>516</station-number>
<station-number>517</station-number>
<station-number>518</station-number>
<station-number>519</station-number>
<station-number>520</station-number>
<station-number>520A0</station-number>
<station-number>521</station-number>
<station-number>523</station-number>
<station-number>523A4</station-number>
<station-number>523A5</station-number>
<station-number>524</station-number>
<station-number>526</station-number>
<station-number>528</station-number>
<station-number>528A4</station-number>
<station-number>528A5</station-number>
<station-number>528A6</station-number>
<station-number>528A7</station-number>
<station-number>528A8</station-number>
<station-number>529</station-number>
<station-number>531</station-number>
<station-number>534</station-number>
<station-number>537</station-number>
<station-number>538</station-number>
<station-number>539</station-number>
<station-number>540</station-number>
<station-number>541</station-number>
<station-number>542</station-number>
<station-number>544</station-number>
<station-number>546</station-number>
<station-number>548</station-number>
<station-number>549</station-number>
<station-number>549A4</station-number>
<station-number>550</station-number>
<station-number>552</station-number>
<station-number>553</station-number>
<station-number>554</station-number>
<station-number>556</station-number>
<station-number>557</station-number>
<station-number>558</station-number>
<station-number>561</station-number>
<station-number>561A4</station-number>
<station-number>562</station-number>
<station-number>564</station-number>
<station-number>565</station-number>
<station-number>568</station-number>
<station-number>568A4</station-number>
<station-number>570</station-number>
<station-number>573</station-number>
<station-number>573A4</station-number>
<station-number>575</station-number>
<station-number>578</station-number>
<station-number>580</station-number>
<station-number>581</station-number>
<station-number>583</station-number>
<station-number>585</station-number>
<station-number>586</station-number>
<station-number>589</station-number>
<station-number>589A4</station-number>
<station-number>589A5</station-number>
<station-number>589A6</station-number>
<station-number>589A7</station-number>
<station-number>590</station-number>
<station-number>593</station-number>
<station-number>595</station-number>
<station-number>596</station-number>
<station-number>596A4</station-number>
<station-number>598</station-number>
<station-number>600</station-number>
<station-number>603</station-number>
<station-number>605</station-number>
<station-number>607</station-number>
<station-number>608</station-number>
<station-number>610</station-number>
<station-number>610A4</station-number>
<station-number>612</station-number>
<station-number>612A4</station-number>
<station-number>613</station-number>
<station-number>614</station-number>
<station-number>618</station-number>
<station-number>619</station-number>
<station-number>619A4</station-number>
<station-number>620</station-number>
<station-number>620A4</station-number>
<station-number>621</station-number>
<station-number>623</station-number>
<station-number>626</station-number>
<station-number>626A4</station-number>
<station-number>629</station-number>
<station-number>630</station-number>
<station-number>630A4</station-number>
<station-number>630A5</station-number>
<station-number>631</station-number>
<station-number>632</station-number>
<station-number>635</station-number>
<station-number>636</station-number>
<station-number>636A4</station-number>
<station-number>636A6</station-number>
<station-number>636A7</station-number>
<station-number>636A8</station-number>
<station-number>637</station-number>
<station-number>640</station-number>
<station-number>640A4</station-number>
<station-number>642</station-number>
<station-number>644</station-number>
<station-number>646</station-number>
<station-number>646A4</station-number>
<station-number>646A5</station-number>
<station-number>648</station-number>
<station-number>648A4</station-number>
<station-number>649</station-number>
<station-number>650</station-number>
<station-number>652</station-number>
<station-number>653</station-number>
<station-number>654</station-number>
<station-number>655</station-number>
<station-number>656</station-number>
<station-number>657</station-number>
<station-number>657A0</station-number>
<station-number>657A4</station-number>
<station-number>657A5</station-number>
<station-number>658</station-number>
<station-number>659</station-number>
<station-number>660</station-number>
<station-number>662</station-number>
<station-number>663</station-number>
<station-number>663A4</station-number>
<station-number>664</station-number>
<station-number>666</station-number>
<station-number>667</station-number>
<station-number>668</station-number>
<station-number>671</station-number>
<station-number>671A4</station-number>
<station-number>672</station-number>
<station-number>673</station-number>
<station-number>674</station-number>
<station-number>674A4</station-number>
<station-number>674A5</station-number>
<station-number>675</station-number>
<station-number>676</station-number>
<station-number>678</station-number>
<station-number>679</station-number>
<station-number>687</station-number>
<station-number>688</station-number>
<station-number>689</station-number>
<station-number>689A4</station-number>
<station-number>691</station-number>
<station-number>691A4</station-number>
<station-number>692</station-number>
<station-number>693</station-number>
<station-number>695</station-number>
<station-number>757</station-number>
<station-number>982</station-number>
</login-station-numbers>
<!-- defined application context root Name -->
<context-root-name>${edis.tracking.trackingContextRoot}</context-root-name>
<!-- put the system announcement here. Use ~ for a line break, or ~ ~ for a
paragraph break. -->
<system-announcement>
U.S. Government Computer System
~ ~
U. S. government systems are intended to be used by authorized government network users for viewing and
retrieving information only, except as otherwise explicitly authorized for official business and limited
personal use in accordance with policy. Information from these systems resides on and transmits through computer
systems and networks funded by the government. All access or use constitutes understanding and acceptance that
there is no reasonable expectation of privacy in the use of Government networks or systems.
~ ~
The data and documents on this system include Federal records that contain sensitive information protected by
various Federal statutes, including the Privacy Act, 5 U.S.C. Section 552a, and veterans' records
confidentiality statutes such as 38 U.S.C. Sections 5701 and 7332. Access to the data and records is on a
need-to-know basis only.
~ ~
All access or use of this system constitutes user understanding and acceptance of these terms and constitutes
unconditional consent to review and action including (but not limited to) monitoring, recording, copying,
auditing, inspecting, investigating, restricting access, blocking, tracking, disclosing to authorized personnel,
or any other authorized actions by all authorized government and law enforcement personnel.
~ ~
Unauthorized user attempts or acts to (1) access, upload, change, or delete information on this system, (2)
modify this system, (3) deny access to this system, (4) accrue resources for unauthorized use or (5) otherwise
misuse this system are strictly prohibited. Such attempts or acts are subject to action that may result in
criminal, civil, or administrative penalties.
</system-announcement>
<!-- set to true to return a user's "New Person" division multiple as part
of login -->
<user-new-person-divisions retrieve="true"/>
<!-- set to true to return all children divisions of the login division's
computing facility, as part of login -->
<computing-facility-divisions retrieve="true"/>
<cactus-insecure-mode enabled="false"/>
<!-- BEAWeblogic Server SSL listen port , used for login page to implement SSL -->
<!-- <ssl-listen-port-number>7002</ssl-listen-port-number> -->
</kaajee-config>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) by Kyle Clarke (Department of Veterans Affairs) -->
<!--W3C Schema generated by XMLSPY v5 rel. 3 U (http://www.xmlspy.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="computing-facility-divisions">
<xs:complexType>
<xs:attribute name="retrieve" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="host-application-name" type="xs:string"/>
<xs:element name="kaajee-config">
<xs:complexType>
<xs:all>
<xs:element ref="host-application-name" minOccurs="0"/>
<xs:element ref="login-station-numbers"/>
<xs:element ref="context-root-name" minOccurs="0"/>
<xs:element ref="system-announcement" minOccurs="0"/>
<xs:element ref="user-new-person-divisions" minOccurs="0"/>
<xs:element ref="computing-facility-divisions" minOccurs="0"/>
<xs:element ref="cactus-insecure-mode" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="login-station-numbers">
<xs:complexType>
<xs:sequence>
<xs:element ref="station-number" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="station-number" type="xs:string"/>
<xs:element name="system-announcement" type="xs:string"/>
<xs:element name="user-new-person-divisions">
<xs:complexType>
<xs:attribute name="retrieve" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="cactus-insecure-mode"/>
<xs:element name="context-root-name"/>
</xs:schema>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="xmlView" class="gov.va.med.edp.web.view.XmlView"/>
<bean id="csvView" class="gov.va.med.edp.web.view.CsvView"/>
<bean id="exception" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/exception.jsp"/>
</bean>
<bean id="tracking" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/tracking.jsp"/>
</bean>
<bean id="board" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/board.jsp"/>
</bean>
<bean id="incompatibilityView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/jsp/incompatibility.jsp"/>
</bean>
<bean id="vistaLinkPermissionDeniedView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/jsp/vistaLinkPermissionDenied.jsp"/>
</bean>
<bean id="logout" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/jsp/logout.jsp"/>
</bean>
</beans>

View File

@ -0,0 +1,216 @@
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Emergency Department Tracking Board Server Proxy Application</display-name>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>strings</param-value>
</context-param>
<!-- Fallback locale if no bundles found for browser's preferred locale -->
<!-- Force a single locale using param-name 'javax.servlet.jsp.jstl.fmt.locale' -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
<param-value>en</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext-dao.xml
</param-value>
</context-param>
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>noCacheFilter</filter-name>
<filter-class>gov.va.med.edp.web.servlet.filter.ResponseHeaderFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>no-store, must-revalidate</param-value>
</init-param>
<init-param>
<param-name>Expires</param-name>
<param-value>Thu, 01 Jan 1970 01:00:00 GMT</param-value>
</init-param>
</filter>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>gov.va.med.authentication.kernel.KaajeeSessionAttributeListener</listener-class>
</listener>
<listener>
<listener-class>gov.va.med.authentication.kernel.KaajeeHttpSessionListener</listener-class>
</listener>
<listener>
<listener-class>gov.va.med.edp.web.servlet.listener.TimeOutIntegrationSessionAttributeListener</listener-class>
</listener>
<servlet>
<servlet-name>KaajeeInit</servlet-name>
<servlet-class>gov.va.med.authentication.kernel.InitKaajeeServlet</servlet-class>
<init-param>
<param-name>kaajee-config-file-location</param-name>
<param-value>/WEB-INF/kaajeeConfig.xml</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>gov.va.med.authentication.kernel.LoginController</servlet-class>
<run-as>
<!-- In this example, weblogic is the boot user name (i.e., weblogic console user name) -->
<role-name>weblogic</role-name>
</run-as>
</servlet>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>*.swf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/tracking.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/board.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>/logout.html</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/LoginController</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.csv</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>tracking.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>board.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>logout.html</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
<security-constraint>
<web-resource-collection>
<web-resource-name>ED Tracking Board XML Services</web-resource-name>
<url-pattern>*.xml</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>AUTHENTICATED_KAAJEE_USER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>ED Tracking Board Flex Client</web-resource-name>
<url-pattern>*.swf</url-pattern>
<url-pattern>tracking.html</url-pattern>
<url-pattern>board.html</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>AUTHENTICATED_KAAJEE_USER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>ED Tracking Board Debug Screen</web-resource-name>
<url-pattern>debug.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>AUTHENTICATED_KAAJEE_USER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>login/login.jsp</form-login-page>
<form-error-page>login/loginerror.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>AUTHENTICATED_KAAJEE_USER</role-name>
</security-role>
</web-app>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>edJSESSIONID</param-value>
</session-param>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated_if_clustered</param-value>
</session-param>
</session-descriptor>
<container-descriptor>
<session-monitoring-enabled>true</session-monitoring-enabled>
</container-descriptor>
<context-root>${edis.tracking.trackingContextRoot}</context-root>
</weblogic-web-app>

View File

@ -0,0 +1,25 @@
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>
<fmt:message key="app.name"/>
</title>
</head>
<body>
<h2>
<fmt:message key="app.name"/>
</h2>
<h3>
<fmt:message key="app.version"/>
</h3>
<h4>Built: <fmt:message key="app.buildtime"/></h4>
<div>
Copyright <fmt:message key="copyright.year"/> - <a href="<fmt:message key="copyright.organization.url"/>"><fmt:message key="copyright.organization"/></a>
</div>
</body>
</html>

View File

@ -0,0 +1,162 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><fmt:message key="app.name"/></title>
<script src="AC_OETags.js" language="javascript"></script>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
overflow:hidden;
}
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 28;
// -----------------------------------------------------------------------------
// -->
</script>
<!-- BEGIN call Flex function on browser close -->
<script language="JavaScript" type="text/javascript">
<!--
function shutdownHook()
{
var fxControl = document.BigBoard || window.BigBoard;
var warning = fxControl.getUnsavedDataWarning();
if (warning != '')
return warning;
else
return;
}
function invalidateSwf() {
var AJAX;
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX) {
AJAX.open("GET", '<c:url value="logout.html"/>?swfID=<c:out value="${swfID}"/>', false);
AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
AJAX.send(null);
}
}
window.onbeforeunload = shutdownHook;
window.onunload = invalidateSwf;
-->
</script>
<!-- END call Flex function on browser close -->
</head>
<body scroll="no">
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);
// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
if ( hasProductInstall && !hasRequestedVersion ) {
// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
// DO NOT MODIFY THE FOLLOWING FOUR LINES
// Location visited after installation is complete if installation is required
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
var MMredirectURL = window.location;
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
var MMdoctitle = document.title;
AC_FL_RunContent(
"src", "playerProductInstall",
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else if (hasRequestedVersion) {
// if we've detected an acceptable version
// embed the Flash Content SWF when all tests are passed
// Cache Server Page namespace should be set here (don't forget the ampersand)
//var edpVars = "cspNmsp=CPM&cspDemo=500^10vehu^vehu10&";
//var edpVars = "cspServ=vhaislcfgm2.vha.med.va.gov/csp/CPM&cspToken=20012^662&";
//var edpVars = "vljServ=10.5.17.153:7001&";
//var edpVars = "vljServ=10.5.17.225:7001&";
//var edpVars = "vljServ=localhost:7001&";
//SEE LINE BELOW TO LAUNCH BIG BOARD FROM FLEX BUILDER AND PASSING IN A SITE ID
//var edpVars = "vljServ=vhaislbll2.vha.med.va.gov:7141&siteId=442&";
var edpVars = "swfID=<c:out value="${swfID}"/>&timeout=true&contextRoot=<c:out value="${pageContext.request.contextPath}"/>&board=<c:out value="${param.board}"/>&area=<c:out value="${param.area}"/>&helpContextRoot=<fmt:message key="help.contextRoot"/>";
AC_FL_RunContent(
"src", "<c:out value="${clientFinalName}"/>",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "<c:out value="${clientArtifactId}"/>",
"quality", "high",
"bgcolor", "#869ca7",
"allowFullScreen", "true",
"name", "<c:out value="${clientArtifactId}"/>",
"flashvars", edpVars,
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here. '
+ 'This content requires the Adobe Flash Player. '
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="<c:out value="${clientArtifactId}"/>" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="<c:out value="${clientFinalName}"/>.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="<c:out value="${clientFinalName}"/>.swf" quality="high" allowFullScreen="true" bgcolor="#869ca7"
width="100%" height="100%" name="<c:out value="${clientArtifactId}"/>" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
</noscript>
</body>
</html>

View File

@ -0,0 +1,83 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head><title><fmt:message key="app.name"/> Debug</title></head>
<body>
<h1><fmt:message key="app.name"/> Debug</h1>
<a href="<c:url value="logout.html"/>">Logout</a>
<h4>initLogArea</h4>
<form name="initLogArea" action="tracking.xml" method="post">
<input name="command" type="hidden" value="initLogArea"/>
<table>
<tr>
<td><label for="init_area">area</label></td>
<td><input id="init_area" name="area" type="text" value="1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>refreshLogSelector</h4>
<form name="refreshLogSelector" action="tracking.xml" method="post">
<input name="command" type="hidden" value="refreshLogSelector"/>
<table>
<tr>
<td><label for="refresh_area">area</label></td>
<td><input id="refresh_area" name="area" type="text" value="1"/></td>
</tr>
<tr>
<td><label for="token">token</label></td>
<td><input id="token" name="token" type="text" value="-1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>switchLogEntry</h4>
<form name="switchLogEntry" action="tracking.xml" method="post">
<input name="command" type="hidden" value="switchLogEntry"/>
<table>
<tr>
<td><label for="logID">logID</label></td>
<td><input id="logID" name="logID" type="text" value="64"/></td>
</tr>
<tr>
<td><label for="getChoices">getChoices</label></td>
<td><input id="getChoices" name="getChoices" type="text" value="1"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>matchPatients</h4>
<form name="matchPatients" action="tracking.xml" method="post">
<input name="command" type="hidden" value="matchPatients"/>
<table>
<tr>
<td><label for="partial">partial</label></td>
<td><input id="partial" name="partial" type="text" value="TEN"/></td>
</tr>
</table>
<input type="submit" value="Execute"/>
</form>
<h4>initUser</h4>
<form name="initUser" action="tracking.xml" method="post">
<input name="command" type="hidden" value="initUser"/>
<input type="submit" value="Execute"/>
</form>
<a href="<c:url value="logout.html"/>">Logout</a>
</body>
</html>

View File

@ -0,0 +1,12 @@
<%@ page pageEncoding="UTF-8" contentType="application/xml;charset=UTF-8" language="java" session="false" isErrorPage="true" %><?xml version="1.0" encoding="UTF-8"?>
<results>
<error>
<code><%= request.getAttribute("javax.servlet.error.status_code") %></code>
<message><%= request.getAttribute("javax.servlet.error.exception") %></message>
<resource><%= request.getAttribute("javax.servlet.error.request_uri") %></resource>
<detail xml:space="preserve"><% Throwable e =
(Throwable) request.getAttribute("javax.servlet.error.exception");
e.printStackTrace(new java.io.PrintWriter(out));
%></detail>
</error>
</results>

View File

@ -0,0 +1,12 @@
<%@ page pageEncoding="UTF-8" contentType="application/xml;charset=UTF-8" language="java" session="false" isErrorPage="true" %><?xml version="1.0" encoding="UTF-8"?>
<results>
<error>
<code>500</code>
<message><%= ((Exception) request.getAttribute("exception")).getMessage() %></message>
<resource><%= request.getAttribute("resource") %></resource>
<detail xml:space="preserve"><% Exception e =
(Exception) request.getAttribute("exception");
e.printStackTrace(new java.io.PrintWriter(out));
%></detail>
</error>
</results>

View File

@ -0,0 +1,2 @@
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:redirect url="tracking.html"/>

View File

@ -0,0 +1,14 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<%@ page language="java" %>
<HTML><HEAD>
<!--<p><a href="<%= request.getContextPath() %>/login/login.jsp">Try login again.</a></p>
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<TITLE>Login Session Time out Error</TITLE></HEAD>
<BODY>
<h3>Your session expired during login, please try again by restarting </h3>
<h3> the login process by using your original bookmark, shortcut or URL destination </h3>
</BODY></HTML>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,173 @@
/**
* This JavaScript file contains functions that are needed for login.
* @author Infrastructure & Security Service
* @version 1.0.1.002
*/
function preserveRadioGroup (evt) {
this.checked = this.storedChecked;
var rgb = this.form[this.name];
if (!rgb.length && rgb.storedChecked)
rgb.checked = true;
else
for (var b = 0; b < rgb.length; b++)
rgb[b].checked = rgb[b].storedChecked ? true : false;
}
function disableRadioGroup (radioGroup) {
if (!radioGroup.disabled) {
radioGroup.disabled = true;
if (document.all || document.getElementById) {
if (!radioGroup.length)
radioGroup.disabled = true;
else
for (var b = 0; b < radioGroup.length; b++)
radioGroup[b].disabled = true;
}
else {
if (!radioGroup.length) {
radioGroup.storedChecked = radioGroup.checked;
radioGroup.oldOnClick = radioGroup.onclick;
radioGroup.onclick = preserveRadioGroup;
}
else
for (var b = 0; b < radioGroup.length; b++) {
radioGroup[b].storedChecked = radioGroup[b].checked;
radioGroup[b].oldOnClick = radioGroup[b].onclick;
radioGroup[b].onclick = preserveRadioGroup;
}
}
}
}
function enableRadioGroup (radioGroup) {
if (radioGroup.disabled) {
radioGroup.disabled = false;
if (document.all || document.getElementById) {
if (!radioGroup.length)
radioGroup.disabled = false;
else
for (var b = 0; b < radioGroup.length; b++)
radioGroup[b].disabled = false;
}
else {
if (!radioGroup.length) {
radioGroup.onclick = radioGroup.oldOnClick;
}
else
for (var b = 0; b < radioGroup.length; b++) {
radioGroup[b].onclick = radioGroup[b].oldOnClick;
}
}
}
}
function isblank(s) {
slen = s.length;
for (var i = 0; i < slen; i++) {
var c = s.charAt(i);
if ((c != ' ') && (c != '\n') && (c != '')) return false;
}
return true;
}
function disableObj(obj) {
obj.disabled = true;
}
function enableObj(obj) {
obj.disabled = false;
}
function checkHF(myForm,mySelect,myRadioButtonGroup,myHiddenObj1,myHiddenObj2,myHiddenObj3) {
disableInstitutionObj(myForm,mySelect,myRadioButtonGroup,myHiddenObj1,myHiddenObj2)
if (myHiddenObj3.value == "number") {
reSortSelectOptions(myForm,mySelect,"value");
}
else if (myHiddenObj3.value == "name") {
reSortSelectOptions(myForm,mySelect,"text");
}
}
function disableInstitutionObj(myForm,mySelect,myRadioButtonGroup,myHiddenObj1,myHiddenObj2) {
if (myHiddenObj1.value == "true") disableObj(mySelect);
if ((myHiddenObj1.value == "true") || (myHiddenObj2.value == "true")) {
disableRadioGroup(myRadioButtonGroup);
}
}
function enableInstitutionObj(myForm,mySelect,myRadioButtonGroup,myHiddenObj1,myHiddenObj2) {
myHiddenObj1.value = "false";
myHiddenObj2.value = "false";
enableObj(mySelect);
enableRadioGroup(myRadioButtonGroup);
}
function hasOptions(obj) {
if (obj!=null && obj.options!=null) { return true; }
return false;
}
function sortSelect(obj,sortBy) {
var o = new Array();
if (!hasOptions(obj)) { return false; }
for (var i=0; i<obj.options.length; i++) {
o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
}
if (o.length==0) { return true; }
if (sortBy == "text") {
o = o.sort(
function(a,b) {
if ((a.text+"") < (b.text+"")) { return -1; }
if ((a.text+"") > (b.text+"")) { return 1; }
return 0;
}
);
}
else if (sortBy == "value") {
o = o.sort(
function(a,b) {
if ((a.value+"") < (b.value+"")) { return -1; }
if ((a.value+"") > (b.value+"")) { return 1; }
return 0;
}
);
}
else {
alert("\nError encountered while sorting institutions!!!");
}
for (var i=0; i<o.length; i++) {
obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
}
return true;
}
function reSortSelectOptions(formRef,selectRef,sortBy) {
if (!formRef) {
alert("\nForm reference unknown!!!");
}
else if (selectRef.length <1) {
alert("\n" + selectRef.name + " drop down component is empty!!!");
}
else {
var result = sortSelect(selectRef,sortBy);
if (!result) {
alert("\nSorting Select Object failed!!!");
}
}
}
function doInitialSortOnDivisions(myForm,mySelect,mySortPref,mycookie) {
var allcookies = mycookie;
var cookieArry = allcookies.split(";");
for (var i=0; i < cookieArry.length; i++) {
cookieArry[i]=cookieArry[i].split("=");
if ((cookieArry[i][0].indexOf("gov.va.med.authentication.kernel.defaultSortDivisionBy") != -1) &&
(cookieArry[i][1] == "name")) {
//Now call function to sort divisions by name.
reSortSelectOptions(myForm,mySelect,mySortPref)
break;
}
}
}

View File

@ -0,0 +1,250 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" session = "false" %>
<%@ page import="gov.va.med.authentication.kernel.ConfigurationVO,
gov.va.med.authentication.kernel.LoginController,
weblogic.servlet.security.ServletAuthentication;"%>
<%
// Turn off cache so that a user cannot navigate back to the login page after post-login
response.setHeader("Cache-Control","no-store, no-cache, must-revalidate"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
<HTML>
<HEAD>
<!--
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<STYLE type="text/css">
.scrollPane { height:18em; overflow: auto; }
</STYLE>
<TITLE>Login Page</TITLE>
<script type="text/javascript" src="<%= request.getContextPath()%>/login/javascript/login.js"></script>
</HEAD>
<BODY onload="javascript:checkHF(document.LoginForm,document.LoginForm.institution,document.LoginForm.sortInstBy,document.LoginForm.disableInstitutionObjHF,document.LoginForm.disableSortByObjHF,document.LoginForm.sortByObjHF);document.LoginForm.access.focus();">
<a href="#skip" title="Skip to login fields"></a>
<%
/*
It could be argued that using code within JSP is not a good thing, but for such a small app it's
completely acceptable. If we were working with an HTML designer, the separation would be good. But then
JSTL would be needed and with that we'd introduce some version of that as a dependency, which is preferably
avoided given because we're embedded, we force these dependencies on the containing application as well.
*/
ConfigurationVO kaajeeEnv = ConfigurationVO.getInstance();
/*
Here if the protocol is 'http', I redirected the user to the same page using 'https' protocol.
*/
if(request.getParameter("relogin")!=null){
HttpSession hSess = request.getSession(false);
if(hSess == null) {
StringBuffer sbsession = new StringBuffer(request.getContextPath());
sbsession.append("/login/SessionTimeout.jsp");
response.sendRedirect(sbsession.toString());
return;
}
}
HttpSession hSess = request.getSession(true);
String desiredSchema = "https"; //or http
String usingSchema = request.getScheme();
if(kaajeeEnv.getHTTPSPortLis() != null ) {
if(!desiredSchema.equals(usingSchema)) {
StringBuffer sburl = request.getRequestURL();
java.net.URL url = new java.net.URL(sburl.toString());
hSess = request.getSession(true);
Integer portValue = new Integer(url.getPort());
hSess.setAttribute("portnumber",portValue);
String urlString = desiredSchema+"://"+ url.getHost() +":"+kaajeeEnv.getHTTPSPortLis()+url.getPath();
response.sendRedirect(response.encodeRedirectURL(urlString));
return;
}
}
%>
<FORM name="LoginForm" method="post" action="<%= request.getContextPath() %>/LoginController" onSubmit="javascript:enableInstitutionObj(document.LoginForm,document.LoginForm.institution,document.LoginForm.sortInstBy,document.LoginForm.disableInstitutionObjHF,document.LoginForm.disableSortByObjHF)">
<table align="center" summary="This table is for formatting purposes only">
<tr>
<td>
<table width="75%" border="0" align="center" cellpadding="4" cellspacing="4" bgcolor="#eeeeee">
<caption align="left"><strong>System Announcements:</strong></caption>
<tr><td><div class="scrollPane"><%= kaajeeEnv.getIntroductoryText() %></div></td></tr></table>
<table border="0" align="center" cellpadding="3" cellspacing="3" summary="This table is for formatting purposes only">
<tr align="center">
<td colspan="2" nowrap><h3>Login: <%= kaajeeEnv.getHostApplicationName() %></h3></td>
</tr>
<tr>
<td><img src="<%= request.getContextPath() %>/login/images/HealtheVetVistaSmallBlue.jpg" alt="Health e Vet Vista logo" width="120" height="60"></td>
<td><table border="0" align="center" cellpadding="3" cellspacing="3" summary="This table is for formatting purposes only">
<tr>
<th align="right" nowrap><a name="skip"></a>Access Code:</th>
<td><input type="password" name="access" value="" size=16 maxlength=20></td>
<td>&nbsp;</td>
</tr>
<tr>
<th align="right" nowrap>Verify Code:</th>
<td><input type="password" name="verify" value="" size=16 maxlength=20></td>
</tr>
</table></td></tr>
<tr>
<%
//1. Initialize values
String kaajeeDefaultInstitutionValue = "";
String kaajeeDisableInstitutionComponentsValue = "";
String kaajeeSortStationByValue = "";
String kaajeeDisableSortStationByValue = "";
boolean kaajeeDefaultInstitutionParamFound = false;
boolean kaajeeDisableInstitutionParamFound = false;
boolean kaajeeSortStationByParamFound = false;
boolean kaajeeDisableSortStationByParamFound = false;
//2. Get targetURL and parse out parameters
String targetURL = ServletAuthentication.getTargetURLForFormAuthentication(request.getSession());
if (targetURL == null) {
StringBuffer sbNavErrorPg = new StringBuffer(request.getContextPath());
sbNavErrorPg.append("/login/navigationerror.jsp");
response.sendRedirect(sbNavErrorPg.toString());
return;
}
int paramPos = targetURL.indexOf('?');
String paramList = (paramPos > -1) ? targetURL.substring(paramPos + 1, targetURL.length()) : "";
String[] paramArray = paramList.split("\u0026"); //split on '&' char
for (int i=0; i < paramArray.length; i++) {
String[] tempArray=paramArray[i].split("\u003D"); //split on '=' char
if (tempArray[0].indexOf("kaajeeDefaultInstitution") != -1) {
kaajeeDefaultInstitutionValue = tempArray[1];
kaajeeDefaultInstitutionParamFound = true;
} else {
if (tempArray[0].indexOf("kaajeeDisableInstitutionComponents") != -1) {
kaajeeDisableInstitutionComponentsValue = tempArray[1];
kaajeeDisableInstitutionParamFound = true;
} else {
if (tempArray[0].indexOf("kaajeeSortStationBy") != -1) {
kaajeeSortStationByValue = tempArray[1];
kaajeeSortStationByParamFound = true;
} else {
if (tempArray[0].indexOf("kaajeeDisableSortStationBy") != -1) {
kaajeeDisableSortStationByValue = tempArray[1];
kaajeeDisableSortStationByParamFound = true;
}
}
}
}
if ((kaajeeDefaultInstitutionParamFound) && (kaajeeDisableInstitutionParamFound) && (kaajeeSortStationByParamFound) && (kaajeeDisableSortStationByParamFound)) break;
}
//
//3. Get default login institution and sorting preference if any from cookies
boolean sortCookieFound = false;
boolean instCookieFound = false;
String defaultSortInstBy="";
String defaultInst="";
String cookieDefaultSortInstitutionByString = LoginController.COOKIE_DEFAULT_SORT_INSTITUTION_BY_STRING;
String cookieDefaultDivisionString = LoginController.COOKIE_DEFAULT_DIVISION_STRING;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i=0;i<cookies.length;i++) {
if (cookies[i].getName().equals(cookieDefaultSortInstitutionByString)) {
defaultSortInstBy=cookies[i].getValue();
// store in session for LoginController, post-submit
hSess.setAttribute(LoginController.SESSION_KEY_COOKIE_DEFAULT_SORT_INSTITUTION_BY, defaultSortInstBy);
sortCookieFound = true;
} else {
if (cookies[i].getName().equals(cookieDefaultDivisionString)) {
defaultInst=cookies[i].getValue();
// store in session for LoginController, post-submit
hSess.setAttribute(LoginController.SESSION_KEY_COOKIE_DEFAULT_DIVISION, defaultInst);
instCookieFound = true;
}
}
if ((sortCookieFound) && (instCookieFound)) break;
}
}
String radioButton1CheckValue = ((kaajeeSortStationByValue.trim().length() > 0) ?
(kaajeeSortStationByValue.equals("number") ? "checked" : "") :
((defaultSortInstBy.equals("")) ||
(defaultSortInstBy.equals("number")) ? "checked" : ""));
String radioButton2CheckValue = ((kaajeeSortStationByValue.trim().length() > 0) ?
(kaajeeSortStationByValue.equals("name") ? "checked" : "") :
((defaultSortInstBy.equals("name")) ? "checked" : ""));
%>
<td>
<input type=radio <%= radioButton1CheckValue %> name=sortInstBy value="number" onclick="reSortSelectOptions(this.form,this.form.institution,'value')">Sort by Station Number *</td>
<td> <input type=radio <%= radioButton2CheckValue %> name=sortInstBy value="name" onclick="reSortSelectOptions(this.form,this.form.institution,'text')">Sort by Station Name *
</td>
</tr>
<tr> <td > <input type=hidden name="disableInstitutionObjHF" value=<%= kaajeeDisableInstitutionComponentsValue %> ></td></tr>
<tr> <td > <input type=hidden name="disableSortByObjHF" value=<%= kaajeeDisableSortStationByValue %> ></td></tr>
<tr> <td > <input type=hidden name="sortByObjHF" value=<%= kaajeeSortStationByValue %> ></td></tr>
<tr align="center">
<th colspan="2" nowrap>Institution:
<select name="institution" size="1">
<%
//4. Initialize and Create Option List
String imOptionList = "";
if (defaultSortInstBy.equals("name")) {
imOptionList = kaajeeEnv.getJspDropDownListLoginOptionsByName();
} else {
imOptionList = kaajeeEnv.getJspDropDownListLoginOptions();
}
// TODO: if string is "", show error message?
//5. Set the selected institution in the list based on the cookie value
if ((defaultInst != null) || ((kaajeeDefaultInstitutionValue != null) && (kaajeeDefaultInstitutionValue.trim().length() > 0))) {
// int indexDefaultInst = imOptionList.indexOf("value="+defaultInst+">");
StringBuffer sbInst = new StringBuffer();
sbInst.append(((kaajeeDefaultInstitutionValue != null) && (kaajeeDefaultInstitutionValue.trim().length() > 0)) ? kaajeeDefaultInstitutionValue : defaultInst);
int indexDefaultInst = imOptionList.indexOf("value="+ sbInst.toString() +">");
if (indexDefaultInst > -1) {
StringBuffer sb = new StringBuffer();
sb.append(imOptionList.substring(0, indexDefaultInst -1));
sb.append(" selected ");
sb.append(imOptionList.substring(indexDefaultInst, imOptionList.length()-1));
imOptionList = sb.toString();
}
}
%>
<%= imOptionList %>
</select>
* </th>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right" nowrap>&nbsp;</td>
<!-- <td><input type="checkbox" name="changeverify" value="yes" /><strong>Change Verify Code (Not yet implemented)</strong></td> -->
</tr>
<tr>
<!-- Relocate Login button here!!! -->
<td align="right" nowrap>&nbsp;</td>
<td><input name="submit" type="submit" value="Login"></td>
</tr>
<tr align="center">
<td colspan="2" nowrap>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr align="center">
<td colspan="2" nowrap>* Persistent Cookie Used (<a href="<%= request.getContextPath() %>/login/loginCookieInfo.htm"
onClick='window.open("<%= request.getContextPath() %>/login/loginCookieInfo.htm","new_win","status=no,scrollbars=yes,toolbar=no,location=no,width=400,height=450,resizable"); return false;'>more
information</a>).</td>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="2"><div align="center"></div></td>
</tr>
</table>
</FORM>
</BODY>
</HTML>

View File

@ -0,0 +1,44 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!--
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<title>Login Persistent Cookie Information</title>
</head>
<body>
<h3>Login Persistent Cookie Information</h3>
<p>The login module uses a persistent cookie to store the institution you select at login.
<p>This information is used at the next login, to pre-select the same institution for the next login.</p>
<p>Given that the list of institutions may be quite long for some applications, the goal of using the
persistent cookie is to save you time by pre-selecting the most likely institution choice, which for most
users would be the previously selected login. This is similar to the Windows login, which saves your last
domain used for login, and pre-selects that domain at the next login.
<p>In addition to the above persistent cookie, the login module uses another persistent cookie to store
the user's preference for sorting institutions in the Institution Drop Down box of the login page.
<p>The cookies contains the following information:
<ul>
<li>name: gov.va.med.authentication.kernel.defaultDivision
<li>value: station number used for the previous login
<li>expiry time: 180 days
<li>name: gov.va.med.authentication.kernel.defaultSortInstitutionBy
<li>value: sort order of name or number used for the previous refresh
<li>expiry time: 180 days
</ul>
<h4>Thin Client/Terminal Server users:</h4>
<p>Please note that persistent cookies may not be of much use on Terminal Servers.
<p>The reason is that many Terminal Servers may have been configured to use roaming profiles that may
not retain as part of the user profile cookies and temporary internet files upon the user logout
and disconnect.</p>
<p>In such cases, the recommendation is to create on each Terminal Server shortcuts and save them
on the desktop and/or quick launch bar. These shortcuts should have the desired target URLs plus any
desired KAAJEE supported parameters. For further details regarding how to use these KAAJEE supported
parameters in order to pre-select the desired institution and institution sorting preference,
please refer to the KAAJEE documentation.
<p align="center"><a href="loginCookieInfo.htm" ONCLICK='window.close()'><b>Close Window</b></a></p>
</body>
</html>

View File

@ -0,0 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<%@ page language="java" %>
<HTML><HEAD>
<!--
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<TITLE>Forms Authentication Error</TITLE></HEAD>
<BODY>
<h3>Forms authentication login failed.</h3>
<p><a href="<%= request.getContextPath() %>/login/login.jsp">Try login again.</a></p>
</BODY></HTML>

View File

@ -0,0 +1,31 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<%@ page language="java" %>
<HTML><HEAD>
<!--
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<TITLE>Login Error</TITLE></HEAD>
<BODY>
<%
String stringurl = "";
String errorMessage = (String) session.getAttribute("gov.va.med.authentication.kernel.errormessage");
if (errorMessage == null) errorMessage = "";
%>
<!-- TODO: invalidate any login user demographics session object here? -->
<h3>There was a login error detected by the login system:</h3>
<table width="80%" align="center">
<tr><td align="left"><p><b><%= errorMessage %></b></p>
</td></tr></table>
<% session.removeAttribute("gov.va.med.authentication.kernel.errormessage");
session = request.getSession(false);
stringurl = request.getContextPath()+"/login/login.jsp"+"?relogin=true";
%>
<p><a href="<%= stringurl %>">Try login again.</a></p>
</BODY></HTML>

View File

@ -0,0 +1,14 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<%@ page language="java" %>
<HTML><HEAD>
<!--<p><a href="<%= request.getContextPath() %>/login/login.jsp">Try login again.</a></p>
*
* @author Infrastructure & Security Service
* @version 1.0.1.002
* -->
<TITLE>Navigation Error</TITLE></HEAD>
<BODY>
<h3>You navigated inappropriately to this page. </h3>
<h3> The login process should only be invoked via the consuming application by using your original bookmark, shortcut or URL destination </h3>
</BODY></HTML>

Some files were not shown because too many files have changed in this diff Show More