package com.opendoorlogistics.core.scripts.execution.adapters;
import com.opendoorlogistics.api.tables.TableFlags;
import com.opendoorlogistics.core.scripts.ScriptConstants;
import com.opendoorlogistics.core.scripts.elements.AdaptedTableConfig;
import com.opendoorlogistics.core.scripts.elements.AdapterColumnConfig;
import com.opendoorlogistics.core.scripts.elements.AdapterColumnConfig.SortField;
import com.opendoorlogistics.core.utils.strings.Strings;
public class EmbeddedDataUtils {
public static boolean isValidTable(AdaptedTableConfig table){
boolean okSources =Strings.equalsStd(table.getFromDatastore(), ScriptConstants.SCRIPT_EMBEDDED_TABLE_DATA_DS)
&& Strings.isEmpty(table.getFromTable()) && !table.isJoin() && !table.isFetchSourceFields();
if(okSources){
okSources = Strings.isEmpty(table.getFilterFormula());
}
for(int i =0 ; i < table.getColumnCount() && okSources ; i++){
AdapterColumnConfig col = table.getColumn(i);
okSources = !col.isUseFormula() && Strings.isEmpty(col.getFormula()) && Strings.isEmpty(col.getFrom())
&& ((col.getFlags() & INVALID_COL_FLAGS)==0) && (col.getSortField()==null || col.getSortField()==SortField.NO) ;
}
return okSources;
}
private static long INVALID_COL_FLAGS = TableFlags.FLAG_IS_BATCH_KEY | TableFlags.FLAG_IS_GROUP_BY_FIELD | TableFlags.FLAG_IS_REPORT_KEYFIELD;
public static void makeValid(AdaptedTableConfig table){
table.setFrom(ScriptConstants.SCRIPT_EMBEDDED_TABLE_DATA_DS, null);
table.setJoin(false);
table.setJoinDatastore(null);
table.setJoinTable(null);
table.setFetchSourceFields(false);
table.setFilterFormula(null);
for(int i =0 ; i < table.getColumnCount() ; i++){
AdapterColumnConfig col = table.getColumn(i);
col.setUseFormula(false);
col.setFormula(null);
col.setFrom(null);
col.setFlags(col.getFlags() & (~INVALID_COL_FLAGS));
col.setSortField(SortField.NO);
}
}
public static boolean isEmbeddedData(AdaptedTableConfig tableConfig) {
return Strings.equalsStd(tableConfig.getFromDatastore(), ScriptConstants.SCRIPT_EMBEDDED_TABLE_DATA_DS);
}
}