blob: 81fe157c6a93cd423f5af7c206daf9b658d2a86a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2013 Frank Becker and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Frank Becker - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.bugzilla.ui.search;
import java.io.Serializable;
import java.util.ArrayList;
public class Chart implements Serializable {
private static final long serialVersionUID = 733808118770522535L;
private final ArrayList<ArrayList<ChartExpression>> expressions;
private boolean negate;
public Chart() {
super();
ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$
ArrayList<ChartExpression> column = new ArrayList<ChartExpression>(1);
column.add(expression);
expressions = new ArrayList<ArrayList<ChartExpression>>(1);
expressions.add(column);
negate = false;
}
public boolean isNegate() {
return negate;
}
public void setNegate(boolean negate) {
this.negate = negate;
}
public void addExpression(int rowIndex, int columnIndex) {
ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$
int size = expressions.size();
if (rowIndex > size + 1) {
rowIndex = size + 1;
}
if (rowIndex < 0) {
rowIndex = 0;
}
ArrayList<ChartExpression> row;
if (rowIndex == size) {
row = new ArrayList<ChartExpression>();
expressions.add(rowIndex, row);
} else {
row = expressions.get(rowIndex);
}
if (row != null) {
int size1 = expressions.size();
if (columnIndex > size1 + 1) {
columnIndex = size1 + 1;
}
if (columnIndex < 0) {
columnIndex = 0;
}
row.add(columnIndex, expression);
}
}
public int getRowSize() {
return expressions.size();
}
public int getColumnSize(int row) {
int size = expressions.size();
if (row > size) {
row = size;
}
if (row < 0) {
row = 0;
}
return expressions.get(row).size();
}
public ChartExpression getChartExpression(int row, int column) {
int rowSize = expressions.size();
if (row > rowSize) {
row = rowSize;
}
if (row < 0) {
row = 0;
}
int columnSize = getColumnSize(row);
if (column > columnSize) {
column = columnSize;
}
if (column < 0) {
column = 0;
}
return expressions.get(row).get(column);
}
public void removeColumn(int row, int column) {
int rowSize = expressions.size();
if (row > rowSize) {
row = rowSize;
}
if (row < 0) {
row = 0;
}
int columnSize = getColumnSize(row);
if (column > columnSize) {
column = columnSize;
}
if (column < 0) {
column = 0;
}
expressions.get(row).remove(column);
if (column == 0) {
expressions.remove(row);
}
}
}