All Downloads are FREE. Search and download functionalities are using the official Maven repository.

water.api.DownloadDataHandler Maven / Gradle / Ivy

package water.api;

import water.DKV;
import water.exceptions.H2OKeyNotFoundArgumentException;
import water.fvec.Frame;
import water.H2O; 

import java.io.InputStream;

public class DownloadDataHandler extends Handler { // TODO: recursive generics seem to prevent more specific types here

  @SuppressWarnings("unused") // called through reflection by RequestServer
  public DownloadDataV3 fetch(int version, DownloadDataV3 server) {

    if (DKV.get(server.frame_id.key()) == null) throw new H2OKeyNotFoundArgumentException("key", server.frame_id.key());
    Frame value = server.frame_id.key().get();
    InputStream is = value.toCSV(true, server.hex_string);
    java.util.Scanner scanner = new java.util.Scanner(is).useDelimiter("\\A");
    server.csv = (scanner.hasNext() ? scanner.next() : "");

    // Clean up Key name back to something resembling a file system name.  Hope
    // the user's browser actually asks for what to do with the suggested
    // filename.  Without this code, my FireFox would claim something silly
    // like "no helper app installed", then fail the download.
    String s = server.frame_id.toString();
    int x = s.length()-1;
    boolean dot=false;
    for( ; x >= 0; x-- )
      if( !Character.isLetterOrDigit(s.charAt(x)) && s.charAt(x)!='_' )
        if( s.charAt(x)=='.' && !dot ) dot=true;
        else break;
    String suggested_fname = s.substring(x+1).replace(".hex", ".csv");
    if( !suggested_fname.endsWith(".csv") )
      suggested_fname = suggested_fname+".csv";
    server.filename = suggested_fname;
    return server;
  }

  @SuppressWarnings("unused")
  public DownloadDataV3 fetchStreaming(int version, DownloadDataV3 server) {
    throw H2O.fail("Function fetchStreaming should never be called.");
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy