com.treasuredata.client.model.TDJob Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.treasuredata.client.model;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
import com.google.common.base.Function;
import com.google.common.base.Optional;
/**
*
*/
public class TDJob
{
public static enum Type
{
HIVE("hive"), MAPRED("mapred"), PRESTO("presto"), PIG("pig"), BULKLOAD("bulkload"), EXPORT("export"), UNKNOWN("none");
private final String type;
private Type(String type)
{
this.type = type;
}
@JsonValue
public String getType()
{
return type;
}
@Override
public String toString()
{
return type;
}
@JsonCreator
public static Type fromString(String typeName)
{
for (Type t : values()) {
if (t.type.equals(typeName)) {
return t;
}
}
return UNKNOWN;
}
}
public static enum Priority
{
VERYLOW(-2), LOW(-1), NORMAL(0), HIGH(1), VERYHIGH(2);
private final int priority;
private Priority(int priority)
{
this.priority = priority;
}
public int toInt()
{
return priority;
}
public static Priority fromInt(int priority)
{
for (Priority p : values()) {
if (p.priority == priority) {
return p;
}
}
// For unknown property value, returns the default value NORMAL
return NORMAL;
}
}
public static enum Status
{
QUEUED, BOOTING, RUNNING, SUCCESS, ERROR, KILLED, UNKNOWN;
@JsonCreator
public static Status fromString(String s)
{
return valueOf(s.toUpperCase());
}
public boolean isFinished()
{
return this == SUCCESS ||
this == ERROR ||
this == KILLED;
}
}
private static class Debug
{
private final Optional cmdout;
private final Optional stderr;
@JsonCreator
public Debug(@JsonProperty("cmdout") Optional cmdout, @JsonProperty("stderr") Optional stderr)
{
this.cmdout = cmdout;
this.stderr = stderr;
}
public String getCmdout()
{
return cmdout.or("");
}
public String getStderr()
{
return stderr.or("");
}
@Override
public String toString()
{
return "Debug{" +
"cmdout='" + cmdout + '\'' +
", stderr='" + stderr + '\'' +
'}';
}
}
private final String jobId;
private final Status status;
private final Type type;
private final String query;
private final String createdAt;
private final String startAt;
private final String updatedAt;
private final String endAt;
private final Optional resultSchema; // only for Hive
private final String database;
private final String result;
private final String url;
private final String userName;
private final long duration;
private final long resultSize;
private final Optional debug;
private final long numRecords;
@JsonCreator
static TDJob createTDJobV3(
@JsonProperty("job_id") String jobId,
@JsonProperty("status") Status status,
@JsonProperty("type") Type type,
@JsonProperty("query") TDQuery query,
@JsonProperty("created_at") String createdAt,
@JsonProperty("start_at") String startAt,
@JsonProperty("updated_at") String updatedAt,
@JsonProperty("end_at") String endAt,
@JsonProperty("hive_result_schema") Optional resultSchema,
@JsonProperty("database") String database,
@JsonProperty("result") String result,
@JsonProperty("url") String url,
@JsonProperty("user_name") String userName,
@JsonProperty("duration") long duration,
@JsonProperty("result_size") long resultSize,
@JsonProperty("debug") Optional debug,
@JsonProperty("num_records") long numRecords)
{
return new TDJob(jobId, status, type, query.getQuery(), createdAt, startAt, updatedAt, endAt, resultSchema, database, result, url, userName, duration, resultSize, debug, numRecords);
}
public TDJob(String jobId,
Status status,
Type type,
String query,
String createdAt,
String startAt,
String updatedAt,
String endAt,
Optional resultSchema,
String database,
String result,
String url,
String userName,
long duration,
long resultSize,
Optional debug,
long numRecords
)
{
this.jobId = jobId;
this.status = status;
this.type = type;
this.query = query;
this.createdAt = createdAt;
this.startAt = startAt;
this.updatedAt = updatedAt;
this.endAt = endAt;
this.resultSchema = resultSchema;
this.database = database;
this.result = result;
this.url = url;
this.userName = userName;
this.duration = duration;
this.resultSize = resultSize;
this.debug = debug;
this.numRecords = numRecords;
}
public String getJobId()
{
return jobId;
}
public Status getStatus()
{
return status;
}
public Type getType()
{
return type;
}
public String getQuery()
{
return query;
}
public String getCreatedAt()
{
return createdAt;
}
public String getStartAt()
{
return startAt;
}
public String getEndAt()
{
return endAt;
}
public Optional getResultSchema()
{
return resultSchema;
}
public String getDatabase()
{
return database;
}
public String getResult()
{
return result;
}
public String getUrl()
{
return url;
}
public String getUserName()
{
return userName;
}
public long getDuration()
{
return duration;
}
public long getResultSize()
{
return resultSize;
}
public Optional getDebug()
{
return debug;
}
public long getNumRecords()
{
return numRecords;
}
/**
* A short cut for reading cmdout message
*
* @return
*/
public String getCmdOut()
{
return debug.transform(new Function()
{
@Override
public String apply(Debug input)
{
return input.getCmdout();
}
}).or("");
}
/**
* A short cut for reading stderr messsage
*
* @return
*/
public String getStdErr()
{
return debug.transform(new Function()
{
@Override
public String apply(Debug input)
{
return input.getStderr();
}
}).or("");
}
@Override
public String toString()
{
return "TDJob{" +
"jobId='" + jobId + '\'' +
", status=" + status +
", type=" + type +
", query=" + query +
", createdAt='" + createdAt + '\'' +
", startAt='" + startAt + '\'' +
", updatedAt='" + updatedAt + '\'' +
", endAt='" + endAt + '\'' +
", resultSchema=" + resultSchema +
", database='" + database + '\'' +
", result='" + result + '\'' +
", url='" + url + '\'' +
", userName='" + userName + '\'' +
", duration=" + duration +
", resultSize=" + resultSize +
", debug=" + debug +
", numRecords=" + numRecords +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy