2016-12-07 10:42:01 +00:00
|
|
|
package com.bytezone.diskbrowser.duplicates;
|
|
|
|
|
|
|
|
import java.io.File;
|
2016-12-11 05:18:04 +00:00
|
|
|
import java.util.List;
|
2016-12-07 10:42:01 +00:00
|
|
|
|
2016-12-11 05:18:04 +00:00
|
|
|
import javax.swing.SwingWorker;
|
|
|
|
|
2016-12-07 10:42:01 +00:00
|
|
|
import com.bytezone.diskbrowser.utilities.Utility;
|
|
|
|
|
2016-12-13 10:03:15 +00:00
|
|
|
public class DuplicateSwingWorker extends SwingWorker<Void, RootFolderData>
|
2016-12-07 10:42:01 +00:00
|
|
|
{
|
2016-12-12 08:31:58 +00:00
|
|
|
private final RootFolderData rootFolderData;
|
2016-12-07 10:42:01 +00:00
|
|
|
|
2016-12-12 23:46:09 +00:00
|
|
|
public DuplicateSwingWorker (RootFolderData rootFolderData)
|
2016-12-07 10:42:01 +00:00
|
|
|
{
|
2016-12-12 23:46:09 +00:00
|
|
|
this.rootFolderData = rootFolderData;
|
2016-12-13 22:26:47 +00:00
|
|
|
rootFolderData.dialogTotals.setVisible (true);
|
2016-12-09 11:31:03 +00:00
|
|
|
}
|
|
|
|
|
2016-12-13 22:26:47 +00:00
|
|
|
@Override
|
|
|
|
protected Void doInBackground () throws Exception
|
2016-12-07 10:42:01 +00:00
|
|
|
{
|
2016-12-13 22:26:47 +00:00
|
|
|
traverse (rootFolderData.getRootFolder ());
|
|
|
|
publish (rootFolderData);
|
|
|
|
rootFolderData.print ();
|
|
|
|
return null;
|
2016-12-07 10:42:01 +00:00
|
|
|
}
|
|
|
|
|
2016-12-11 05:18:04 +00:00
|
|
|
@Override
|
|
|
|
protected void done ()
|
2016-12-07 10:42:01 +00:00
|
|
|
{
|
2016-12-11 05:18:04 +00:00
|
|
|
try
|
2016-12-07 10:42:01 +00:00
|
|
|
{
|
2016-12-12 23:46:09 +00:00
|
|
|
if (!rootFolderData.showTotals)
|
2016-12-13 22:26:47 +00:00
|
|
|
rootFolderData.dialogTotals.setVisible (false);
|
|
|
|
rootFolderData.windowDisks.setTableData (rootFolderData);
|
2016-12-11 05:18:04 +00:00
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
e.printStackTrace ();
|
2016-12-07 10:42:01 +00:00
|
|
|
}
|
|
|
|
}
|
2016-12-11 05:18:04 +00:00
|
|
|
|
|
|
|
@Override
|
2016-12-13 22:26:47 +00:00
|
|
|
protected void process (List<RootFolderData> chunks)
|
2016-12-11 05:18:04 +00:00
|
|
|
{
|
2016-12-13 22:26:47 +00:00
|
|
|
rootFolderData.progressPanel.repaint ();
|
2016-12-11 05:18:04 +00:00
|
|
|
}
|
|
|
|
|
2016-12-13 22:26:47 +00:00
|
|
|
private void traverse (File directory)
|
2016-12-11 05:18:04 +00:00
|
|
|
{
|
2016-12-13 22:26:47 +00:00
|
|
|
File[] files = directory.listFiles ();
|
|
|
|
|
|
|
|
if (files == null || files.length == 0)
|
|
|
|
{
|
|
|
|
System.out.println ("Empty folder : " + directory.getAbsolutePath ());
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (File file : files)
|
|
|
|
{
|
|
|
|
if (file.isDirectory ())
|
|
|
|
{
|
|
|
|
rootFolderData.incrementFolders ();
|
|
|
|
traverse (file);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
String fileName = file.getName ().toLowerCase ();
|
|
|
|
if (Utility.validFileType (fileName) && file.length () > 0)
|
|
|
|
{
|
|
|
|
rootFolderData.incrementType (file, fileName);
|
|
|
|
if ((rootFolderData.totalDisks % 500) == 0)
|
|
|
|
publish (rootFolderData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-12-11 05:18:04 +00:00
|
|
|
}
|
2016-12-07 10:42:01 +00:00
|
|
|
}
|