package ml.shifu.shifu.util.updater; import java.io.IOException; import ml.shifu.shifu.column.NSColumn; import ml.shifu.shifu.column.NSColumnUtils; import ml.shifu.shifu.container.obj.ColumnConfig; import ml.shifu.shifu.container.obj.ModelConfig; /** * Created by zhanhu on 2/23/17. */ public class VarSelUpdater extends BasicUpdater { public VarSelUpdater(ModelConfig modelConfig) throws IOException { super(modelConfig); } public void updateColumnConfig(ColumnConfig columnConfig) { String varName = columnConfig.getColumnName(); // TODO check me: Before varselect, user can still change forceselect and force remove files while can user // change meta and target columns??? // set column flag to null, before reset it columnConfig.setColumnFlag(null); // No need reset ColumnType since column type should be set well in stats and later cannot be changed if(NSColumnUtils.isColumnEqual(this.targetColumnName, varName)) { columnConfig.setColumnFlag(ColumnConfig.ColumnFlag.Target); } else if(this.setMeta.contains(new NSColumn(varName))) { columnConfig.setColumnFlag(ColumnConfig.ColumnFlag.Meta); } else if(this.setForceRemove.contains(new NSColumn(varName))) { columnConfig.setColumnFlag(ColumnConfig.ColumnFlag.ForceRemove); } else if(this.setForceSelect.contains(new NSColumn(varName))) { columnConfig.setColumnFlag(ColumnConfig.ColumnFlag.ForceSelect); } else if(NSColumnUtils.isColumnEqual(this.weightColumnName, varName)) { columnConfig.setColumnFlag(ColumnConfig.ColumnFlag.Weight); } } }