package mil.nga.giat.geowave.service.client;
import java.io.File;
import java.io.FileNotFoundException;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import mil.nga.giat.geowave.service.IngestService;
import org.glassfish.jersey.client.proxy.WebResourceFactory;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
public class IngestServiceClient
{
private final IngestService ingestService;
public IngestServiceClient(
final String baseUrl ) {
ingestService = WebResourceFactory.newResource(
IngestService.class,
ClientBuilder.newBuilder().register(
MultiPartFeature.class).build().target(
baseUrl));
}
public boolean localIngest(
final File[] inputFiles,
final String storeName,
final String namespace )
throws FileNotFoundException {
return localIngest(
inputFiles,
storeName,
namespace,
null,
null,
null,
false);
};
public boolean localIngest(
final File[] inputFiles,
final String storeName,
final String namespace,
final String visibility )
throws FileNotFoundException {
return localIngest(
inputFiles,
storeName,
namespace,
visibility,
null,
null,
false);
};
public boolean localIngest(
final File[] inputFiles,
final String storeName,
final String namespace,
final String visibility,
final String ingestFormat,
final String dimType,
final boolean clear )
throws FileNotFoundException {
final FormDataMultiPart multiPart = new FormDataMultiPart();
for (final File file : inputFiles) {
multiPart.bodyPart(new FileDataBodyPart(
"file",
file));
}
multiPart.field(
"store",
storeName);
multiPart.field(
"namespace",
namespace);
if (visibility != null) {
multiPart.field(
"visibility",
visibility);
}
if (ingestFormat != null) {
multiPart.field(
"ingestFormat",
ingestFormat);
}
if (dimType != null) {
multiPart.field(
"dimType",
dimType);
}
if (clear) {
multiPart.field(
"clear",
Boolean.toString(clear));
}
final Response resp = ingestService.localIngest(multiPart);
return resp.getStatus() == Status.OK.getStatusCode();
}
public boolean hdfsIngest(
final File[] inputFiles,
final String storeName,
final String namespace )
throws FileNotFoundException {
return hdfsIngest(
inputFiles,
storeName,
namespace,
null,
null,
null,
false);
};
public boolean hdfsIngest(
final File[] inputFiles,
final String storeName,
final String namespace,
final String visibility )
throws FileNotFoundException {
return hdfsIngest(
inputFiles,
storeName,
namespace,
visibility,
null,
null,
false);
};
public boolean hdfsIngest(
final File[] inputFiles,
final String storeName,
final String namespace,
final String visibility,
final String ingestFormat,
final String dimType,
final boolean clear )
throws FileNotFoundException {
final FormDataMultiPart multiPart = new FormDataMultiPart();
for (final File file : inputFiles) {
multiPart.bodyPart(new FileDataBodyPart(
"file",
file));
}
multiPart.field(
"namespace",
namespace);
multiPart.field(
"store",
storeName);
if (visibility != null) {
multiPart.field(
"visibility",
visibility);
}
if (ingestFormat != null) {
multiPart.field(
"ingestFormat",
ingestFormat);
}
if (dimType != null) {
multiPart.field(
"dimType",
dimType);
}
if (clear) {
multiPart.field(
"clear",
Boolean.toString(clear));
}
final Response resp = ingestService.hdfsIngest(multiPart);
return resp.getStatus() == Status.OK.getStatusCode();
}
}