-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
211 additions
and
29 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
...ement/validation/ValidationException.java → ...ment/application/ValidationException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...surement/validation/ValidationResult.java → ...agement/application/ValidationResult.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
.../life/qbic/projectmanagement/application/measurement/validation/MeasurementValidator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
...nagement/src/main/java/life/qbic/projectmanagement/application/sample/SampleMetadata.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package life.qbic.projectmanagement.application.sample; | ||
|
||
import java.util.Optional; | ||
|
||
/** | ||
* <b>Sample Metadata</b> | ||
* | ||
* <p>A simple sample metadata DTO to pass them within the application</p> | ||
* | ||
* @since 1.0.0 | ||
*/ | ||
public record SampleMetadata(String sampleId, String analysisToBePerformed, String sampleName, | ||
String biologicalReplicate, String condition, String specimen, | ||
String analyte, String comment) { | ||
|
||
public static SampleMetadata createNew(String analysisToBePerformed, String sampleName, | ||
String biologicalReplicate, String condition, String specimen, | ||
String analyte, String comment) { | ||
return new SampleMetadata("", analysisToBePerformed, sampleName, biologicalReplicate, condition, | ||
specimen, analyte, comment); | ||
} | ||
|
||
public static SampleMetadata createUpdate(String sampleId, String analysisToBePerformed, | ||
String sampleName, | ||
String biologicalReplicate, String condition, String specimen, | ||
String analyte, String comment) { | ||
return new SampleMetadata(sampleId, analysisToBePerformed, sampleName, biologicalReplicate, | ||
condition, specimen, analyte, comment); | ||
} | ||
|
||
public Optional<String> getSampleId() { | ||
return Optional.ofNullable(sampleId.isBlank() ? null : sampleId); | ||
} | ||
|
||
} |
100 changes: 100 additions & 0 deletions
100
...gement/src/main/java/life/qbic/projectmanagement/application/sample/SampleValidation.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
package life.qbic.projectmanagement.application.sample; | ||
|
||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Objects; | ||
import java.util.function.Function; | ||
import java.util.stream.Collectors; | ||
import life.qbic.projectmanagement.application.ValidationResult; | ||
import life.qbic.projectmanagement.application.experiment.ExperimentInformationService; | ||
import life.qbic.projectmanagement.application.ontology.SpeciesLookupService; | ||
import life.qbic.projectmanagement.application.ontology.TerminologyService; | ||
import life.qbic.projectmanagement.domain.model.experiment.Condition; | ||
import life.qbic.projectmanagement.domain.model.experiment.Experiment; | ||
import life.qbic.projectmanagement.domain.model.experiment.ExperimentId; | ||
import life.qbic.projectmanagement.domain.model.experiment.ExperimentalGroup; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Component; | ||
|
||
/** | ||
* <b><class short description - 1 Line!></b> | ||
* | ||
* <p><More detailed description - When to use, what it solves, etc.></p> | ||
* | ||
* @since <version tag> | ||
*/ | ||
@Component | ||
public class SampleValidation { | ||
|
||
private final SampleInformationService sampleInformationService; | ||
|
||
private final ExperimentInformationService experimentInformationService; | ||
|
||
private final TerminologyService terminologyService; | ||
|
||
private final SpeciesLookupService speciesLookupService; | ||
|
||
@Autowired | ||
public SampleValidation(SampleInformationService sampleInformationService, | ||
ExperimentInformationService experimentInformationService, | ||
TerminologyService terminologyService, SpeciesLookupService speciesLookupService) { | ||
this.sampleInformationService = Objects.requireNonNull(sampleInformationService); | ||
this.experimentInformationService = Objects.requireNonNull(experimentInformationService); | ||
this.terminologyService = Objects.requireNonNull(terminologyService); | ||
this.speciesLookupService = Objects.requireNonNull(speciesLookupService); | ||
} | ||
|
||
/** | ||
* Creates a lookup table for conditions having their String representation as key. | ||
* <p> | ||
* The String representation is done with the {@link PropertyConversion#toString(Condition)} | ||
* method. | ||
* | ||
* @param conditions the conditions to take for the lookup table build | ||
* @return the lookup table | ||
* @since 1.5.0 | ||
*/ | ||
private static Map<String, Condition> conditionLookup(List<Condition> conditions) { | ||
return conditions.stream() | ||
.collect(Collectors.toMap(PropertyConversion::toString, Function.identity())); | ||
} | ||
|
||
/** | ||
* Validates metadata for a not yet registered sample. The validation does not look for any sample | ||
* id and no sample information lookups are done in this case. | ||
* <p> | ||
* If the client wants to validate the sample id as well, please refer to | ||
* {@link SampleValidation#validateExistingSample(SampleMetadata, String, String)} | ||
* | ||
* @param sampleMetadata the sample metadata to validate | ||
* @param experimentId the experiment id of the experiment the sample belongs to | ||
* @param projectId the project id of project the experiment belongs to | ||
* @return the report of the validation | ||
* @since 1.5.0 | ||
*/ | ||
public ValidationResult validateNewSample(SampleMetadata sampleMetadata, String experimentId, | ||
String projectId) { | ||
var experimentQuery = experimentInformationService.find(projectId, | ||
ExperimentId.parse(experimentId)); | ||
if (experimentQuery.isPresent()) { | ||
return validateWithExperiment(sampleMetadata, experimentQuery.get(), projectId); | ||
} else { | ||
return ValidationResult.withFailures(1, List.of("Unknown experiment.")); | ||
} | ||
} | ||
|
||
private ValidationResult validateWithExperiment(SampleMetadata sampleMetadata, | ||
Experiment experiment, String projectId) { | ||
var conditionsLookupTable = conditionLookup(experiment.getExperimentalGroups().stream().map( | ||
ExperimentalGroup::condition).toList()); | ||
|
||
throw new RuntimeException("Not implemented yet"); | ||
} | ||
|
||
public ValidationResult validateExistingSample(SampleMetadata sampleMetadata, String experimentId, | ||
String projectId) { | ||
throw new RuntimeException("Not yet implemented"); | ||
} | ||
|
||
|
||
} |
31 changes: 31 additions & 0 deletions
31
...src/main/java/life/qbic/projectmanagement/application/sample/SampleValidationService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package life.qbic.projectmanagement.application.sample; | ||
|
||
import java.util.Objects; | ||
import life.qbic.projectmanagement.application.ValidationResult; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Service; | ||
|
||
/** | ||
* <b><class short description - 1 Line!></b> | ||
* | ||
* <p><More detailed description - When to use, what it solves, etc.></p> | ||
* | ||
* @since <version tag> | ||
*/ | ||
@Service | ||
public class SampleValidationService { | ||
|
||
private final SampleValidation sampleValidation; | ||
|
||
@Autowired | ||
public SampleValidationService(SampleValidation sampleValidation) { | ||
this.sampleValidation = Objects.requireNonNull(sampleValidation); | ||
} | ||
|
||
public ValidationResult validateNewSample(SampleMetadata sampleMetadata, String experimentId, | ||
String projectId) { | ||
return sampleValidation.validateNewSample(sampleMetadata, experimentId, projectId); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters