package com.thinkbiganalytics.feedmgr.rest.model; /*- * #%L * thinkbig-feed-manager-rest-model * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed 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. * #L% */ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.thinkbiganalytics.metadata.MetadataField; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * A Spark script for transforming data. */ @JsonIgnoreProperties(ignoreUnknown = true) public class FeedDataTransformation { /** * Model for the flowchart */ private Map<String, Object> chartViewModel; /** * List of required datasource ids */ private List<String> datasourceIds; /** * Spark script */ @MetadataField(description = "The Data Transformation Spark Script") private String dataTransformScript; /** * SQL query */ private String sql; /** * List of Spark Shell states */ private List<Map<String, Object>> states; /** * Gets the model for the flowchart. * * @return the model for the flowchart */ public Map<String, Object> getChartViewModel() { return chartViewModel; } /** * Sets the model for the flowchart. * * @param chartViewModel the model for the flowchart */ public void setChartViewModel(Map<String, Object> chartViewModel) { this.chartViewModel = chartViewModel; } public List<String> getDatasourceIds() { return datasourceIds; } public void setDatasourceIds(List<String> datasourceIds) { this.datasourceIds = datasourceIds; } /** * Gets the Spark script. * * @return the Spark script */ public String getDataTransformScript() { return dataTransformScript; } /** * Sets the Spark script. * * @param dataTransformScript the Spark script */ public void setDataTransformScript(String dataTransformScript) { this.dataTransformScript = dataTransformScript; } /** * Gets the SQL query. * * @return the SQL query */ public String getSql() { return sql; } /** * Sets the SQL query. * * @param sql the SQL query */ public void setSql(String sql) { this.sql = sql; } /** * Gets the Spark Shell states. * * @return the Spark Shell states */ public List<Map<String, Object>> getStates() { return states; } /** * Sets the Spark Shell states. * * @param states the Spark Shell states */ public void setStates(List<Map<String, Object>> states) { this.states = states; } @JsonIgnore public Set<String> getTableNamesFromViewModel() { Set<String> tables = new HashSet<>(); if (chartViewModel != null) { Collection<Map<String, Object>> nodes = (Collection<Map<String, Object>>) chartViewModel.get("nodes"); if (nodes != null) { tables = nodes.stream().map(node -> (String) node.get("name")).collect(Collectors.toSet()); } } return tables; } }