/*
* Tanaguru - Automated webpage assessment
* Copyright (C) 2008-2015 Tanaguru.org
*
* This file is part of Tanaguru.
*
* Tanaguru is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Contact us by mail: tanaguru AT tanaguru DOT org
*/
package org.tanaguru.ruleimplementation;
import java.util.Arrays;
import java.util.Collection;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* Default implementation of the {@link ElementHandler} interface.
* It enables to handle a collection of {@link Element} and provides basic
* operations on it.
*
*/
public class ElementHandlerImpl implements ElementHandler<Element> {
/**
* The elements implied by the test
*/
private final Elements elements = new Elements();
/**
* Default constructor
*/
public ElementHandlerImpl(){}
/**
* Constructor that initialise locale collection with elements passed as
* argument
* @param els
*/
public ElementHandlerImpl(Element... els){
elements.addAll(Arrays.asList(els));
}
/**
* {@inheritDoc}
* @param element
*/
@Override
public void add(Element element) {
if(!elements.contains(element)){
elements.add(element);
}
}
/**
* {@inheritDoc}
* @param element
*/
@Override
public void remove(Element element) {
elements.remove(element);
}
/**
* {@inheritDoc}
* @param elements
*/
@Override
public void addAll(Collection<Element> elements) {
for (Element el : elements) {
add(el);
}
}
/**
* {@inheritDoc}
* @param elements
*/
@Override
public void removeAll(Collection<Element> elements) {
this.elements.removeAll(elements);
}
/**
* {@inheritDoc}
* @param elementHandler
*/
@Override
public void removeAll(ElementHandler<Element> elementHandler) {
this.elements.removeAll(elementHandler.get());
}
/**
* {@inheritDoc}
* @return the current ElementHandler emptied
*/
@Override
public ElementHandler<Element> clean() {
elements.clear();
return this;
}
/**
* {@inheritDoc}
* @return
*/
@Override
public Elements get() {
return elements;
}
/**
* {@inheritDoc}
* @return
*/
@Override
public boolean isEmpty() {
return elements.isEmpty();
}
/**
* {@inheritDoc}
* @return
*/
@Override
public int size() {
return get().size();
}
}