
prerna.reactor.task.AutoTaskOptionsHelper Maven / Gradle / Ivy
The newest version!
package prerna.reactor.task;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import prerna.query.querystruct.HardSelectQueryStruct;
import prerna.query.querystruct.SelectQueryStruct;
import prerna.query.querystruct.selectors.IQuerySelector;
import prerna.sablecc2.om.task.BasicIteratorTask;
import prerna.sablecc2.om.task.options.TaskOptions;
public class AutoTaskOptionsHelper {
public static TaskOptions getAutoOptions(SelectQueryStruct qs, String panelId, String layout) {
return getAutoOptions(getSelectorsFromQs(qs), panelId, layout, null);
}
public static TaskOptions getAutoOptions(SelectQueryStruct qs, String panelId, String layout, Map optMap) {
return getAutoOptions(getSelectorsFromQs(qs), panelId, layout, optMap);
}
public static TaskOptions getAutoOptions(BasicIteratorTask task, SelectQueryStruct qs, String panelId, String layout) throws Exception {
return getAutoOptions(task, qs, panelId, layout, null);
}
public static TaskOptions getAutoOptions(BasicIteratorTask task, SelectQueryStruct qs, String panelId, String layout, Map optMap) {
List selectors = null;
if(qs instanceof HardSelectQueryStruct && task != null) {
try {
selectors = Arrays.asList(task.getIterator().getHeaders());
} catch (Exception e) {
throw new IllegalArgumentException("Error in generating iterator", e);
}
} else {
selectors = getSelectorsFromQs(qs);
}
return getAutoOptions(selectors, panelId, layout, optMap);
}
public static TaskOptions getAutoOptions(List selectors, String panelId, String layout) {
return getAutoOptions(selectors, panelId, layout, null);
}
public static TaskOptions getAutoOptions(List selectors, String panelId, String layout, Map optMap) {
Map optionsMap = null;
String findlayout = layout.toUpperCase();
if ("AREA".equals(findlayout)) {
optionsMap = generateMultiValueTaskOptions(selectors, panelId, "Area");
} else if ("BOXWHISKER".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "BoxWhisker");
} else if ("BUBBLE".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Bubble");
} else if ("BULLET".equals(findlayout)) {
optionsMap = generateBulletTaskOptions(selectors, panelId);
}
// TODO CHICLET
// TODO Chloropleth
else if ("COLUMN".equals(findlayout)) {
optionsMap = generateMultiValueTaskOptions(selectors, panelId, "Column");
} else if ("CLOUD".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Cloud");
} else if ("CLUSTER".equals(findlayout)) {
optionsMap = generateClusterTaskOptions(selectors, panelId);
} else if ("DENDROGRAM".equals(findlayout)) {
optionsMap = generateDendrogramTaskOptions(selectors, panelId);
} else if ("FUNNEL".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Funnel");
}
// TODO GANTT
else if ("GAUGE".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Gauge");
} else if ("GRAPH".equals(findlayout)) {
optionsMap = generateGraphTaskOptions(optMap, panelId, "Graph");
} else if ("GRAPHGL".equals(findlayout)) {
optionsMap = generateGraphTaskOptions(optMap, panelId, "GraphGL");
} else if ("GRID".equals(findlayout)) {
optionsMap = generateGridTaskOptions(selectors, panelId);
} else if ("HEATMAP".equals(findlayout)) {
optionsMap = generateHeatMapTaskOptions(selectors, panelId);
} else if ("LINE".equals(findlayout)) {
optionsMap = generateMultiValueTaskOptions(selectors, panelId, "Line");
}
// TODO MAP
else if ("PACK".equals(findlayout)) {
optionsMap = generateMultiGroupTaskOptions(selectors, panelId, "Pack");
} else if ("PARALLELCOORDINATES".equals(findlayout)) {
optionsMap = generateMultiDimensionTaskOptions(selectors, panelId, "ParallelCoordinates");
} else if ("PIE".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Pie");
} else if ("POLAR".equals(findlayout)) {
optionsMap = generateMultiValueTaskOptions(selectors, panelId, "Polar");
} else if ("RADAR".equals(findlayout)) {
optionsMap = generateMultiValueTaskOptions(selectors, panelId, "Radar");
} else if ("RADIAL".equals(findlayout)) {
optionsMap = generateSingleValueTaskOptions(selectors, panelId, "Radial");
} else if ("SCATTER".equals(findlayout)) {
optionsMap = generateScatterTaskOptions(selectors, panelId);
} else if ("SANKEY".equals(findlayout)) {
optionsMap = generateSankeyTaskOptions(selectors, panelId);
} else if ("SCATTERPLOTMATRIX".equals(findlayout)) {
optionsMap = generateMultiDimensionTaskOptions(selectors, panelId, "ScatterplotMatrix");
} else if ("SCATTER3D".equals(findlayout)) {
optionsMap = generateScatter3DTaskOptions(selectors, panelId);
} else if ("SINGLEAXISCLUSTER".equals(findlayout)) {
optionsMap = generateSingleAxisClusterTaskOptions(selectors, panelId);
} else if ("SUNBURST".equals(findlayout)) {
optionsMap = generateMultiGroupTaskOptions(selectors, panelId, "Sunburst");
} else if ("TREEMAP".equals(findlayout)) {
optionsMap = generateTreeMapTaskOptions(selectors, panelId);
} else if ("VIVAGRAP".equals(findlayout)) {
optionsMap = generateGraphTaskOptions(optMap, panelId, "VivaGraph");
} else if ("WATERFALL".equals(findlayout)) {
optionsMap = generateWaterfallTaskOptions(selectors, panelId);
}
if(optionsMap == null) {
return null;
}
return new TaskOptions(optionsMap);
}
public static Map generateWaterfallTaskOptions(SelectQueryStruct qs, String panelId) {
return generateWaterfallTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateTreeMapTaskOptions(SelectQueryStruct qs, String panelId) {
return generateTreeMapTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateSingleAxisClusterTaskOptions(SelectQueryStruct qs, String panelId) {
return generateSingleAxisClusterTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateSankeyTaskOptions(SelectQueryStruct qs, String panelId) {
return generateSankeyTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateMultiDimensionTaskOptions(SelectQueryStruct qs, String panelId, String layout) {
return generateMultiDimensionTaskOptions(getSelectorsFromQs(qs), panelId, layout);
}
public static Map generateMultiGroupTaskOptions(SelectQueryStruct qs, String panelId, String layout) {
return generateMultiGroupTaskOptions(getSelectorsFromQs(qs), panelId, layout);
}
public static Map generateHeatMapTaskOptions(SelectQueryStruct qs, String panelId) {
return generateHeatMapTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateGraphTaskOptions(Map optMap, String panelId, String layout) {
if(optMap == null) {
return null;
}
Map labelMap = new HashMap();
if (optMap.containsKey("connections")) {
String connections = (String) optMap.get("connections");
String[] paths = connections.split(";");
String[] startNodes = new String[paths.length];
String[] endNodes = new String[paths.length];
for (int i = 0; i < paths.length; i++) {
String path = paths[i];
if (path.contains(".")) {
String[] pathVertex = path.split("\\.");
startNodes[i] = pathVertex[0];
endNodes[i] = pathVertex[1];
}
}
labelMap.put("start", startNodes);
labelMap.put("end", endNodes);
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", layout);
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateDendrogramTaskOptions(SelectQueryStruct qs, String panelId) {
return generateDendrogramTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateClusterTaskOptions(SelectQueryStruct qs, String panelId) {
return generateClusterTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateBulletTaskOptions(SelectQueryStruct qs, String panelId) {
return generateBulletTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateGridTaskOptions(SelectQueryStruct qs, String panelId) {
return generateGridTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateSingleValueTaskOptions(SelectQueryStruct qs, String panelId, String layout) {
return generateSingleValueTaskOptions(getSelectorsFromQs(qs), panelId, layout);
}
public static Map generateScatterTaskOptions(SelectQueryStruct qs, String panelId) {
return generateScatterTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateScatter3DTaskOptions(SelectQueryStruct qs, String panelId) {
return generateScatter3DTaskOptions(getSelectorsFromQs(qs), panelId);
}
public static Map generateMultiValueTaskOptions(SelectQueryStruct qs, String panelId, String layout) {
return generateMultiValueTaskOptions(getSelectorsFromQs(qs), panelId, layout);
}
/**
* Flush selectors from qs
* @param qs
* @return
*/
private static List getSelectorsFromQs(SelectQueryStruct qs) {
List qsSelectors = qs.getSelectors();
int size = qsSelectors.size();
List selectors = new ArrayList<>();
for (int i = 0; i < size; i++) {
selectors.add(qsSelectors.get(i).getAlias());
}
return selectors;
}
public static Map generateWaterfallTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("start", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("end", new String[] { selectors.get(2) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Waterfall");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateTreeMapTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("series", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("label", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("size", new String[] { selectors.get(2) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "TreeMap");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateSingleAxisClusterTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("x", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("size", new String[] { selectors.get(2) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "SingleAxisCluster");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateSankeyTaskOptions(List selectors, String panelId) {
int size = selectors.size();
String[] labelArr = new String[size - 1];
String[] valueArr = new String[1];
for (int i = 0; i < size; i++) {
if (i < size - 1) {
labelArr[i] = selectors.get(i);
} else {
valueArr[0] = selectors.get(i);
}
}
Map labelMap = new HashMap();
labelMap.put("label", labelArr);
labelMap.put("value", valueArr);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Sankey");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateMultiDimensionTaskOptions(List selectors, String panelId, String layout) {
int size = selectors.size();
String[] aliasArr = new String[size];
for (int i = 0; i < size; i++) {
aliasArr[i] = selectors.get(i);
}
Map labelMap = new HashMap();
labelMap.put("dimension", aliasArr);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", layout);
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateMultiGroupTaskOptions(List selectors, String panelId, String layout) {
int size = selectors.size();
String[] groupArr = new String[size - 1];
String[] valueArr = new String[1];
for (int i = 0; i < size; i++) {
if (i < size - 1) {
groupArr[i] = selectors.get(i);
} else {
valueArr[0] = selectors.get(i);
}
}
Map labelMap = new HashMap();
labelMap.put("group", groupArr);
labelMap.put("value", valueArr);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", layout);
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateHeatMapTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("x", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("y", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("heat", new String[] { selectors.get(2) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "HeatMap");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateDendrogramTaskOptions(List selectors, String panelId) {
int size = selectors.size();
String[] aliasArr = new String[size];
for (int i = 0; i < size; i++) {
aliasArr[i] = selectors.get(i);
}
Map labelMap = new HashMap();
labelMap.put("dimension", aliasArr);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Dendrogram");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateClusterTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("cluster", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("label", new String[] { selectors.get(1) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Cluster");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateBulletTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("value", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("targetValue", new String[] { selectors.get(2) });
}
if (size >= 4) {
labelMap.put("badMarker", new String[] { selectors.get(3) });
}
if (size >= 5) {
labelMap.put("satisfactoryMarker", new String[] { selectors.get(4) });
}
if (size >= 6) {
labelMap.put("excellentMarker", new String[] { selectors.get(5) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Bullet");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateGridTaskOptions(List selectors, String panelId) {
int size = selectors.size();
String[] aliasArr = new String[size];
for (int i = 0; i < size; i++) {
aliasArr[i] = selectors.get(i);
}
Map labelMap = new HashMap();
labelMap.put("label", aliasArr);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Grid");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateSingleValueTaskOptions(List selectors, String panelId, String layout) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("value", new String[] { selectors.get(1) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", layout);
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateScatterTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("x", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("y", new String[] { selectors.get(2) });
}
if (size >= 4) {
labelMap.put("z", new String[] { selectors.get(3) });
}
if (size >= 5) {
labelMap.put("series", new String[] { selectors.get(4) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Scatter");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateScatter3DTaskOptions(List selectors, String panelId) {
int size = selectors.size();
// grab inputs
Map labelMap = new HashMap();
if (size >= 1) {
labelMap.put("label", new String[] { selectors.get(0) });
}
if (size >= 2) {
labelMap.put("x", new String[] { selectors.get(1) });
}
if (size >= 3) {
labelMap.put("y", new String[] { selectors.get(2) });
}
if (size >= 4) {
labelMap.put("z", new String[] { selectors.get(3) });
}
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", "Scatter3d");
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
public static Map generateMultiValueTaskOptions(List selectors, String panelId, String layout) {
int size = selectors.size();
// label array
String[] labelArray = new String[1];
String[] valueArray = new String[size - 1];
for (int i = 0; i < size; i++) {
if (i == 0) {
labelArray[i] = selectors.get(i);
} else {
valueArray[i - 1] = selectors.get(i);
}
}
Map labelMap = new HashMap();
labelMap.put("label", labelArray);
labelMap.put("value", valueArray);
Map panelMap = new HashMap();
panelMap.put("alignment", labelMap);
panelMap.put("layout", layout);
Map options = new HashMap();
options.put(panelId, panelMap);
return options;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy