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;
  }
}