Upload working
This commit is contained in:
@@ -16,6 +16,7 @@ import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -44,6 +45,7 @@ import com.bayer.edam.migration.adam.ClassificationList;
|
||||
import com.bayer.edam.migration.adam.EntityId;
|
||||
import com.bayer.edam.migration.adam.Token;
|
||||
import com.bayer.edam.migration.adam.UploadClassification;
|
||||
import com.bayer.edam.migration.adam.UploadFileRecord;
|
||||
import com.bayer.edam.migration.adam.UploadRecord;
|
||||
import com.bayer.edam.migration.adam.UploadRecord.WriteClassification;
|
||||
import com.bayer.edam.migration.adam.UploadResult;
|
||||
@@ -163,6 +165,14 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
postToAdam(entry);
|
||||
}
|
||||
|
||||
while (openUploads.size() > 0) {
|
||||
log.debug("Sleeping...");
|
||||
TimeUnit.SECONDS.sleep(10); // XXX
|
||||
|
||||
log.debug("Checking back on open uploads");
|
||||
attachOpenUploads();
|
||||
}
|
||||
|
||||
invalidateAdamToken();
|
||||
}
|
||||
|
||||
@@ -361,7 +371,7 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
}
|
||||
|
||||
if (entry.creationDate != null)
|
||||
record.addField("byr_ah_deliveryDate", isoDate.format(entry.creationDate));
|
||||
record.addField("byr_ah_releaseDate", isoDate.format(entry.creationDate));
|
||||
|
||||
if (entry.metaData.get("photographer") != null)
|
||||
record.addField("byr_ah_photographer", entry.metaData.get("photographer"));
|
||||
@@ -456,10 +466,9 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
URI location = restTemplate.postForLocation(Definitions.adamHost + "/records", httpEntity, UploadRecord.class);
|
||||
log.info("RESULT Entry " + entry.id + " migrated to record " + location);
|
||||
|
||||
// XXX
|
||||
uploadFilesForEntry(entry, location);
|
||||
|
||||
// TODO process file upload errors
|
||||
// TODO process file upload errors(?)
|
||||
|
||||
log.info("FINAL " + entry.id + fieldSeparator + location.toString() + fieldSeparator + entryJson);
|
||||
}
|
||||
@@ -526,6 +535,7 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
}
|
||||
|
||||
// Instead of downloading from MAM, take the pre-downloaded files from the harddrive
|
||||
boolean isMaster = true;
|
||||
for (File file : filesForUpload) {
|
||||
if (file.exists()) {
|
||||
if (file.length() < 4000000000L) {
|
||||
@@ -538,13 +548,22 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
new HttpEntity<MultiValueMap<String, Object>>(parameters, adamUploadHeaders), UploadResult.class).getBody();
|
||||
|
||||
if (result.token != null) {
|
||||
// TODO
|
||||
|
||||
log.debug("Token: " + result.token);
|
||||
log.debug("Storing upload token " + result.token);
|
||||
UploadReference reference = new UploadReference();
|
||||
reference.targetRecord = recordLocation;
|
||||
// reference.isMaster = isMaster;
|
||||
reference.token = result.token;
|
||||
reference.filename = file.getName();
|
||||
openUploads.add(reference);
|
||||
}
|
||||
else if (result.uri != null) {
|
||||
log.debug("Storing upload reference URI " + result.uri);
|
||||
openUploads.add(new UploadReference(recordLocation, result.uri));
|
||||
UploadReference reference = new UploadReference();
|
||||
reference.targetRecord = recordLocation;
|
||||
// reference.isMaster = isMaster;
|
||||
reference.uri = result.uri;
|
||||
reference.filename = file.getName();
|
||||
openUploads.add(reference);
|
||||
}
|
||||
else {
|
||||
log.error("No token/URI after upload!");
|
||||
@@ -560,9 +579,49 @@ public class MamMigrationSelective implements CommandLineRunner {
|
||||
else {
|
||||
log.error("Could not find file on disk " + file.getAbsolutePath());
|
||||
}
|
||||
|
||||
isMaster = false;
|
||||
}
|
||||
|
||||
|
||||
// attach uploaded files to records where possible
|
||||
attachOpenUploads();
|
||||
|
||||
}
|
||||
|
||||
private void attachOpenUploads() {
|
||||
List<UploadReference> processedReferences = new ArrayList<UploadReference>();
|
||||
|
||||
for (UploadReference reference : openUploads) {
|
||||
if (reference.token != null) {
|
||||
UploadFileRecord fileRecord = new UploadFileRecord();
|
||||
fileRecord.addFile(reference.token, reference.filename);
|
||||
|
||||
log.debug("Attach uploaded file to " + reference.targetRecord);
|
||||
HttpEntity<UploadFileRecord> httpEntity = new HttpEntity<UploadFileRecord>(fileRecord, adamHeaders);
|
||||
restTemplate.exchange(Definitions.adamHost + reference.targetRecord, HttpMethod.PUT, httpEntity, UploadFileRecord.class);
|
||||
|
||||
processedReferences.add(reference);
|
||||
}
|
||||
else {
|
||||
log.debug("Checking status of upload " + reference.filename + " at " + reference.uri);
|
||||
UploadResult result = restTemplate.exchange(Definitions.adamHost + reference.uri, HttpMethod.GET, adamHeadersEntity, UploadResult.class).getBody();
|
||||
log.debug("Result: " + result);
|
||||
|
||||
if (result.token != null) {
|
||||
log.debug("Storing upload token " + result.token);
|
||||
reference.uri = null;
|
||||
reference.token = result.token;
|
||||
}
|
||||
else if (result.status != null) {
|
||||
if (result.status.equals("Error")) {
|
||||
log.error("System could not process file " + reference.filename + " for " + reference.targetRecord);
|
||||
processedReferences.add(reference);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
openUploads.removeAll(processedReferences);
|
||||
}
|
||||
|
||||
private File getFileForEntry(Download download, Long id) throws IOException {
|
||||
|
||||
Reference in New Issue
Block a user