/*
* Copyright 2015 Liu Huanting.
*
* 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 fm.liu.timo.merger;
import java.util.ArrayDeque;
import java.util.Arrays;
import fm.liu.timo.mysql.packet.RowDataPacket;
/**
* @author Liu Huanting 2015年6月4日
*/
public class Distincter {
private ArrayDeque<RowDataPacket> rows;
public void offer(ArrayDeque<RowDataPacket> rows) {
this.rows = rows;
}
public ArrayDeque<RowDataPacket> getResult() {
ArrayDeque<RowDataPacket> temp = new ArrayDeque<RowDataPacket>();
while (!rows.isEmpty()) {
RowDataPacket row = rows.pollFirst();
RowDataPacket nextRow = rows.peekFirst();
while (!rows.isEmpty() && same(nextRow, row)) {
rows.poll();
nextRow = rows.peekFirst();
}
temp.add(row);
}
return temp;
}
private boolean same(RowDataPacket nextRow, RowDataPacket row) {
int size = row.fieldCount;
for (int i = 0; i < size; i++) {
if (!Arrays.equals(nextRow.fieldValues.get(i), row.fieldValues.get(i))) {
return false;
}
}
return true;
}
}