1 //
2 // $Id: ColumnComparator.java 95 2007-05-02 03:27:05Z
3 // /C=DE/ST=Baden-Wuerttemberg/O=ISDN4Linux/OU=Fritz
4 // Elfert/CN=svn-felfert@isdn4linux.de/emailAddress=fritz@fritz-elfert.de $
5 //
6 // jupload - A file upload applet.
7 // Copyright 2007 The JUpload Team
8 //
9 // Created: ?
10 // Creator: William JinHua Kwong
11 // Last modified: $Date: 2015-03-10 20:59:42 +0100 (mar., 10 mars 2015) $
12 //
13 // This program is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free Software
15 // Foundation; either version 2 of the License, or (at your option) any later
16 // version. This program is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
19 // details. You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software Foundation, Inc.,
21 // 675 Mass Ave, Cambridge, MA 02139, USA.
22
23 package wjhk.jupload2.gui.filepanel;
24
25 import java.io.Serializable;
26 import java.util.Comparator;
27
28 import wjhk.jupload2.filedata.FileData;
29
30 /**
31 * Technical class, used to sort rows in the
32 * wjhk.jupload2.gui.FilePanelDataModel2 class.
33 */
34 public class ColumnComparator implements Comparator<FileData>, Serializable {
35
36 /** Unused SerialVerisonUID */
37 private static final long serialVersionUID = 1L;
38
39 protected int index;
40
41 protected boolean ascending;
42
43 /**
44 * Creates a new instance.
45 *
46 * @param index The column index of the table data to be compared
47 * @param ascending Specifies the sort order.
48 */
49 public ColumnComparator(int index, boolean ascending) {
50 this.index = index;
51 this.ascending = ascending;
52 }
53
54 /**
55 * @param one
56 * @param two
57 * @return -1, 0 or 1, as usual.
58 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
59 */
60 @SuppressWarnings("unchecked")
61 public int compare(FileData one, FileData two) {
62 // if (one instanceof DefaultFileData && two instanceof DefaultFileData)
63 // {
64 Object oOne;
65 Object oTwo;
66 switch (this.index) {
67 case FilePanelFlatDataModel2.COLINDEX_NAME:
68 oOne = (one).getFileName();
69 oTwo = (two).getFileName();
70 break;
71 case FilePanelFlatDataModel2.COLINDEX_SIZE:
72 oOne = Long.valueOf((one).getFileLength());
73 oTwo = Long.valueOf((two).getFileLength());
74 break;
75 case FilePanelFlatDataModel2.COLINDEX_DIRECTORY:
76 oOne = (one).getDirectory();
77 oTwo = (two).getDirectory();
78 break;
79 case FilePanelFlatDataModel2.COLINDEX_MODIFIED:
80 oOne = (one).getLastModified();
81 oTwo = (two).getLastModified();
82 break;
83 default:
84 return 0;
85 }
86 if (oOne instanceof Comparable && oTwo instanceof Comparable) {
87 return ((Comparable<Object>) oOne).compareTo(oTwo)
88 * (this.ascending ? 1 : -1);
89 }
90 // }
91 return 0;
92 }
93 }