Skip to content

Commit

Permalink
Initial Code for Schema to Release Migration
Browse files Browse the repository at this point in the history
  • Loading branch information
oblodgett committed Aug 20, 2019
1 parent a3dfad5 commit 7cee817
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
package org.alliancegenome.agr_submission.dao;

import java.util.List;
import java.util.TreeSet;

import javax.enterprise.context.ApplicationScoped;

import org.alliancegenome.agr_submission.BaseSQLDAO;
import org.alliancegenome.agr_submission.entities.ReleaseVersion;

import lombok.extern.log4j.Log4j2;

@Log4j2
@ApplicationScoped
public class ReleaseVersionDAO extends BaseSQLDAO<ReleaseVersion> {

public ReleaseVersionDAO() {
super(ReleaseVersion.class);
}

public ReleaseVersion getByName(String releaseVersion) {
return findByField("releaseVersion", releaseVersion);
}

public ReleaseVersion getCurrentReleaseVersion() {
List<ReleaseVersion> versions = findAll();
TreeSet<String> set = new TreeSet<>();
for(ReleaseVersion rv: versions) {
set.add(rv.getReleaseVersion());
}
log.debug("Return most current Release Version: " + set.pollFirst());
return getByName(set.pollLast());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class S3Syncer {

public static void main(String[] args) {
ConfigHelper.init();
boolean reportonly = false;

S3Helper s3 = new S3Helper();

Expand Down Expand Up @@ -39,12 +40,14 @@ public static void main(String[] args) {
System.out.println("List to Copy: " + copyList.size());
System.out.println("List to Delete: " + deleteList.size());

for(String s: copyList) {
s3.copyObject(s, srcBucket, dstBucket);
}

for(String s: deleteList) {
s3.deleteObject(s, dstBucket);
if(!reportonly) {
for(String s: copyList) {
s3.copyObject(s, srcBucket, dstBucket);
}

for(String s: deleteList) {
s3.deleteObject(s, dstBucket);
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
import org.alliancegenome.agr_submission.dao.DataFileDAO;
import org.alliancegenome.agr_submission.dao.DataSubTypeDAO;
import org.alliancegenome.agr_submission.dao.DataTypeDAO;
import org.alliancegenome.agr_submission.dao.ReleaseVersionDAO;
import org.alliancegenome.agr_submission.dao.SchemaVersionDAO;
import org.alliancegenome.agr_submission.entities.DataFile;
import org.alliancegenome.agr_submission.entities.DataSubType;
import org.alliancegenome.agr_submission.entities.DataType;
import org.alliancegenome.agr_submission.entities.ReleaseVersion;
import org.alliancegenome.agr_submission.entities.SchemaVersion;
import org.alliancegenome.agr_submission.exceptions.GenericException;
import org.alliancegenome.agr_submission.exceptions.SchemaDataTypeException;
Expand All @@ -39,7 +41,7 @@
public class SubmissionService {

//@Inject private SnapShotDAO snapShotDAO;
//@Inject private ReleaseVersionDAO releaseDAO;
@Inject private ReleaseVersionDAO releaseVersionDAO;
@Inject private DataFileDAO dataFileDAO;
@Inject private SchemaVersionDAO schemaVersionDAO;
@Inject private DataTypeDAO dataTypeDAO;
Expand All @@ -54,30 +56,32 @@ public boolean submitAndValidateDataFile(String key, File inFile, boolean saveFi
// Split the keys by underscore
String[] keys = key.split("_");

String schemaLookup;
String releaseLookup;
String dataTypeLookup;
String dataSubTypeLookup;

if(keys.length == 3) {
log.debug("Key has 3 items: parse: (Schema-DataType-DataSubType): " + key);
schemaLookup = keys[0];
releaseLookup = keys[0];
dataTypeLookup = keys[1];
dataSubTypeLookup = keys[2];
} else if(keys.length == 2) { // DataType-TaxonId // Input a taxonId datatype file and validate against latest version of schema
log.debug("Key has 2 items: parse: (DataType-DataSubType): " + key);
schemaLookup = null;
releaseLookup = null;
dataTypeLookup = keys[0];
dataSubTypeLookup = keys[1];
} else {
throw new ValidataionException("Wrong Number of Args for File Data: " + key);
}


SchemaVersion schemaVersion = getSchemaVersion(schemaLookup);
SchemaVersion schemaVersion = getSchemaVersionFromReleaseVersion(releaseLookup);

DataType dataType = dataTypeDAO.findByField("name", dataTypeLookup);
DataSubType dataSubType = dataSubTypeDAO.findByField("name", dataSubTypeLookup);

if(schemaVersion == null) {
throw new SchemaDataTypeException("Could not Find schemaVersion: " + schemaLookup);
throw new SchemaDataTypeException("Could not Find releaseLookup: " + releaseLookup);
}
if(dataType == null) {
throw new SchemaDataTypeException("Could not Find dataType: " + dataTypeLookup);
Expand Down Expand Up @@ -139,6 +143,25 @@ private boolean validateData(SchemaVersion schemaVersionName, DataType dataType,
}

}

private SchemaVersion getSchemaVersionFromReleaseVersion(String releaseVersion) throws ValidataionException {
if(releaseVersion == null) {
ReleaseVersion rv = releaseVersionDAO.getCurrentReleaseVersion();
if(rv.getSchemaVersions().size() == 0) {
throw new ValidataionException("No Schema Versions found for Release Version: " + rv.getReleaseVersion());
}
return rv.getSchemaVersions().get(0);
} else {
ReleaseVersion rv = releaseVersionDAO.getByName(releaseVersion);
if(rv == null) {
throw new ValidataionException("Release Version not found: " + releaseVersion);
}
if(rv.getSchemaVersions().size() == 0) {
throw new ValidataionException("No Schema Versions found for Release Version: " + releaseVersion);
}
return rv.getSchemaVersions().get(0);
}
}

private SchemaVersion getSchemaVersion(String schemaString) throws ValidataionException {
if(schemaString == null) {
Expand Down

0 comments on commit 7cee817

Please sign in to comment.