1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.healthmarketscience.jackcess.impl.query;
18
19 import java.util.HashMap;
20 import java.util.Map;
21 import java.util.regex.Pattern;
22
23 import com.healthmarketscience.jackcess.DataType;
24 import com.healthmarketscience.jackcess.query.Query;
25 import org.apache.commons.lang.SystemUtils;
26
27
28
29
30
31
32 public class QueryFormat
33 {
34
35 private QueryFormat() {}
36
37 public static final int SELECT_QUERY_OBJECT_FLAG = 0;
38 public static final int MAKE_TABLE_QUERY_OBJECT_FLAG = 80;
39 public static final int APPEND_QUERY_OBJECT_FLAG = 64;
40 public static final int UPDATE_QUERY_OBJECT_FLAG = 48;
41 public static final int DELETE_QUERY_OBJECT_FLAG = 32;
42 public static final int CROSS_TAB_QUERY_OBJECT_FLAG = 16;
43 public static final int DATA_DEF_QUERY_OBJECT_FLAG = 96;
44 public static final int PASSTHROUGH_QUERY_OBJECT_FLAG = 112;
45 public static final int UNION_QUERY_OBJECT_FLAG = 128;
46
47
48
49
50
51
52 static final int OBJECT_FLAG_MASK = 0xF0;
53
54 public static final String COL_ATTRIBUTE = "Attribute";
55 public static final String COL_EXPRESSION = "Expression";
56 public static final String COL_FLAG = "Flag";
57 public static final String COL_EXTRA = "LvExtra";
58 public static final String COL_NAME1 = "Name1";
59 public static final String COL_NAME2 = "Name2";
60 public static final String COL_OBJECTID = "ObjectId";
61 public static final String COL_ORDER = "Order";
62
63 public static final Byte START_ATTRIBUTE = 0;
64 public static final Byte TYPE_ATTRIBUTE = 1;
65 public static final Byte PARAMETER_ATTRIBUTE = 2;
66 public static final Byte FLAG_ATTRIBUTE = 3;
67 public static final Byte REMOTEDB_ATTRIBUTE = 4;
68 public static final Byte TABLE_ATTRIBUTE = 5;
69 public static final Byte COLUMN_ATTRIBUTE = 6;
70 public static final Byte JOIN_ATTRIBUTE = 7;
71 public static final Byte WHERE_ATTRIBUTE = 8;
72 public static final Byte GROUPBY_ATTRIBUTE = 9;
73 public static final Byte HAVING_ATTRIBUTE = 10;
74 public static final Byte ORDERBY_ATTRIBUTE = 11;
75 public static final Byte END_ATTRIBUTE = (byte)255;
76
77 public static final short UNION_FLAG = 0x02;
78
79 public static final Short TEXT_FLAG = (short)DataType.TEXT.getValue();
80
81 public static final String DESCENDING_FLAG = "D";
82
83 public static final short SELECT_STAR_SELECT_TYPE = 0x01;
84 public static final short DISTINCT_SELECT_TYPE = 0x02;
85 public static final short OWNER_ACCESS_SELECT_TYPE = 0x04;
86 public static final short DISTINCT_ROW_SELECT_TYPE = 0x08;
87 public static final short TOP_SELECT_TYPE = 0x10;
88 public static final short PERCENT_SELECT_TYPE = 0x20;
89
90 public static final short APPEND_VALUE_FLAG = (short)0x8000;
91
92 public static final short CROSSTAB_PIVOT_FLAG = 0x01;
93 public static final short CROSSTAB_NORMAL_FLAG = 0x02;
94
95 public static final String UNION_PART1 = "X7YZ_____1";
96 public static final String UNION_PART2 = "X7YZ_____2";
97
98 public static final String DEFAULT_TYPE = "";
99
100 public static final Pattern QUOTABLE_CHAR_PAT = Pattern.compile("\\W");
101
102 public static final Pattern IDENTIFIER_SEP_PAT = Pattern.compile("\\.");
103 public static final char IDENTIFIER_SEP_CHAR = '.';
104
105 public static final String NEWLINE = SystemUtils.LINE_SEPARATOR;
106
107
108 public static final Map<Short,String> PARAM_TYPE_MAP =
109 new HashMap<Short,String>();
110 static {
111 PARAM_TYPE_MAP.put((short)0, "Value");
112 PARAM_TYPE_MAP.put((short)DataType.BOOLEAN.getValue(), "Bit");
113 PARAM_TYPE_MAP.put((short)DataType.TEXT.getValue(), "Text");
114 PARAM_TYPE_MAP.put((short)DataType.BYTE.getValue(), "Byte");
115 PARAM_TYPE_MAP.put((short)DataType.INT.getValue(), "Short");
116 PARAM_TYPE_MAP.put((short)DataType.LONG.getValue(), "Long");
117 PARAM_TYPE_MAP.put((short)DataType.MONEY.getValue(), "Currency");
118 PARAM_TYPE_MAP.put((short)DataType.FLOAT.getValue(), "IEEESingle");
119 PARAM_TYPE_MAP.put((short)DataType.DOUBLE.getValue(), "IEEEDouble");
120 PARAM_TYPE_MAP.put((short)DataType.SHORT_DATE_TIME.getValue(), "DateTime");
121 PARAM_TYPE_MAP.put((short)DataType.BINARY.getValue(), "Binary");
122 PARAM_TYPE_MAP.put((short)DataType.OLE.getValue(), "LongBinary");
123 PARAM_TYPE_MAP.put((short)DataType.GUID.getValue(), "Guid");
124 }
125
126 public static final Map<Short,String> JOIN_TYPE_MAP =
127 new HashMap<Short,String>();
128 static {
129 JOIN_TYPE_MAP.put((short)1, " INNER JOIN ");
130 JOIN_TYPE_MAP.put((short)2, " LEFT JOIN ");
131 JOIN_TYPE_MAP.put((short)3, " RIGHT JOIN ");
132 }
133
134 public static final Map<Short,Query.Type> TYPE_MAP =
135 new HashMap<Short,Query.Type>();
136 static {
137 for(Query.Type type : Query.Type.values()) {
138 if(type != Query.Type.UNKNOWN) {
139 TYPE_MAP.put(type.getValue(), type);
140 }
141 }
142 }
143
144 }