DYFILegacyStorage.java

package gov.usgs.earthquake.dyfi;

import gov.usgs.earthquake.distribution.FileProductStorage;
import gov.usgs.earthquake.product.ProductId;

import java.io.File;

/**
 * Storage class used by DYFIIndexerWedge.
 */
@Deprecated
public class DYFILegacyStorage extends FileProductStorage {

	@Override
	public String getProductPath(ProductId id) {
		StringBuffer path = new StringBuffer();
		String fs = System.getProperty("file.separator");

		path.append(id.getCode().substring(0, 2)).append(fs); // Legacy network
		path.append(id.getCode().substring(2)).append(fs);    // Legacy code
		path.append(id.getSource());
		
		return path.toString();
	}
	
	@Override
	public boolean hasProduct(ProductId id) throws Exception {
		
		File productDir = new File(getBaseDirectory(), getProductPath(id));
		boolean hasProduct = false;
		
		if (productDir.exists()) {
		
			// Legacy storage only keeps most recent product. So can't just check
			// for directory existence since this may be from an earlier version.
			// Check version to make sure incoming product is newer than current.
			ProductId storedProduct = getProduct(id).getId();
			
			int status = id.compareTo(storedProduct);
			
			if (status == 0) {
				// Equal product id we already have product
				hasProduct = true;
			} else if (status > 0) {
				// This product is newer than stored product. We don't have this yet
				hasProduct = false;
			} else if (status < 0) {
				// This product is older than stored product. Skip it.
				hasProduct = true;
			}
		}
		
		return hasProduct;
	}
}