/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.core.tables.memory;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import com.opendoorlogistics.api.tables.HasFlags;
import com.opendoorlogistics.api.tables.TableFlags;
@XmlRootElement
public class ODLHasFlags implements Serializable , HasFlags{
protected long flags;
public ODLHasFlags(){}
public ODLHasFlags(long flags){
this.flags = flags;
}
public ODLHasFlags(ODLHasFlags copyThis){
this.flags = copyThis.flags;
}
protected void setFlag(boolean active, long flag) {
if(active){
flags |= flag;
}else{
flags &= ~flag;
}
}
protected boolean getFlag(long flag){
return (flags & flag)==flag;
}
public long getFlags() {
return flags;
}
public void setFlags(long flags) {
this.flags = flags;
}
public boolean getIsOptional(){
return getFlag(TableFlags.FLAG_IS_OPTIONAL);
}
@XmlAttribute
public void setIsOptional(boolean optional){
setFlag(optional, TableFlags.FLAG_IS_OPTIONAL);
}
public boolean getIsBatchKey(){
return getFlag(TableFlags.FLAG_IS_BATCH_KEY);
}
@XmlAttribute
public void setIsBatchKey(boolean batchKey){
setFlag(batchKey, TableFlags.FLAG_IS_BATCH_KEY);
}
public boolean getIsReportKey(){
return getFlag(TableFlags.FLAG_IS_REPORT_KEYFIELD);
}
@XmlAttribute
public void setIsReportKey(boolean batchKey){
setFlag(batchKey, TableFlags.FLAG_IS_REPORT_KEYFIELD);
}
public boolean getIsGroupBy(){
return getFlag(TableFlags.FLAG_IS_GROUP_BY_FIELD);
}
@XmlAttribute
public void setIsGroupBy(boolean groupBy){
setFlag(groupBy, TableFlags.FLAG_IS_GROUP_BY_FIELD);
}
}