2016-12-09 11:31:03 +00:00
|
|
|
package com.bytezone.diskbrowser.duplicates;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import javax.swing.table.AbstractTableModel;
|
|
|
|
|
2016-12-11 05:18:04 +00:00
|
|
|
import com.bytezone.diskbrowser.utilities.Utility;
|
|
|
|
|
2016-12-09 11:31:03 +00:00
|
|
|
public class DiskTableModel extends AbstractTableModel
|
|
|
|
{
|
2016-12-10 07:36:44 +00:00
|
|
|
static final String[] headers =
|
2016-12-12 07:43:19 +00:00
|
|
|
{ "Path", "Name", "Type", "Size", "Dup name", "Dup data", "Checksum" };
|
2016-12-09 11:31:03 +00:00
|
|
|
|
|
|
|
Map<String, DiskDetails> fileNameMap;
|
|
|
|
Map<Long, DiskDetails> checkSumMap;
|
|
|
|
List<TableLine> lines = new ArrayList<DiskTableModel.TableLine> ();
|
|
|
|
|
|
|
|
public DiskTableModel (DuplicateHandler duplicateHandler)
|
|
|
|
{
|
|
|
|
fileNameMap = duplicateHandler.getFileNameMap ();
|
|
|
|
checkSumMap = duplicateHandler.getChecksumMap ();
|
|
|
|
|
|
|
|
for (String key : fileNameMap.keySet ())
|
|
|
|
{
|
|
|
|
DiskDetails original = fileNameMap.get (key);
|
2016-12-09 12:12:35 +00:00
|
|
|
lines.add (new TableLine (original));
|
2016-12-10 07:36:44 +00:00
|
|
|
|
|
|
|
for (DiskDetails duplicate : original.getDuplicateNames ())
|
|
|
|
lines.add (new TableLine (duplicate));
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getColumnName (int column)
|
|
|
|
{
|
|
|
|
return headers[column];
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getRowCount ()
|
|
|
|
{
|
|
|
|
return lines.size ();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getColumnCount ()
|
|
|
|
{
|
|
|
|
return headers.length;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Class<?> getColumnClass (int columnIndex)
|
|
|
|
{
|
2016-12-10 07:36:44 +00:00
|
|
|
return lines.isEmpty () ? Object.class : getValueAt (0, columnIndex).getClass ();
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object getValueAt (int rowIndex, int columnIndex)
|
|
|
|
{
|
|
|
|
TableLine line = lines.get (rowIndex);
|
|
|
|
switch (columnIndex)
|
|
|
|
{
|
|
|
|
case 0:
|
2016-12-10 07:36:44 +00:00
|
|
|
return line.path;
|
2016-12-09 11:31:03 +00:00
|
|
|
case 1:
|
2016-12-10 07:36:44 +00:00
|
|
|
return line.shortName;
|
2016-12-09 11:31:03 +00:00
|
|
|
case 2:
|
2016-12-11 05:18:04 +00:00
|
|
|
return line.type;
|
2016-12-10 07:36:44 +00:00
|
|
|
case 3:
|
2016-12-11 05:18:04 +00:00
|
|
|
return line.size;
|
2016-12-10 07:36:44 +00:00
|
|
|
case 4:
|
2016-12-11 05:18:04 +00:00
|
|
|
return line.duplicateNames;
|
|
|
|
case 5:
|
|
|
|
return line.duplicateChecksums;
|
|
|
|
case 6:
|
2016-12-09 11:31:03 +00:00
|
|
|
return line.checksum;
|
|
|
|
default:
|
|
|
|
return "???";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class TableLine
|
|
|
|
{
|
2016-12-10 07:36:44 +00:00
|
|
|
private final String shortName;
|
|
|
|
private final String path;
|
|
|
|
private final long checksum;
|
|
|
|
private final int duplicateNames;
|
|
|
|
private final int duplicateChecksums;
|
|
|
|
final DiskDetails diskDetails;
|
2016-12-11 05:18:04 +00:00
|
|
|
private final String type;
|
|
|
|
private final long size;
|
2016-12-09 11:31:03 +00:00
|
|
|
|
|
|
|
public TableLine (DiskDetails diskDetails)
|
|
|
|
{
|
|
|
|
this.diskDetails = diskDetails;
|
2016-12-10 07:36:44 +00:00
|
|
|
shortName = diskDetails.getShortName ();
|
|
|
|
checksum = diskDetails.getChecksum ();
|
2016-12-11 05:18:04 +00:00
|
|
|
type = Utility.getSuffix (shortName);
|
|
|
|
size = diskDetails.getFile ().length ();
|
2016-12-10 07:36:44 +00:00
|
|
|
|
|
|
|
String rootName = diskDetails.getRootName ();
|
|
|
|
path = rootName.substring (0, rootName.length () - shortName.length ());
|
|
|
|
|
|
|
|
if (diskDetails.isDuplicateChecksum ())
|
|
|
|
{
|
|
|
|
DiskDetails original = checkSumMap.get (diskDetails.getChecksum ());
|
|
|
|
duplicateChecksums = original.getDuplicateChecksums ().size () + 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
duplicateChecksums = diskDetails.getDuplicateChecksums ().size () + 1;
|
|
|
|
|
|
|
|
if (diskDetails.isDuplicateName ())
|
|
|
|
{
|
|
|
|
DiskDetails original = fileNameMap.get (diskDetails.getShortName ());
|
|
|
|
duplicateNames = original.getDuplicateNames ().size () + 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
duplicateNames = diskDetails.getDuplicateNames ().size () + 1;
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|