|
@@ -17,7 +17,6 @@ import org.elasticsearch.common.xcontent.ConstructingObjectParser;
|
|
|
import org.elasticsearch.common.xcontent.ToXContentObject;
|
|
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
|
|
import org.elasticsearch.common.xcontent.XContentParser;
|
|
|
-import org.elasticsearch.index.query.MatchAllQueryBuilder;
|
|
|
import org.elasticsearch.xpack.core.dataframe.DataFrameField;
|
|
|
import org.elasticsearch.xpack.core.dataframe.DataFrameMessages;
|
|
|
import org.elasticsearch.xpack.core.dataframe.transforms.pivot.PivotConfig;
|
|
@@ -38,7 +37,6 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
|
|
|
public static final String NAME = "data_frame_transform_config";
|
|
|
public static final ParseField HEADERS = new ParseField("headers");
|
|
|
- public static final ParseField QUERY = new ParseField("query");
|
|
|
|
|
|
// types of transforms
|
|
|
public static final ParseField PIVOT_TRANSFORM = new ParseField("pivot");
|
|
@@ -47,14 +45,13 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
private static final ConstructingObjectParser<DataFrameTransformConfig, String> LENIENT_PARSER = createParser(true);
|
|
|
|
|
|
private final String id;
|
|
|
- private final String source;
|
|
|
- private final String dest;
|
|
|
+ private final SourceConfig source;
|
|
|
+ private final DestConfig dest;
|
|
|
|
|
|
// headers store the user context from the creating user, which allows us to run the transform as this user
|
|
|
// the header only contains name, groups and other context but no authorization keys
|
|
|
private Map<String, String> headers;
|
|
|
|
|
|
- private final QueryConfig queryConfig;
|
|
|
private final PivotConfig pivotConfig;
|
|
|
|
|
|
private static ConstructingObjectParser<DataFrameTransformConfig, String> createParser(boolean lenient) {
|
|
@@ -70,8 +67,8 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
DataFrameMessages.getMessage(DataFrameMessages.REST_PUT_DATA_FRAME_INCONSISTENT_ID, id, optionalId));
|
|
|
}
|
|
|
|
|
|
- String source = (String) args[1];
|
|
|
- String dest = (String) args[2];
|
|
|
+ SourceConfig source = (SourceConfig) args[1];
|
|
|
+ DestConfig dest = (DestConfig) args[2];
|
|
|
|
|
|
// ignored, only for internal storage: String docType = (String) args[3];
|
|
|
|
|
@@ -83,26 +80,16 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
@SuppressWarnings("unchecked")
|
|
|
Map<String, String> headers = (Map<String, String>) args[4];
|
|
|
|
|
|
- // default handling: if the user does not specify a query, we default to match_all
|
|
|
- QueryConfig queryConfig = null;
|
|
|
- if (args[5] == null) {
|
|
|
- queryConfig = new QueryConfig(Collections.singletonMap(MatchAllQueryBuilder.NAME, Collections.emptyMap()),
|
|
|
- new MatchAllQueryBuilder());
|
|
|
- } else {
|
|
|
- queryConfig = (QueryConfig) args[5];
|
|
|
- }
|
|
|
-
|
|
|
- PivotConfig pivotConfig = (PivotConfig) args[6];
|
|
|
- return new DataFrameTransformConfig(id, source, dest, headers, queryConfig, pivotConfig);
|
|
|
+ PivotConfig pivotConfig = (PivotConfig) args[5];
|
|
|
+ return new DataFrameTransformConfig(id, source, dest, headers, pivotConfig);
|
|
|
});
|
|
|
|
|
|
parser.declareString(optionalConstructorArg(), DataFrameField.ID);
|
|
|
- parser.declareString(constructorArg(), DataFrameField.SOURCE);
|
|
|
- parser.declareString(constructorArg(), DataFrameField.DESTINATION);
|
|
|
+ parser.declareObject(constructorArg(), (p, c) -> SourceConfig.fromXContent(p, lenient), DataFrameField.SOURCE);
|
|
|
+ parser.declareObject(constructorArg(), (p, c) -> DestConfig.fromXContent(p, lenient), DataFrameField.DESTINATION);
|
|
|
|
|
|
parser.declareString(optionalConstructorArg(), DataFrameField.INDEX_DOC_TYPE);
|
|
|
parser.declareObject(optionalConstructorArg(), (p, c) -> p.mapStrings(), HEADERS);
|
|
|
- parser.declareObject(optionalConstructorArg(), (p, c) -> QueryConfig.fromXContent(p, lenient), QUERY);
|
|
|
parser.declareObject(optionalConstructorArg(), (p, c) -> PivotConfig.fromXContent(p, lenient), PIVOT_TRANSFORM);
|
|
|
|
|
|
return parser;
|
|
@@ -113,15 +100,13 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
}
|
|
|
|
|
|
public DataFrameTransformConfig(final String id,
|
|
|
- final String source,
|
|
|
- final String dest,
|
|
|
+ final SourceConfig source,
|
|
|
+ final DestConfig dest,
|
|
|
final Map<String, String> headers,
|
|
|
- final QueryConfig queryConfig,
|
|
|
final PivotConfig pivotConfig) {
|
|
|
this.id = ExceptionsHelper.requireNonNull(id, DataFrameField.ID.getPreferredName());
|
|
|
this.source = ExceptionsHelper.requireNonNull(source, DataFrameField.SOURCE.getPreferredName());
|
|
|
this.dest = ExceptionsHelper.requireNonNull(dest, DataFrameField.DESTINATION.getPreferredName());
|
|
|
- this.queryConfig = ExceptionsHelper.requireNonNull(queryConfig, QUERY.getPreferredName());
|
|
|
this.setHeaders(headers == null ? Collections.emptyMap() : headers);
|
|
|
this.pivotConfig = pivotConfig;
|
|
|
|
|
@@ -133,10 +118,9 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
|
|
|
public DataFrameTransformConfig(final StreamInput in) throws IOException {
|
|
|
id = in.readString();
|
|
|
- source = in.readString();
|
|
|
- dest = in.readString();
|
|
|
+ source = new SourceConfig(in);
|
|
|
+ dest = new DestConfig(in);
|
|
|
setHeaders(in.readMap(StreamInput::readString, StreamInput::readString));
|
|
|
- queryConfig = in.readOptionalWriteable(QueryConfig::new);
|
|
|
pivotConfig = in.readOptionalWriteable(PivotConfig::new);
|
|
|
}
|
|
|
|
|
@@ -144,11 +128,11 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
return id;
|
|
|
}
|
|
|
|
|
|
- public String getSource() {
|
|
|
+ public SourceConfig getSource() {
|
|
|
return source;
|
|
|
}
|
|
|
|
|
|
- public String getDestination() {
|
|
|
+ public DestConfig getDestination() {
|
|
|
return dest;
|
|
|
}
|
|
|
|
|
@@ -164,30 +148,20 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
return pivotConfig;
|
|
|
}
|
|
|
|
|
|
- public QueryConfig getQueryConfig() {
|
|
|
- return queryConfig;
|
|
|
- }
|
|
|
-
|
|
|
public boolean isValid() {
|
|
|
- // collect validation results from all child objects
|
|
|
- if (queryConfig != null && queryConfig.isValid() == false) {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
if (pivotConfig != null && pivotConfig.isValid() == false) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
+ return source.isValid() && dest.isValid();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void writeTo(final StreamOutput out) throws IOException {
|
|
|
out.writeString(id);
|
|
|
- out.writeString(source);
|
|
|
- out.writeString(dest);
|
|
|
+ source.writeTo(out);
|
|
|
+ dest.writeTo(out);
|
|
|
out.writeMap(headers, StreamOutput::writeString, StreamOutput::writeString);
|
|
|
- out.writeOptionalWriteable(queryConfig);
|
|
|
out.writeOptionalWriteable(pivotConfig);
|
|
|
}
|
|
|
|
|
@@ -197,9 +171,6 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
builder.field(DataFrameField.ID.getPreferredName(), id);
|
|
|
builder.field(DataFrameField.SOURCE.getPreferredName(), source);
|
|
|
builder.field(DataFrameField.DESTINATION.getPreferredName(), dest);
|
|
|
- if (queryConfig != null) {
|
|
|
- builder.field(QUERY.getPreferredName(), queryConfig);
|
|
|
- }
|
|
|
if (pivotConfig != null) {
|
|
|
builder.field(PIVOT_TRANSFORM.getPreferredName(), pivotConfig);
|
|
|
}
|
|
@@ -230,13 +201,12 @@ public class DataFrameTransformConfig extends AbstractDiffable<DataFrameTransfor
|
|
|
&& Objects.equals(this.source, that.source)
|
|
|
&& Objects.equals(this.dest, that.dest)
|
|
|
&& Objects.equals(this.headers, that.headers)
|
|
|
- && Objects.equals(this.queryConfig, that.queryConfig)
|
|
|
&& Objects.equals(this.pivotConfig, that.pivotConfig);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int hashCode() {
|
|
|
- return Objects.hash(id, source, dest, headers, queryConfig, pivotConfig);
|
|
|
+ public int hashCode(){
|
|
|
+ return Objects.hash(id, source, dest, headers, pivotConfig);
|
|
|
}
|
|
|
|
|
|
@Override
|