Dépôt officiel du code source de l'ERP OpenConcerto
Blame | Last modification | View Log | RSS feed
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2011-2019 OpenConcerto, by ILM Informatique. All rights reserved.
*
* The contents of this file are subject to the terms of the GNU General Public License Version 3
* only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
* copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each file.
*/
package org.openconcerto.erp.core.supplychain.stock.report;
import org.openconcerto.sql.model.SQLRowValues;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SQLRowValuesTree {
List<SQLRowValuesTreeNode> children = new ArrayList<>();
public SQLRowValuesTree(List<SQLRowValues> all, String fieldName) {
Map<Number, SQLRowValuesTreeNode> map = new HashMap<>(all.size());
for (SQLRowValues r : all) {
SQLRowValuesTreeNode node = new SQLRowValuesTreeNode(r);
map.put(r.getIDNumber(), node);
}
for (SQLRowValues r : all) {
final Number foreignIDNumber = r.getForeignIDNumber(fieldName);
SQLRowValuesTreeNode node = map.get(r.getIDNumber());
final SQLRowValuesTreeNode sqlRowValuesTreeNode = map.get(foreignIDNumber);
if (sqlRowValuesTreeNode != null) {
sqlRowValuesTreeNode.addChild(node);
} else {
this.children.add(node);
}
}
}
public List<SQLRowValuesTreeNode> getChildren() {
return this.children;
}
public void dump(PrintStream prt) {
for (SQLRowValuesTreeNode n : this.children) {
n.dump(0, prt);
}
}
}