package com.opendoorlogistics.core.tables.commands;
import com.opendoorlogistics.api.tables.ODLDatastore;
import com.opendoorlogistics.api.tables.ODLTable;
import com.opendoorlogistics.api.tables.ODLTableDefinition;
import com.opendoorlogistics.api.tables.TableFlags;
public class SetRowFlags extends Command{
private final long rowId;
private final long flags;
public SetRowFlags(int tableId, long rowId, long flags) {
super(tableId);
this.rowId = rowId;
this.flags = flags;
}
@Override
public Command doCommand(ODLDatastore<? extends ODLTableDefinition> database) {
ODLTable table = (ODLTable)database.getTableByImmutableId(tableId);
if(table==null){
return null;
}
long flags2Keep = table.getRowFlags(rowId);
flags2Keep &= TableFlags.ROW_FLAGS_PRESERVED_IN_UNDO_REDO;
table.setRowFlags(flags, rowId);
return new SetRowFlags(tableId, rowId, flags2Keep);
}
@Override
public long calculateEstimateSizeBytes() {
return 8*4;
}
}