/*******************************************************************************
* 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 3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl.html
*
******************************************************************************/
package com.opendoorlogistics.core.tables.decorators.datastores.dependencies;
import gnu.trove.set.hash.TIntHashSet;
public class DataDependencies {
private final TIntHashSet readTableIds = new TIntHashSet();
private final TIntHashSet readTableValuesIds = new TIntHashSet();
private boolean readTableSet;
private final TIntHashSet writtenTableIds = new TIntHashSet();
private boolean writtenTableSet;
private boolean readRowFlags;
public DataDependencies() {
}
public DataDependencies(DataDependencies copyThis) {
add(copyThis);
}
public void add(DataDependencies addThis) {
readTableIds.addAll(addThis.readTableIds);
readTableValuesIds.addAll(addThis.readTableValuesIds);
if (addThis.readTableSet) {
readTableSet = true;
}
writtenTableIds.addAll(addThis.writtenTableIds);
if (addThis.writtenTableSet) {
writtenTableSet = true;
}
if (addThis.readRowFlags) {
readRowFlags = true;
}
}
public boolean isRead() {
return readTableIds.size() > 0 || readTableSet;
}
public boolean isWritten() {
return writtenTableIds.size() > 0 || writtenTableSet;
}
public DataDependencies deepCopy() {
return new DataDependencies(this);
}
// public void clear(){
// readTableIds.clear();
// readTableSet=false;
// writtenTableIds.clear();
// writtenTableSet=false;
// }
public boolean isReadRowFlags() {
return readRowFlags;
}
public void setReadRowFlags(boolean readRowFlags) {
this.readRowFlags = readRowFlags;
}
/**
* Return a copy of the read table ids
*
* @return
*/
public int[] getReadTableIds() {
return readTableIds.toArray();
}
public boolean hasTableValueRead(int tableId) {
return readTableValuesIds.contains(tableId);
}
public void addReadTableId(int tableId, boolean readTableValues) {
// if (!readTableIds.contains(tableId)) {
// // System.out.println("breakpoint here!!!!");
// }
this.readTableIds.add(tableId);
if(readTableValues){
if(!readTableValuesIds.contains(tableId)){
readTableValuesIds.add(tableId);
}
}
}
public boolean isReadTableSet() {
return readTableSet;
}
public void setReadTableSet() {
this.readTableSet = true;
}
/**
* Return a copy of the written table ids
*
* @return
*/
public int[] getWrittenTableIds() {
return writtenTableIds.toArray();
}
public void addWrittenTableId(int tableId) {
this.writtenTableIds.add(tableId);
}
public boolean isWrittenTableSet() {
return writtenTableSet;
}
public void setWrittenTableSet() {
this.writtenTableSet = true;
}
}