ArchiveThread.java [tools/GetWEPSArchives/src/getwepsarchives] Revision: 9dcb3b44db55af519bf259752ee68b9d483e9f15 Date: Fri Jan 10 11:01:31 MST 2020
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package getwepsarchives;
import archives.MongoArchive;
import csip.ServiceException;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.logging.Logger;
import models.ModelArchive;
import models.WEPSModelArchive;
import models.WEPSModelArchive.WEPSMetaData;
/**
*
* @author <a href="mailto:shaun.case@colostate.edu">Shaun Case</a>
*/
public class ArchiveThread extends Thread {
protected String suid;
protected CountDownLatch latch;
protected String dbLocation;
protected MongoArchive mongoArchive;
protected ArrayList<ModelArchive> tArchive;
protected ModelArchive model;
protected String errorMessage;
protected WEPSMetaData wepsMetaData;
ConcurrentHashMap<String, WEPSMetaData> metaDataResults;
public ArchiveThread(String _suid, String _dbLocation, ConcurrentHashMap<String, WEPSMetaData> _metaDataResults, CountDownLatch _latch) throws Exception {
suid = _suid;
latch = _latch;
dbLocation = _dbLocation;
metaDataResults = _metaDataResults;
if (dbLocation.contains("mongodb://")) {
mongoArchive = new MongoArchive(dbLocation);
}
}
@Override
public void run() {
try {
tArchive = mongoArchive.getArchivesByFilter("_id", suid, 1);
} catch (Exception ex) {
errorMessage += "#\nCannot get that suid, " + suid + ", from the archive: " + ex.getMessage() + "\n\n" + ex.toString();
}
if (tArchive.isEmpty()) {
errorMessage += "#\nCould not find a WEPS model in the archive for that suid and mongodb location.";
} else {
model = tArchive.get(0);
if (((WEPSModelArchive) model).badModelRun()) {
errorMessage += "#\nFound a WEPS model in the archive, however the model was invalid: " + ((WEPSModelArchive) model).badModelMessage();
} else {
((WEPSModelArchive) model).calcWEPSMetaData();
try {
mongoArchive.shutdown();
} catch (Exception ex) {
errorMessage += "#\nCould not shutdown mongo archive at: " + dbLocation + "\n\n" + ex.toString();
}
wepsMetaData = ((WEPSModelArchive) model).getWEPSMetaData();
if ((null != wepsMetaData) && (null != metaDataResults)) {
metaDataResults.put(suid, wepsMetaData);
}
}
}
if ((null != errorMessage) && !errorMessage.isEmpty()) {
System.err.println(suid + ": " + errorMessage);
}
latch.countDown();
}
}