From: Peter S. <sch...@us...> - 2007-07-02 17:48:46
|
Update of /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15926/src/java/net/sf/plb4jedit/filelocator Modified Files: ChooseFileDialog.java FileInfo.java FileList.java FileLocatorPlugin.java FileTableFormat.java OpenFileAction.java Log Message: Index: ChooseFileDialog.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/ChooseFileDialog.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- ChooseFileDialog.java 28 Jun 2005 07:00:58 -0000 1.10 +++ ChooseFileDialog.java 2 Jul 2007 17:48:44 -0000 1.11 @@ -2,7 +2,6 @@ import java.awt.Dimension; import java.awt.event.*; -import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -11,26 +10,28 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.util.Log; -import ca.odell.glazedlists.EventList; +import ca.odell.glazedlists.*; import ca.odell.glazedlists.event.ListEvent; import ca.odell.glazedlists.event.ListEventListener; -import ca.odell.glazedlists.swing.EventSelectionModel; -import ca.odell.glazedlists.swing.EventTableModel; -import ca.odell.glazedlists.swing.TableFormat; -import ca.odell.glazedlists.swing.TextFilterList; +import ca.odell.glazedlists.gui.TableFormat; +import ca.odell.glazedlists.matchers.AbstractMatcherEditor; +import ca.odell.glazedlists.matchers.Matcher; +import ca.odell.glazedlists.migrationkit.swing.TextFilterList; +import ca.odell.glazedlists.swing.*; import com.jgoodies.forms.builder.PanelBuilder; import com.jgoodies.forms.factories.ButtonBarFactory; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; +import com.jgoodies.uif.util.ComponentUtils; +import com.jgoodies.uif.util.SystemUtils; /* $Id$ - * - * Copyright (c) DAKOSY AG and Riege Software. All rights reserved. - * Use is subject to license terms. */ /** @@ -49,17 +50,18 @@ private EventSelectionModel fileSelectionModel; private EventTableModel fileTableModel; private TableFormat tableFormat; - private TextFilterList filesTextFiltered; private JTextField filterTextField; private JButton okButton; private Action okAction; private JButton cancelButton; + private JButton updateButton; private List selection; private List actionListeners = new ArrayList(); - private EventList eventList; + private FileList eventList; private JTable filesJTable; + private ExtensionSelect extensionSelect; - public ChooseFileDialog(EventList eventList, TableFormat tableFormat) { + public ChooseFileDialog(FileList eventList, TableFormat tableFormat) { this.eventList = eventList; this.tableFormat = tableFormat; initComponents(); @@ -75,16 +77,23 @@ Log.log(Log.DEBUG, this, "chooseFiles()"); makeDisposeOnEscapeKey(dialog); dialog.getRootPane().setDefaultButton(okButton); - dialog.show(); + dialog.setVisible(true); filterTextField.requestFocus(); } - public void chooseFiles(String filterText) { - Log.log(Log.DEBUG, this, "chooseFiles(" + filterText + ")"); - filterTextField.setText(filterText); - filterTextField.setCaretPosition(0); + public void chooseFiles(String extension) { + Log.log(Log.DEBUG, this, "chooseFiles(" + extension + ")"); + extensionSelect.getComboBox().setSelectedItem(extension); chooseFiles(); } + + public void setText(String text) { + filterTextField.setText(text); + } + + public void updateList() { + this.eventList.update(); + } public void dispose() { actionListeners.clear(); @@ -119,28 +128,33 @@ } private void initComponents() { - String[] filterBeanPropertiesOnFile = {"Name", "Path"}; - filesTextFiltered = new TextFilterList(eventList, - filterBeanPropertiesOnFile); + extensionSelect = new ExtensionSelect(); + FilterList extensionFilteredList = new FilterList(eventList, extensionSelect); filterTextField = new JTextField(); - filesTextFiltered.setFilterEdit(filterTextField); + final FilterList textFilteredList = new FilterList( + extensionFilteredList, new TextComponentMatcherEditor( + filterTextField, new TextFilterator() { + + public void getFilterStrings(List baseList, Object arg1) { + FileInfo file = (FileInfo) arg1; + baseList.add(file.getAbsolutePath()); + baseList.add(file.getLastModified()); + } + })); - // files table - fileTableModel = new EventTableModel(filesTextFiltered, - tableFormat); - fileSelectionModel = new EventSelectionModel(filesTextFiltered); + SortedList sortedList = new SortedList(textFilteredList); + + fileTableModel = new EventTableModel(sortedList, tableFormat); + fileSelectionModel = new EventSelectionModel(sortedList); fileSelectionModel .addListSelectionListener(new FileSelectionListener()); - filesTextFiltered.addListEventListener(new ListEventListener() { + textFilteredList.addListEventListener(new ListEventListener() { public void listChanged(ListEvent arg0) { - if (filesTextFiltered.size() > 0) { - fileSelectionModel.setSelectionInterval(0,0); + if (textFilteredList.size() > 0) { + fileSelectionModel.setSelectionInterval(0, 0); } - }}); - } - - private JPanel buildContent() { - // Result Table + } + }); filesJTable = new JTable(fileTableModel); filesJTable.setSelectionModel(fileSelectionModel); filesJTable.getColumnModel().getColumn(0).setMinWidth(30); @@ -150,8 +164,16 @@ filesJTable.getColumnModel().getColumn(1).setPreferredWidth(40); filesJTable.getColumnModel().getColumn(2).setMinWidth(100); filesJTable.getColumnModel().getColumn(2).setPreferredWidth(280); + filesJTable.getColumnModel().getColumn(3).setMinWidth(50); + filesJTable.getColumnModel().getColumn(3).setPreferredWidth(60); filesJTable.addKeyListener(new KeyHandler()); + new TableComparatorChooser(filesJTable, sortedList, false); + } + + private JPanel buildContent() { + + JScrollPane fileTableScrollPane = new JScrollPane(filesJTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); @@ -161,18 +183,48 @@ okButton = new JButton(okAction); okButton.setDefaultCapable(true); cancelButton = new JButton(new CancelAction()); + updateButton = new JButton(buildUpdateAction()); + + Action down = buildDownAction(filesJTable); + Action up = buildUpAction(filesJTable); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, up, + KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, okAction, KeyStroke + .getKeyStroke(KeyEvent.VK_ENTER, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + ComponentUtils.addAction(filterTextField, okAction, KeyStroke + .getKeyStroke(KeyEvent.VK_ENTER, 0), + JComponent.WHEN_FOCUSED); + // Panel FormLayout layout = new FormLayout( - "right:p, 4dlu, p:grow", // columns + "right:p, 4dlu, p:grow, 4dlu, p", // columns "p, 3dlu, fill:default:grow, 3dlu, p"); // rows PanelBuilder builder = new PanelBuilder(layout/*, new FormDebugPanel()*/); builder.setDefaultDialogBorder(); CellConstraints cc = new CellConstraints(); - builder.addLabel("Filter", cc.xy(1, 1)); - builder.add(filterTextField, cc.xy(3, 1)); - builder.add(fileTableScrollPane, cc.xyw(1, 3, 3)); - builder.add(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton), - cc.xyw(1, 5, 3)); + builder.addLabel("Filter", cc.xy(1, 1)); + builder.add(filterTextField, cc.xy(3, 1)); + builder.add(extensionSelect.getComboBox(), cc.xy(5, 1)); + builder.add(fileTableScrollPane, cc.xyw(1, 3, 5)); + builder.add(ButtonBarFactory.buildHelpOKCancelBar(updateButton, okButton, cancelButton), + //buildGrowingBar(okButton, cancelButton, updateButton), + cc.xyw(1, 5, 5)); return builder.getPanel(); } @@ -224,6 +276,8 @@ closeDialog(); } } + + private class OKAction extends AbstractAction { private OKAction() { super("OK"); @@ -231,7 +285,7 @@ public void actionPerformed(ActionEvent e) { // if Ok pressed and nothing is selected selectall visible - if (fileSelectionModel.getEventList().size() == 0) { + if (fileSelectionModel.getSelected().size() == 0) { filesJTable.selectAll(); } if (actionListeners.isEmpty()) { @@ -239,7 +293,7 @@ for (Iterator iter = selection.iterator(); iter .hasNext();) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); Log.log(Log.DEBUG,this,file.getAbsolutePath()); } } @@ -256,6 +310,44 @@ } } + private AbstractAction buildUpdateAction() { + return new AbstractAction("Update Index") { + + public void actionPerformed(ActionEvent e) { + ChooseFileDialog.this.updateList(); + } + + }; + } + + private AbstractAction buildDownAction(final JTable table) { + return new AbstractAction() { + + public void actionPerformed(ActionEvent e) { + int idx = table.getSelectionModel() + .getMinSelectionIndex(); + idx++; + if (idx < table.getRowCount()) { + table.getSelectionModel().setSelectionInterval( + idx, idx); + } + } + }; + } + + private AbstractAction buildUpAction(final JTable table) { + return new AbstractAction() { + + public void actionPerformed(ActionEvent e) { + int idx = table.getSelectionModel().getMinSelectionIndex(); + idx--; + if (idx >= 0) { + table.getSelectionModel().setSelectionInterval(idx, idx); + } + } + }; + } + private void makeDisposeOnEscapeKey(final RootPaneContainer rootPane) { Action action = new AbstractAction() { public void actionPerformed(ActionEvent arg0) { @@ -317,5 +409,43 @@ } + private class ExtensionMatcher implements Matcher { + private String extension; + + public ExtensionMatcher(String ext) { + this.extension = ext; + } + + public boolean matches(Object o) { + if (o == null) + return false; + if (StringUtils.isEmpty(extension)) + return true; + FileInfo f = (FileInfo) o; + return extension.equals(f.getExtension()); + } + } + private class ExtensionSelect extends AbstractMatcherEditor implements ActionListener { + JComboBox extensionsComboBox; + + public ExtensionSelect() { +// derive the users list from the issues list + String[] exts = StringUtils.split(FileLocatorOptions + .getInstance().getExtensions()); + + extensionsComboBox = new JComboBox(exts); + extensionsComboBox.addItem(""); + extensionsComboBox.addActionListener(this); + } + + public JComboBox getComboBox() { + return extensionsComboBox; + } + + public void actionPerformed(ActionEvent e) { + Matcher newMatcher = new ExtensionMatcher((String)getComboBox().getSelectedItem()); + fireChanged(newMatcher); + } + } } \ No newline at end of file Index: OpenFileAction.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/OpenFileAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- OpenFileAction.java 25 May 2005 12:48:46 -0000 1.6 +++ OpenFileAction.java 2 Jul 2007 17:48:45 -0000 1.7 @@ -45,7 +45,7 @@ for (Iterator iter = dialog.getSelectedFiles().iterator(); iter.hasNext() && i < MAX_FILES; i++) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); buffers[i] = jEdit.openFile(null, file.getAbsolutePath()); } activePane.setBuffer(buffers[0]); Index: FileTableFormat.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileTableFormat.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- FileTableFormat.java 27 Jun 2005 16:17:56 -0000 1.3 +++ FileTableFormat.java 2 Jul 2007 17:48:45 -0000 1.4 @@ -7,17 +7,13 @@ import java.io.File; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; -import ca.odell.glazedlists.swing.TableFormat; +import ca.odell.glazedlists.gui.TableFormat; public class FileTableFormat implements TableFormat { - private String[] columnDesc = {"Name", "Ext.", "Path"}; - private File relativePath; + private String[] columnDesc = {"Name", "Ext.", "Path", "Last modified"}; - public FileTableFormat(File relativePath) { - this.relativePath = relativePath; - } - public int getColumnCount() { return columnDesc.length; } @@ -29,22 +25,18 @@ public Object getColumnValue(Object fileObj, int column) { if (fileObj == null) return null; - if (!(fileObj instanceof File)) + if (!(fileObj instanceof FileInfo)) return null; - //FileInfo fileInfo = (FileInfo) fileObj; - File file = (File) fileObj; + FileInfo file = (FileInfo) fileObj; + //File file = (File) fileObj; if (column == 0) { - return StringUtils.substringBeforeLast(file.getName(), "."); + return file.getName(); } else if (column == 1) { - return StringUtils.substringAfterLast(file.getName(), "."); + return file.getExtension(); } else if (column == 2) { - if (relativePath == null) { - return file.getPath(); - } else { - return StringUtils.substringBetween(file.getAbsolutePath(), - relativePath.getPath() + File.separator, File.separator + file.getName()); - } - + return file.getDirectory(); + } else if (column == 3) { + return file.getLastModified(); } return null; } Index: FileInfo.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileInfo.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- FileInfo.java 18 May 2005 08:48:06 -0000 1.2 +++ FileInfo.java 2 Jul 2007 17:48:44 -0000 1.3 @@ -10,6 +10,7 @@ import java.io.Serializable; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; /** * @author <a href="mailto:sch...@ri...">Peter Schaefer </a> @@ -17,118 +18,49 @@ */ public class FileInfo implements Serializable, Comparable { + private static final long serialVersionUID = 1L; + private static final File relativeTo= new File(FileLocatorOptions.getInstance().getRootDir()); private String name; private String extension; private String absolutePath; - private String relativePath; - - public FileInfo() { - name = ""; - extension = ""; - absolutePath = ""; - relativePath = ""; - } + private String directory; + private String lastModified; - public FileInfo(File f, File relativeTo) { - this(); + public FileInfo(File f) { name = StringUtils.substringBeforeLast(f.getName(), "."); extension = StringUtils.substringAfterLast(f.getName(), "."); absolutePath = f.getAbsolutePath(); - if (relativeTo != null) { - relativePath = StringUtils.substringBetween(absolutePath, - relativeTo.getPath(), File.separator + f.getName()); + lastModified = DateFormatUtils.format(f.lastModified(), "yyyyMMdd HH:mm:ss"); + if (relativeTo == null) { + directory = f.getPath(); + } else { + directory = StringUtils.substringBetween(f.getAbsolutePath(), + relativeTo.getPath() + File.separator, File.separator + f.getName()); } - } - /** - * @return Returns the absolutePath. - */ public String getAbsolutePath() { return absolutePath; } - /** - * @param absolutePath - * The absolutePath to set. - */ - public void setAbsolutePath(String absolutePath) { - this.absolutePath = absolutePath; - } - - /** - * @return Returns the extension. - */ public String getExtension() { return extension; } - /** - * @param extension - * The extension to set. - */ - public void setExtension(String extension) { - this.extension = extension; - } - - /** - * @return Returns the name. - */ public String getName() { return name; } - /** - * @param name - * The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the relativePath. - */ - public String getRelativePath() { - if (relativePath == null && absolutePath != null) { - return absolutePath; - } - return relativePath; + public String getLastModified() { + return lastModified; } - - /** - * @param relativePath - * The relativePath to set. - */ - public void setRelativePath(String relativePath) { - this.relativePath = relativePath; + + public String getDirectory() { + return directory; } - public boolean equals(Object o) { - if (! (o instanceof FileInfo)) { - return false; - } - FileInfo f = (FileInfo)o; - return StringUtils.equals(this.getAbsolutePath(), f.getAbsolutePath()); - } - public int compareTo(Object o) { - if (o == null || ! (o instanceof FileInfo)) { - return 1000; - } - if (equals(o)) { - return 0; - } - - FileInfo f = (FileInfo)o; - if (f.getExtension().equals(getExtension())) { - if (getName().equals(f.getName())) { - return getRelativePath().compareTo(f.getRelativePath()); - } else { - return getName().compareTo(f.getName()); - } - } else { - return getExtension().compareTo(f.getExtension()); - } + FileInfo fi = (FileInfo)o; + return absolutePath.compareTo(fi.getAbsolutePath()); } } \ No newline at end of file Index: FileLocatorPlugin.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileLocatorPlugin.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- FileLocatorPlugin.java 27 Jun 2005 16:17:56 -0000 1.10 +++ FileLocatorPlugin.java 2 Jul 2007 17:48:44 -0000 1.11 @@ -27,8 +27,7 @@ private static final OpenFileAction openFileAction = new OpenFileAction(); private static final FileList fileList = FileList.getInstance(); private static final ChooseFileDialog dialog = new ChooseFileDialog( - fileList, new FileTableFormat(new File(FileLocatorOptions.getInstance() - .getRootDir()))); + fileList, new FileTableFormat()); public void start() { _init(); @@ -52,9 +51,22 @@ try { StopWatch watch = new StopWatch(); watch.start(); - ObjectInputStream in = new ObjectInputStream( - new FileInputStream(fileName)); - Collection files = (LinkedList) in.readObject(); + ObjectInputStream in = null; + Collection<FileInfo> files; + try { + in = new ObjectInputStream( + new FileInputStream(fileName)); + files = (LinkedList) in.readObject(); + } catch (ClassCastException e) { + // may be caused through version update => delete old map + in.close(); + File index = new File(fileName); + index.delete(); + fileList.start(); + dialog.addActionListener(openFileAction); + setDialogSize(); + return; + } watch.stop(); fileList.setFiles(files); Log.log(Log.DEBUG, FileLocatorPlugin.class, @@ -70,10 +82,10 @@ setDialogSize(); } - private void store(Collection files) { + private void store(Collection<FileInfo> files) { final String fileName = FileLocatorOptions.getInstance() .getIndexFilename(); - LinkedList list = new LinkedList(); + LinkedList<FileInfo> list = new LinkedList(); list.addAll(files); if (StringUtils.isNotBlank(fileName)) { try { @@ -102,7 +114,7 @@ && StringUtils.contains(FileLocatorOptions.getInstance() .getExtensions(), extension)) { - dialog.chooseFiles(" ." + extension); + dialog.chooseFiles(extension); } else { dialog.chooseFiles(); } @@ -119,7 +131,7 @@ .getPath(), "."); System.out.println(searchKey); for (Iterator iter = fileList.iterator(); iter.hasNext();) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); System.out.println(file.getName()); if (file.getName().equals(searchKey)) { jEdit.openFile(jEdit.getActiveView(), file.getAbsolutePath()); @@ -127,7 +139,8 @@ } } // nothing found - dialog.chooseFiles(searchKey); + dialog.setText(searchKey); + selectFiles(); } } Index: FileList.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileList.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- FileList.java 27 Jun 2005 16:17:56 -0000 1.5 +++ FileList.java 2 Jul 2007 17:48:44 -0000 1.6 @@ -9,6 +9,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.filefilter.IOFileFilter; +import org.apache.commons.io.filefilter.NameFileFilter; import org.apache.commons.io.filefilter.SuffixFileFilter; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.StopWatch; @@ -24,7 +25,6 @@ */ public class FileList extends TransformedList { - private static UpdateIndexTask updateIndexTask; private static FileList INSTANCE; @@ -85,24 +85,21 @@ /** * @param files */ - public void setFiles(Collection files) { - SortedSet filesSorted = new TreeSet(); - - filesSorted.addAll(files); - + public void setFiles(Collection<FileInfo> files) { UniqueList uniqueSource = (UniqueList) source; uniqueSource.getReadWriteLock().writeLock().lock(); try { - uniqueSource.replaceAll(filesSorted); + uniqueSource.clear(); + uniqueSource.addAll(files); } finally { uniqueSource.getReadWriteLock().writeLock().unlock(); } } - public Collection getFiles() { - Collection files = new LinkedList(); + public Collection<FileInfo> getFiles() { + Collection<FileInfo> files = new LinkedList(); for (Iterator iter = source.iterator(); iter.hasNext();) { - File element = (File) iter.next(); + FileInfo element = (FileInfo) iter.next(); files.add(element); } return files; @@ -122,7 +119,7 @@ .getInstance().getExtensions()); String[] excludeDirs = StringUtils.split(FileLocatorOptions .getInstance().getExcludedDirs()); - File rootDir = new File(FileLocatorOptions.getInstance() + final File rootDir = new File(FileLocatorOptions.getInstance() .getRootDir()); String[] suffixes = new String[extensions.length]; @@ -132,19 +129,25 @@ IOFileFilter fileFilter = new SuffixFileFilter(suffixes); IOFileFilter directoryFilter = FileFilterUtils .makeCVSAware(FileFilterUtils.directoryFileFilter()); - for (int i = 0; i < excludeDirs.length; i++) { - directoryFilter = FileFilterUtils.andFileFilter( - directoryFilter, FileFilterUtils - .notFileFilter(FileFilterUtils - .nameFileFilter(excludeDirs[i]))); - } - watch.start(); + NameFileFilter excludeFilter = new NameFileFilter(excludeDirs); + directoryFilter = FileFilterUtils.andFileFilter(directoryFilter, FileFilterUtils.notFileFilter(excludeFilter)); - Collection files = FileUtils.listFiles(rootDir, fileFilter, + System.out.println("FileLocator starts scan ..."); + watch.start(); + Collection<File> files = FileUtils.listFiles(rootDir, fileFilter, directoryFilter); + + Collection<FileInfo> filesAsFileInfo = new LinkedList(); watch.stop(); - System.out.println("scan performed in " + watch.toString() + ". " + files.size() + " files matched."); - setFiles(files); + for (File f : files) { + filesAsFileInfo.add(new FileInfo(f)); + } + System.out.println("scan performed in " + watch.toString() + ". " + filesAsFileInfo.size() + " files matched."); + setFiles(filesAsFileInfo); + filesAsFileInfo.clear(); + filesAsFileInfo = null; + files.clear(); + files = null; } } |