/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.dashbuilder.dataset.filter; import java.util.List; import java.util.ArrayList; import org.dashbuilder.dataset.DataSetOpType; import org.dashbuilder.dataset.impl.AbstractDataSetOp; /** * A data set filter definition. */ public class DataSetFilter extends AbstractDataSetOp { protected List<ColumnFilter> columnFilterList = new ArrayList<ColumnFilter>(); public DataSetOpType getType() { return DataSetOpType.FILTER; } public void addFilterColumn(ColumnFilter... columnFilters) { for (ColumnFilter columnFilter : columnFilters) { columnFilterList.add(columnFilter); } } public List<ColumnFilter> getColumnFilterList() { return columnFilterList; } public Integer getColumnFilterIdx(ColumnFilter columnFilter) { for (int i=0; i<columnFilterList.size(); i++) { ColumnFilter cf = columnFilterList.get(i); if (columnFilter.equals(cf)) { return i; } } return null; } public DataSetFilter cloneInstance() { DataSetFilter clone = new DataSetFilter(); for (ColumnFilter columnFilter : columnFilterList) { clone.columnFilterList.add(columnFilter.cloneInstance()); } return clone; } public boolean equals(Object obj) { try { DataSetFilter other = (DataSetFilter) obj; if (columnFilterList.size() != other.columnFilterList.size()) return false; for (int i = 0; i < columnFilterList.size(); i++) { ColumnFilter el = columnFilterList.get(i); ColumnFilter otherEl = other.columnFilterList.get(i); if (!el.equals(otherEl)) return false; } return true; } catch (ClassCastException e) { return false; } } }