/**
* C-Nery - A home automation web application for C-Bus.
* Copyright (C) 2008,2009,2012 Dave Oxley <dave@daveoxley.co.uk>.
*
* This program 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/>.
*
*/
package com.daveoxley.cnery.pages;
import com.daveoxley.cnery.entities.BaseEntity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* @author dave
*/
public abstract class TreeNode<E extends BaseEntity> {
protected abstract BaseEntity getEntity();
protected abstract TreeNode getNewTreeNode(E e);
protected void mergeNodes(Map<Long,TreeNode> nodes, List<E> entities) {
// Remove obsolete keys
List<Long> keys = new ArrayList<Long>();
for (E e : entities)
keys.add(e.getId());
for (Long key : nodes.keySet()) {
if (!keys.contains(key))
nodes.remove(key);
}
// Add any new conditions
for (E e : entities) {
if (!nodes.containsKey(e.getId()))
nodes.put(e.getId(), getNewTreeNode(e));
}
}
public boolean isExpanded() {
return true;
}
}