package edu.washington.escience.myria.api.encoding; import java.util.List; import javax.ws.rs.core.Response.Status; import edu.washington.escience.myria.RelationKey; import edu.washington.escience.myria.accessmethod.AccessMethod.IndexRef; import edu.washington.escience.myria.api.MyriaApiException; import edu.washington.escience.myria.operator.network.distribute.DistributeFunction; import edu.washington.escience.myria.operator.network.distribute.RoundRobinDistributeFunction; import edu.washington.escience.myria.util.FSUtils; public class TipsyDatasetEncoding extends MyriaApiEncoding { @Required public RelationKey relationKey; @Required public String tipsyFilename; @Required public String grpFilename; @Required public String iorderFilename; public List<Integer> workers; public List<List<IndexRef>> indexes; public DistributeFunction distributeFunction = new RoundRobinDistributeFunction(); @Override public void validateExtra() { /* Note we can only do this because we know that the operator will be run on the master. So we can't do this e.g. * for TipsyFileScan because that might be run on a worker. */ try { FSUtils.checkFileReadable(tipsyFilename); FSUtils.checkFileReadable(grpFilename); FSUtils.checkFileReadable(iorderFilename); } catch (Exception e) { throw new MyriaApiException(Status.BAD_REQUEST, e); } } }