// License: GPL. See LICENSE file for details. Copyright 2012 by Josh Doe and others. package org.openstreetmap.josm.plugins.conflation; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.swing.table.AbstractTableModel; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.TagCollection; import static org.openstreetmap.josm.tools.I18n.tr; /** * Model for the conflation results table. */ class SimpleMatchesTableModel extends AbstractTableModel implements SimpleMatchListListener { private SimpleMatchList matches = null; // TODO: make columns dynamic private final static String[] columnNames = {tr("Reference"), tr("Subject"), "Distance (m)", "Score", "Tags"}; @Override public int getColumnCount() { return columnNames.length; } @Override public int getRowCount() { if (matches == null) return 0; return matches.size(); } @Override public String getColumnName(int col) { return columnNames[col]; } @Override public Object getValueAt(int row, int col) { if (matches == null || row < 0 || row >= matches.size()) return null; SimpleMatch c = matches.get(row); if (col == 0) { // TODO: use fancier string return c.getReferenceObject(); } else if (col == 1) { // TODO: use fancier string return c.getSubjectObject(); } else if (col == 2) { return c.getDistance(); } else if (col == 3) { return c.getScore(); } else if (col == 4) { HashSet<OsmPrimitive> set = new HashSet<OsmPrimitive>(); set.add(c.getReferenceObject()); set.add(c.getSubjectObject()); TagCollection tags = TagCollection.unionOfAllPrimitives(set); Set<String> keys = tags.getKeysWithMultipleValues(); if (keys.isEmpty()) { return "No conflicts!"; } else { return "Conflicts!"; } } return null; } @Override public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } /** * @return the matches */ public SimpleMatchList getMatches() { return matches; } /** * @param matches the matches to set */ public void setMatches(SimpleMatchList matches) { this.matches = matches; fireTableDataChanged(); } @Override public void simpleMatchListChanged(SimpleMatchList list) { fireTableDataChanged(); } @Override public void simpleMatchSelectionChanged(Collection<SimpleMatch> selected) { } }