initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / sql / FilterSort.java
1 package com.quantum.sql;
2
3 import java.util.ArrayList;
4
5 public class FilterSort {
6         private ArrayList filterList = new ArrayList();
7         private ArrayList sortList = new ArrayList();
8         private ArrayList ascDescList = new ArrayList();
9         public void addFilter(String column, String operator, String value, boolean isString) {
10                 FilterRow row = new FilterRow();
11                 row.column = column;
12                 row.operator = operator;
13                 row.value = value;
14                 row.isString = isString;
15                 filterList.add(row);
16         } 
17         public void clearFilters() {
18                 filterList.clear();
19         }
20         public void addSort(String column, String ascDesc) {
21                 int ind = sortList.indexOf(column);
22                 if (ind < 0) {
23                         sortList.add(column);
24                         ascDescList.add(ascDesc);
25                         return;
26                 } 
27                 if (ind < ascDescList.size()) {
28                         ascDescList.remove(ind);
29                 }
30                 ascDescList.add(ind, ascDesc);
31         }
32         public void removeSort(String column) {
33                 int ind = sortList.indexOf(column);
34                 if (ind < 0) return;
35                 sortList.remove(ind);
36                 ascDescList.remove(ind);
37         }
38         public String toString() {
39                 StringBuffer text = new StringBuffer();
40                 if (filterList.size() > 0) {
41                         text.append(" WHERE "); //$NON-NLS-1$
42                         for (int i = 0; i < filterList.size(); i++) {
43                                 FilterRow row = (FilterRow) filterList.get(i);
44                                 text.append(row.column);
45                                 text.append(" "); //$NON-NLS-1$
46                                 text.append(row.operator);
47                                 text.append(" "); //$NON-NLS-1$
48                                 if (row.isString) {
49                                         text.append(escape(row.value));
50                                 } else {
51                                         text.append(row.value);
52                                 }
53                                 text.append(" "); //$NON-NLS-1$
54                                 if (i < filterList.size() - 1) {
55                                         text.append("AND "); //$NON-NLS-1$
56                                 }
57                         }
58                 }
59                 if (sortList.size() > 0) {
60                         text.append(" ORDER BY "); //$NON-NLS-1$
61                         for (int i = 0; i < sortList.size(); i++) {
62                                 String value = (String) sortList.get(i);
63                                 text.append(value);
64                                 text.append(" ");
65                                 text.append(ascDescList.get(i));
66                                 if (i < sortList.size() - 1) {
67                                         text.append(", "); //$NON-NLS-1$
68                                 }
69                         }
70                 }
71                 return text.toString();
72         }
73         public static String escape(String original) {
74                 return '\'' + original + '\'';
75         }
76 }
77
78 class FilterRow {
79         public String column;
80         public String operator;
81         public String value;
82         public boolean isString;
83 }