gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / main / java / org / gvsig / vcsgis / lib / workspace / tables / LocalRevisionsTable.java @ 3308
History | View | Annotate | Download (9.61 KB)
1 |
package org.gvsig.vcsgis.lib.workspace.tables; |
---|---|
2 |
|
3 |
import java.sql.Timestamp; |
4 |
import javax.json.JsonObject; |
5 |
import org.gvsig.fmap.dal.DALLocator; |
6 |
import org.gvsig.fmap.dal.DataManager; |
7 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
8 |
import org.gvsig.fmap.dal.feature.Feature; |
9 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
10 |
import org.gvsig.fmap.dal.feature.FeatureType; |
11 |
import org.gvsig.json.JsonObjectBuilder; |
12 |
import org.gvsig.tools.dataTypes.DataTypes; |
13 |
import org.gvsig.tools.dispose.DisposeUtils; |
14 |
import org.gvsig.tools.dynobject.DynObjectValueItem; |
15 |
import org.gvsig.tools.util.GetItemWithSizeAndIterator64; |
16 |
import static org.gvsig.vcsgis.lib.VCSGisManager.TOPOLOGYPLAN_NOTPASSED; |
17 |
import static org.gvsig.vcsgis.lib.VCSGisManager.TOPOLOGYPLAN_PASSED; |
18 |
import static org.gvsig.vcsgis.lib.VCSGisManager.TOPOLOGYPLAN_UNKNOWN; |
19 |
import org.gvsig.vcsgis.lib.VCSGisRevision; |
20 |
import org.gvsig.vcsgis.lib.VCSGisRevisionImpl; |
21 |
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace; |
22 |
|
23 |
/**
|
24 |
*
|
25 |
* @author gvSIG Team
|
26 |
*/
|
27 |
@SuppressWarnings("UseSpecificCatch") |
28 |
public class LocalRevisionsTable extends AbstractTable { |
29 |
|
30 |
public static final String TABLE_NAME = "VCSGIS_LOCALREVISIONS"; |
31 |
|
32 |
private static final String COD_REVISION = "COD_REVISION"; |
33 |
private static final String COD_USER = "COD_USER"; |
34 |
public static final String COD_ENTITY = "COD_ENTITY"; |
35 |
private static final String REVISION_NUMBER = "REV_NUMBER"; |
36 |
private static final String REVISION_COMMENT = "REV_COMMENT"; |
37 |
private static final String REVISION_EFECTIVEDATE = "REV_EFECTIVEDATE"; |
38 |
private static final String REVISION_DATE = "REV_OPERATIONDATE"; |
39 |
private static final String REVISION_TAGS = "REV_TAGS"; |
40 |
private static final String REVISION_GROUP = "REV_IDENTIFIER"; |
41 |
private static final String REVISION_TOPOLOGYPLAN = "REV_TOPPLAN"; |
42 |
|
43 |
public static class LocalRevisionRow extends AbstractRow implements VCSGisRevision { |
44 |
|
45 |
public LocalRevisionRow(VCSGisWorkspace workspace) {
|
46 |
super(workspace, TABLE_NAME, COD_REVISION);
|
47 |
} |
48 |
|
49 |
public LocalRevisionRow(VCSGisWorkspace workspace, Feature feature) {
|
50 |
super(workspace, TABLE_NAME, COD_REVISION, feature);
|
51 |
} |
52 |
|
53 |
public String getGroup() { |
54 |
return this.getString(REVISION_GROUP); |
55 |
} |
56 |
|
57 |
@Override
|
58 |
public String getUserCode() { |
59 |
return this.getString(COD_USER); |
60 |
} |
61 |
|
62 |
@Override
|
63 |
public String getRevisionCode() { |
64 |
return this.getCode(); |
65 |
} |
66 |
|
67 |
@Override
|
68 |
public Timestamp getRevisionDate() { |
69 |
return (Timestamp) this.getTimestamp(REVISION_DATE); |
70 |
} |
71 |
|
72 |
@Override
|
73 |
public Timestamp getEfectiveDate() { |
74 |
return (Timestamp) this.getTimestamp(REVISION_EFECTIVEDATE); |
75 |
} |
76 |
|
77 |
@Override
|
78 |
public int getTopologyPlan() { |
79 |
return this.getInt(REVISION_TOPOLOGYPLAN); |
80 |
} |
81 |
|
82 |
@Override
|
83 |
public String getTags() { |
84 |
return this.getString(REVISION_TAGS); |
85 |
} |
86 |
|
87 |
@Override
|
88 |
public long getNumber() { |
89 |
return this.getLong(REVISION_NUMBER); |
90 |
} |
91 |
|
92 |
@Override
|
93 |
public String getComment() { |
94 |
return this.getString(REVISION_COMMENT); |
95 |
} |
96 |
|
97 |
@Override
|
98 |
public String getEntityCode() { |
99 |
return this.getString(COD_ENTITY); |
100 |
} |
101 |
|
102 |
public void setGroup(String group) { |
103 |
this.set(REVISION_GROUP, group);
|
104 |
} |
105 |
|
106 |
public void setUserCode(String code) { |
107 |
this.set(COD_USER, code);
|
108 |
} |
109 |
|
110 |
public void setRevisionDate(Timestamp date) { |
111 |
this.set(REVISION_DATE, date);
|
112 |
} |
113 |
|
114 |
public void setEfectiveDate(Timestamp date) { |
115 |
this.set(REVISION_EFECTIVEDATE, date);
|
116 |
} |
117 |
|
118 |
public void setRevisionDate(java.util.Date date) { |
119 |
Timestamp tm = new Timestamp(date.getTime()); |
120 |
this.set(REVISION_DATE, tm);
|
121 |
} |
122 |
|
123 |
public void setEfectiveDate(java.util.Date date) { |
124 |
Timestamp tm = new Timestamp(date.getTime()); |
125 |
this.set(REVISION_EFECTIVEDATE, tm);
|
126 |
} |
127 |
|
128 |
public void setTopologyPlan(int topologyPlan) { |
129 |
this.set(REVISION_TOPOLOGYPLAN,topologyPlan);
|
130 |
} |
131 |
|
132 |
public void setTags(String tags) { |
133 |
this.set(REVISION_TAGS,tags);
|
134 |
} |
135 |
|
136 |
public void setComment(String comment) { |
137 |
this.set(REVISION_COMMENT, comment);
|
138 |
} |
139 |
|
140 |
public void setEntityCode(String code) { |
141 |
this.set(COD_ENTITY, code);
|
142 |
|
143 |
} |
144 |
|
145 |
public void setNumber(long number) { |
146 |
this.set(REVISION_NUMBER, number);
|
147 |
|
148 |
} |
149 |
|
150 |
@Override
|
151 |
public void copyFrom(VCSGisRevision other) { |
152 |
this.setCode(other.getRevisionCode());
|
153 |
this.setComment(other.getComment());
|
154 |
this.setEfectiveDate(other.getEfectiveDate());
|
155 |
this.setEntityCode(other.getEntityCode());
|
156 |
this.setRevisionDate(other.getRevisionDate());
|
157 |
this.setTags(other.getTags());
|
158 |
this.setUserCode(other.getUserCode());
|
159 |
this.setNumber(other.getNumber());
|
160 |
this.setTopologyPlan(other.getTopologyPlan());
|
161 |
} |
162 |
|
163 |
@Override
|
164 |
public LocalRevisionRow getValue() {
|
165 |
return this; |
166 |
} |
167 |
|
168 |
@Override
|
169 |
public String getLabel() { |
170 |
return VCSGisRevisionImpl.getLabel(this); |
171 |
} |
172 |
|
173 |
@Override
|
174 |
public JsonObject toJson() {
|
175 |
return this.toJsonBuilder().build(); |
176 |
} |
177 |
|
178 |
@Override
|
179 |
public JsonObjectBuilder toJsonBuilder() {
|
180 |
return VCSGisRevisionImpl.toJsonBuilder(this); |
181 |
} |
182 |
|
183 |
@Override
|
184 |
public String toString() { |
185 |
return VCSGisRevisionImpl.toString(this); |
186 |
} |
187 |
|
188 |
public boolean exists(FeatureStore store) { |
189 |
try {
|
190 |
Feature f = store.findFirst("\""+COD_REVISION+"\" = '"+this.getCode()+"'"); |
191 |
return f!=null; |
192 |
} catch (Exception ex) { |
193 |
throw new RuntimeException("Can't check if revision exists.", ex); |
194 |
} |
195 |
} |
196 |
|
197 |
} |
198 |
|
199 |
public LocalRevisionsTable() {
|
200 |
super(TABLE_NAME, featureType());
|
201 |
} |
202 |
|
203 |
public static final FeatureType featureType() { |
204 |
DataManager dataManager = DALLocator.getDataManager(); |
205 |
EditableFeatureType ft = dataManager.createFeatureType(); |
206 |
ft.setLabel("VCSGIS Revisions");
|
207 |
ft.getTags().set("ID", TABLE_NAME);
|
208 |
ft.add(COD_REVISION, DataTypes.STRING) |
209 |
.setSize(40)
|
210 |
.setIsPrimaryKey(true)
|
211 |
.setLabel("Code");
|
212 |
ft.add(COD_USER, DataTypes.STRING) |
213 |
.setIsIndexed(true)
|
214 |
.setAllowIndexDuplicateds(true)
|
215 |
.setSize(40)
|
216 |
.setLabel("Cod. user");
|
217 |
ft.add(COD_ENTITY, DataTypes.STRING) |
218 |
.setIsIndexed(true)
|
219 |
.setAllowIndexDuplicateds(true)
|
220 |
.setSize(40)
|
221 |
.setLabel("Cod. entity");
|
222 |
ft.add(REVISION_GROUP, DataTypes.STRING) |
223 |
.setIsIndexed(true)
|
224 |
.setAllowIndexDuplicateds(true)
|
225 |
.setSize(40)
|
226 |
.setLabel("Group");
|
227 |
ft.add(REVISION_DATE, DataTypes.TIMESTAMP) |
228 |
.setIsIndexed(true)
|
229 |
.setAllowIndexDuplicateds(true)
|
230 |
.setLabel("Revision date");
|
231 |
ft.add(REVISION_EFECTIVEDATE, DataTypes.TIMESTAMP) |
232 |
.setIsIndexed(true)
|
233 |
.setAllowIndexDuplicateds(true)
|
234 |
.setLabel("Efective date");
|
235 |
ft.add(REVISION_NUMBER, DataTypes.LONG) |
236 |
.setIsIndexed(true)
|
237 |
.setAllowIndexDuplicateds(true)
|
238 |
.setLabel("Revision number");
|
239 |
ft.add(REVISION_TOPOLOGYPLAN, DataTypes.INT) |
240 |
.setIsIndexed(false)
|
241 |
.setLabel("Topology plan")
|
242 |
.setAvailableValues(new DynObjectValueItem[] { |
243 |
new DynObjectValueItem(TOPOLOGYPLAN_UNKNOWN, "Unknown"), |
244 |
new DynObjectValueItem(TOPOLOGYPLAN_PASSED, "Passed"), |
245 |
new DynObjectValueItem(TOPOLOGYPLAN_NOTPASSED, "Not passed"), |
246 |
}); |
247 |
ft.add(REVISION_TAGS, DataTypes.STRING) |
248 |
.setSize(200)
|
249 |
.setLabel("Tags");
|
250 |
ft.add(REVISION_COMMENT, DataTypes.STRING) |
251 |
.setSize(200)
|
252 |
.setLabel("Comment");
|
253 |
|
254 |
return ft.getNotEditableCopy();
|
255 |
} |
256 |
|
257 |
public LocalRevisionsTable(String tableName, FeatureType featureType) { |
258 |
super(tableName, featureType);
|
259 |
} |
260 |
|
261 |
public void deleteByEntityCodeAndGroup(VCSGisWorkspace workspace, FeatureStore store, String entityCode, String group) { |
262 |
store.delete("\""+COD_ENTITY+"\" = '"+entityCode+"' AND \""+REVISION_GROUP+"\" = '"+group+"'"); |
263 |
} |
264 |
|
265 |
public GetItemWithSizeAndIterator64<Feature> getRevisions(VCSGisWorkspace workspace, String entityCode, String group) { |
266 |
FeatureStore store = null;
|
267 |
try {
|
268 |
store = workspace.getFeatureStore(TABLE_NAME); |
269 |
GetItemWithSizeAndIterator64<Feature> revisions = store.getFeatures64( |
270 |
"\""+COD_ENTITY+"\" = '"+entityCode+"' AND \""+REVISION_GROUP+"\" = '"+group+"'", |
271 |
"\""+REVISION_NUMBER+"\"", |
272 |
true
|
273 |
); |
274 |
return revisions;
|
275 |
} catch (Exception ex) { |
276 |
throw new RuntimeException("Can't retrieve changes by entity.", ex); |
277 |
} finally {
|
278 |
if( store!=null ) { |
279 |
DisposeUtils.dispose(store); |
280 |
} |
281 |
} |
282 |
|
283 |
|
284 |
} |
285 |
} |