Skip to content
This repository has been archived by the owner on Jun 22, 2022. It is now read-only.

Commit

Permalink
Merge pull request #22 from imsweb/update-staging-client
Browse files Browse the repository at this point in the history
Update staging-client-java
  • Loading branch information
ctmay4 authored May 12, 2021
2 parents 6c96e41 + 0af6e3c commit 3bebab4
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 101 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ Download [the latest JAR][1] or grab via Maven:
<dependency>
<groupId>com.imsweb</groupId>
<artifactId>staging-algorithm-eod-public</artifactId>
<version>2.0.7</version>
<version>2.0.8</version>
</dependency>
```

or via Gradle:

```groovy
compile 'com.imsweb.com:staging-algorithm-eod-public:2.0.7'
compile 'com.imsweb.com:staging-algorithm-eod-public:2.0.8'
```

## Usage
Expand Down Expand Up @@ -80,7 +80,7 @@ Set<String> schemaIds = staging.getSchemaIds();
To get a single schema by identifer,

```java
StagingSchema schema = staging.getSchema("prostate");
Schema schema = staging.getSchema("prostate");
```

### Tables
Expand Down Expand Up @@ -111,7 +111,7 @@ Set<String> tableIds = staging.getInvolvedTables("prostate");
To get a single table by identifer,

```java
StagingTable table = staging.getTable("ajcc7_stage");
Table table = staging.getTable("ajcc7_stage");
```

### Lookup a schema
Expand Down
9 changes: 3 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ plugins {
}

group = 'com.imsweb'
version = '2.0.7'
version = '2.0.8'
description = 'EOD algorithm for the java-staging-client'

tasks.withType(JavaCompile) {
Expand All @@ -29,15 +29,12 @@ java {

repositories {
mavenCentral()
// maven {
// url = 'https://oss.sonatype.org/content/repositories/snapshots/'
// }
}

dependencies {
spotbugs 'com.github.spotbugs:spotbugs:4.2.3'

api 'com.imsweb:staging-client-java:5.0.6'
api 'com.imsweb:staging-client-java:6.0.0'

testImplementation('com.imsweb:staging-client-java:5.0.6') {
capabilities {
Expand Down Expand Up @@ -167,6 +164,6 @@ nexusStaging {
}

wrapper {
gradleVersion = '7.0'
gradleVersion = '7.0.1'
distributionType = Wrapper.DistributionType.ALL
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
22 changes: 14 additions & 8 deletions src/main/java/com/imsweb/staging/eod/EodSchemaLookup.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,24 @@
import java.util.HashSet;
import java.util.Set;

import com.imsweb.staging.SchemaLookup;
import com.imsweb.staging.eod.EodStagingData.EodInput;
import com.imsweb.staging.entities.SchemaLookup;

import static com.imsweb.staging.entities.StagingData.HISTOLOGY_KEY;
import static com.imsweb.staging.entities.StagingData.PRIMARY_SITE_KEY;
import static com.imsweb.staging.eod.EodStagingData.EodInput.BEHAVIOR;
import static com.imsweb.staging.eod.EodStagingData.EodInput.DISCRIMINATOR_1;
import static com.imsweb.staging.eod.EodStagingData.EodInput.DISCRIMINATOR_2;
import static com.imsweb.staging.eod.EodStagingData.EodInput.SEX;

public class EodSchemaLookup extends SchemaLookup {

private static final Set<String> _ALLOWED_KEYS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
EodStagingData.PRIMARY_SITE_KEY,
EodStagingData.HISTOLOGY_KEY,
EodInput.SEX.toString(),
EodInput.BEHAVIOR.toString(),
EodInput.DISCRIMINATOR_1.toString(),
EodInput.DISCRIMINATOR_2.toString())));
PRIMARY_SITE_KEY,
HISTOLOGY_KEY,
SEX.toString(),
BEHAVIOR.toString(),
DISCRIMINATOR_1.toString(),
DISCRIMINATOR_2.toString())));

/**
* Constructor
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/imsweb/staging/eod/EodStagingData.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/
package com.imsweb.staging.eod;

import com.imsweb.staging.StagingData;
import com.imsweb.staging.entities.StagingData;

public class EodStagingData extends StagingData {

Expand Down
91 changes: 25 additions & 66 deletions src/test/java/com/imsweb/staging/StagingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
Expand All @@ -17,16 +16,13 @@

import org.junit.Test;

import com.imsweb.decisionengine.ColumnDefinition;
import com.imsweb.staging.StagingData.Result;
import com.imsweb.staging.entities.StagingColumnDefinition;
import com.imsweb.staging.entities.StagingMapping;
import com.imsweb.staging.entities.StagingRange;
import com.imsweb.staging.entities.StagingSchema;
import com.imsweb.staging.entities.StagingSchemaInput;
import com.imsweb.staging.entities.StagingSchemaOutput;
import com.imsweb.staging.entities.StagingTable;
import com.imsweb.staging.entities.StagingTableRow;
import com.imsweb.staging.entities.ColumnDefinition;
import com.imsweb.staging.entities.Input;
import com.imsweb.staging.entities.Mapping;
import com.imsweb.staging.entities.Output;
import com.imsweb.staging.entities.Schema;
import com.imsweb.staging.entities.StagingData.Result;
import com.imsweb.staging.entities.Table;
import com.imsweb.staging.eod.EodSchemaLookup;
import com.imsweb.staging.eod.EodStagingData;
import com.imsweb.staging.eod.EodStagingData.EodInput;
Expand Down Expand Up @@ -67,7 +63,7 @@ public void testInitialization() {
@Test
public void testInitAllTables() {
for (String id : _STAGING.getTableIds()) {
StagingTable table = _STAGING.getTable(id);
Table table = _STAGING.getTable(id);

assertThat(table).isNotNull();
assertThat(table.getAlgorithm()).isNotNull();
Expand Down Expand Up @@ -99,8 +95,8 @@ public void testValidCode() {
public void testBasicInputs() {
// all inputs for all schemas will have null unit and decimal places
for (String id : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(id);
for (StagingSchemaInput input : schema.getInputs()) {
Schema schema = _STAGING.getSchema(id);
for (Input input : schema.getInputs()) {
assertThat(input.getUnit()).as("No schemas should have units").isNull();
assertThat(input.getDecimalPlaces()).as("No schemas should have decimal places").isNull();
}
Expand Down Expand Up @@ -135,7 +131,7 @@ public void testAllowedFields() {
descriminators.add(EodStagingData.HISTOLOGY_KEY);

for (String id : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(id);
Schema schema = _STAGING.getSchema(id);
if (schema.getSchemaDiscriminators() != null)
descriminators.addAll(schema.getSchemaDiscriminators());
}
Expand Down Expand Up @@ -199,20 +195,20 @@ public void testInputTables() {
Set<String> errors = new HashSet<>();

for (String schemaId : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(schemaId);
Schema schema = _STAGING.getSchema(schemaId);

// build a list of input tables that should be excluded
for (StagingSchemaInput input : schema.getInputs()) {
for (Input input : schema.getInputs()) {
if (input.getTable() != null) {
Set<String> inputKeys = new HashSet<>();
StagingTable table = _STAGING.getTable(input.getTable());
for (StagingColumnDefinition def : table.getColumnDefinitions())
Table table = _STAGING.getTable(input.getTable());
for (ColumnDefinition def : table.getColumnDefinitions())
if (ColumnDefinition.ColumnType.INPUT.equals(def.getType()))
inputKeys.add(def.getKey());

// make sure the input key matches the an input column
if (!inputKeys.contains(input.getKey()))
errors.add("Input key " + schemaId + ":" + input.getKey() + " does not match validation table " + table.getId() + ": " + inputKeys.toString());
errors.add("Input key " + schemaId + ":" + input.getKey() + " does not match validation table " + table.getId() + ": " + inputKeys);
}
}
}
Expand All @@ -225,7 +221,7 @@ public void verifyInputs() {
List<String> errors = new ArrayList<>();

for (String id : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(id);
Schema schema = _STAGING.getSchema(id);

// loop over all the inputs returned by processing the schema and make sure they are all part of the main list of inputs on the schema
for (String input : _STAGING.getInputs(schema))
Expand All @@ -241,14 +237,13 @@ public void testMappingIdUniqueness() {
Set<String> errors = new HashSet<>();

for (String schemaId : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(schemaId);
Schema schema = _STAGING.getSchema(schemaId);

// build a list of input tables that should be excluded
Set<String> ids = new HashSet<>();

List<StagingMapping> mappings = schema.getMappings();
if (mappings != null)
for (StagingMapping mapping : mappings) {
if (schema.getMappings() != null)
for (Mapping mapping : schema.getMappings()) {
if (ids.contains(mapping.getId()))
errors.add("The mapping id " + schemaId + ":" + mapping.getId() + " is duplicated. This should never happen");
ids.add(mapping.getId());
Expand All @@ -262,7 +257,7 @@ public void testMappingIdUniqueness() {
public void testBehaviorDescriminator() {
// test valid combination that requires discriminator and a good discriminator is supplied
EodSchemaLookup lookup = new EodSchemaLookup("C717", "9591");
List<StagingSchema> lookups = _STAGING.lookupSchema(lookup);
List<Schema> lookups = _STAGING.lookupSchema(lookup);
assertThat(lookups).hasSize(3);
lookup.setInput(EodInput.DISCRIMINATOR_1.toString(), "1");
lookup.setInput(EodInput.BEHAVIOR.toString(), "3");
Expand All @@ -280,7 +275,7 @@ public void testStagingEnums() {
Set<String> schemaInput = new HashSet<>();
Set<String> schemaOutput = new HashSet<>();
for (String schemaId : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(schemaId);
Schema schema = _STAGING.getSchema(schemaId);

schemaInput.addAll(_STAGING.getInputs(schema));
schemaOutput.addAll(_STAGING.getOutputs(schema));
Expand All @@ -297,9 +292,9 @@ public void testNaaccrXmlIds() {
Map<String, Set<String>> inputMappings = new HashMap<>();
Map<String, Set<String>> outputMappings = new HashMap<>();
for (String schemaId : _STAGING.getSchemaIds()) {
StagingSchema schema = _STAGING.getSchema(schemaId);
Schema schema = _STAGING.getSchema(schemaId);

for (StagingSchemaInput input : schema.getInputs()) {
for (Input input : schema.getInputs()) {
if (input.getNaaccrItem() != null && input.getNaaccrXmlId() == null)
errors.add("Schema input " + schema.getId() + "." + input.getKey() + " has a NAACCR number but is missing NAACCR XML ID");

Expand All @@ -311,7 +306,7 @@ public void testNaaccrXmlIds() {
}
}

for (StagingSchemaOutput output : schema.getOutputs()) {
for (Output output : schema.getOutputs()) {
if (output.getNaaccrItem() != null && output.getNaaccrXmlId() == null)
errors.add("Schema output " + schema.getId() + "." + output.getKey() + " has a NAACCR number but is missing NAACCR XML ID");

Expand Down Expand Up @@ -381,40 +376,4 @@ public void assertNoErrors(Collection<String> errors, String description) {
}
}

/**
* Return the input length from a specified table
* @param tableId table indentifier
* @param key input key
* @return null if no length couild be determined, or the length
*/
protected Integer getInputLength(String tableId, String key) {
StagingTable table = _STAGING.getTable(tableId);
Integer length = null;

// loop over each row
for (StagingTableRow row : table.getTableRows()) {
List<StagingRange> ranges = row.getInputs().get(key);

for (StagingRange range : ranges) {
String low = range.getLow();
String high = range.getHigh();

if (range.matchesAll() || low.isEmpty())
continue;

if (low.startsWith("{{") && low.contains(Staging.CTX_YEAR_CURRENT))
low = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
if (high.startsWith("{{") && high.contains(Staging.CTX_YEAR_CURRENT))
high = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));

if (length != null && (low.length() != length || high.length() != length))
throw new IllegalStateException("Inconsistent lengths in table " + tableId + " for key " + key);

length = low.length();
}
}

return length;
}

}
Loading

0 comments on commit 3bebab4

Please sign in to comment.