gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / test / java / org / gvsig / vcsgis / lib / impl / server / TestS04Row.java @ 2725
History | View | Annotate | Download (9.2 KB)
1 |
package org.gvsig.vcsgis.lib.impl.server; |
---|---|
2 |
|
3 |
import java.io.ByteArrayInputStream; |
4 |
import java.io.File; |
5 |
import java.io.InputStream; |
6 |
import java.net.URL; |
7 |
import java.sql.Timestamp; |
8 |
import java.util.Map; |
9 |
import junit.framework.TestCase; |
10 |
import static junit.framework.TestCase.assertEquals; |
11 |
import org.apache.commons.io.FileUtils; |
12 |
import org.apache.commons.io.IOUtils; |
13 |
import org.apache.commons.lang3.StringUtils; |
14 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
15 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
16 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
17 |
import org.gvsig.tools.dispose.DisposeUtils; |
18 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
19 |
import org.gvsig.vcsgis.lib.SequentialCodeGenerator; |
20 |
import org.gvsig.vcsgis.lib.VCSGisLocator; |
21 |
import org.gvsig.vcsgis.lib.VCSGisManager; |
22 |
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_OK; |
23 |
import org.gvsig.vcsgis.lib.impl.TestUtils; |
24 |
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace; |
25 |
import org.gvsig.vcsgis.lib.repository.VCSGisRepository; |
26 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowCreateRequestClient; |
27 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowDeleteRequestClient; |
28 |
import org.gvsig.vcsgis.lib.repository.remoteclient.requests.RowUpdateRequestClient; |
29 |
import org.gvsig.vcsgis.lib.server.VCSGisServerController; |
30 |
import org.gvsig.vcsgis.lib.server.VCSGisServerHandler; |
31 |
import org.gvsig.vcsgis.lib.server.handlers.RowCreateHandler; |
32 |
import org.slf4j.Logger; |
33 |
import org.slf4j.LoggerFactory; |
34 |
|
35 |
public class TestS04Row extends TestCase { |
36 |
|
37 |
private static final Logger LOGGER = LoggerFactory.getLogger(TestS04Row.class); |
38 |
|
39 |
public TestS04Row(String testName) { |
40 |
super(testName);
|
41 |
} |
42 |
|
43 |
@Override
|
44 |
protected void setUp() throws Exception { |
45 |
super.setUp();
|
46 |
new DefaultLibrariesInitializer().fullInitialize();
|
47 |
} |
48 |
|
49 |
@Override
|
50 |
protected void tearDown() throws Exception { |
51 |
super.tearDown();
|
52 |
} |
53 |
|
54 |
// TODO add test methods here. The name must begin with 'test'. For example:
|
55 |
// public void testHello() {}
|
56 |
|
57 |
public void testRowXXXHandler() throws Exception { |
58 |
final String testid = "RowXXXHandler"; |
59 |
final URL serverUrl = new URL("http://localhost:9810/"); |
60 |
|
61 |
VCSGisManager manager = VCSGisLocator.getVCSGisManager(); |
62 |
manager.setCodeGenerator(new SequentialCodeGenerator());
|
63 |
|
64 |
JDBCServerExplorerParameters explorerParams = TestUtils.getServerExplorerParameters("srv-"+testid);
|
65 |
File ws1file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws1-"+testid)); |
66 |
File ws2file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws2-"+testid)); |
67 |
|
68 |
Map<String, String> expected = TestUtils.getExpecteds("S04Row.txt"); |
69 |
|
70 |
|
71 |
// ---------------------------------------------------------
|
72 |
// Creamos el server y obtenemos el repositorio del server
|
73 |
int r = manager.initRepository(explorerParams, null); |
74 |
assertEquals("srv-init status", 0, r); |
75 |
|
76 |
VCSGisRepository repolocal = manager.openRepository(explorerParams); |
77 |
TestUtils.h2sql_repository(repolocal); |
78 |
|
79 |
// ---------------------------------------------------------
|
80 |
// Creamos un workspace y preparamos los datos en el para hacer un commit
|
81 |
r = manager.initWorkspace(ws1file, repolocal, "Test checkout ws1", null); |
82 |
assertEquals("ws1-init status", 0, r); |
83 |
|
84 |
VCSGisWorkspace ws1 = manager.openWorkspace(ws1file); |
85 |
TestUtils.h2sql_workspace(ws1); |
86 |
|
87 |
FeatureStore sourceStore = TestUtils.openSourceStore2(); |
88 |
|
89 |
r = ws1.add("test", sourceStore, "text"); |
90 |
assertEquals("ws1-add status", 0, r); |
91 |
|
92 |
r = ws1.commit(Timestamp.valueOf("2020-02-17 10:11:12.123"), testid, null); |
93 |
assertEquals("ws1.commit status", ERR_OK, r);
|
94 |
|
95 |
DisposeUtils.disposeQuietly(sourceStore); |
96 |
|
97 |
FeatureStore store = ws1.getFeatureStore("test");
|
98 |
VCSGisRepository reporemote = manager.openRepository(serverUrl); |
99 |
VCSGisServerController serverController = manager.createServerController(repolocal); |
100 |
VCSGisServerHandler serverHandler; |
101 |
InputStream is;
|
102 |
InputStream os;
|
103 |
String entityCode = "00000000000003abcdef0123456789"; |
104 |
String relatedFeatureCode = "00000000000023abcdef0123456789"; |
105 |
String localRevisionCodeForRowCreate = "00000000000015abcdef0123456789"; |
106 |
String localRevisionCodeForRowUpdate = "00000000000025abcdef0123456789"; |
107 |
String localRevisionCodeForRowDelete = "00000000000030abcdef0123456789"; |
108 |
String localRevisionCodeAfterRowDelete = "00000000000035abcdef0123456789"; |
109 |
|
110 |
assertEquals("initial EntityRevisionCode",
|
111 |
localRevisionCodeForRowCreate, |
112 |
ws1.getWorkspaceEntityByName("test").getRepositoryRevisionCode()
|
113 |
); |
114 |
|
115 |
// RowCreate test
|
116 |
RowCreateRequestClient createRequest = (RowCreateRequestClient) reporemote.createRowCreateRequest( |
117 |
"test",
|
118 |
localRevisionCodeForRowCreate |
119 |
); |
120 |
EditableFeature f = store.createNewFeature(); |
121 |
f.set("id",4); |
122 |
f.set("text","DDD"); |
123 |
String createdata = f.toJson().toString();
|
124 |
createRequest.setData(createdata); |
125 |
createRequest.setEfectiveDate(Timestamp.valueOf("2020-02-18 10:11:12.123")); |
126 |
createRequest.setComment("test row create (4,ddd)");
|
127 |
|
128 |
String req_s = StringUtils.join(IOUtils.readLines(createRequest.getRequestAsInputStream()),"\n").trim(); |
129 |
assertEquals("Row create LastErrorCode", ERR_OK, createRequest.getLastErrorCode());
|
130 |
assertEquals("Row create request", expected.get("RowCreateRequest").trim(), req_s); |
131 |
|
132 |
serverHandler = (RowCreateHandler) serverController.createRowCreateHandler(); |
133 |
|
134 |
is = new ByteArrayInputStream(req_s.getBytes()); |
135 |
os = serverHandler.handle(is); |
136 |
|
137 |
String resp_s = StringUtils.join(IOUtils.readLines(os),"\n").trim(); |
138 |
assertEquals("Row create response", expected.get("RowCreateResponse").trim(), resp_s); |
139 |
|
140 |
createRequest.consumeResponse(new ByteArrayInputStream(resp_s.getBytes())); |
141 |
assertEquals("Row create RelatedFeatureCode", relatedFeatureCode, createRequest.getRelatedFeatureCode());
|
142 |
assertEquals("Row create EntityCode", entityCode, createRequest.getEntityCode());
|
143 |
assertEquals("Row create EntityRevisionCode", localRevisionCodeForRowUpdate, createRequest.getEntityRevisionCode());
|
144 |
|
145 |
// RowUpdate test
|
146 |
RowUpdateRequestClient updateRequest = (RowUpdateRequestClient) reporemote.createRowUpdateRequest( |
147 |
"test",
|
148 |
localRevisionCodeForRowUpdate |
149 |
); |
150 |
f.set("text", "DD2"); |
151 |
f.set("VCSGISCODE", relatedFeatureCode);
|
152 |
String updatedata = f.toJson().toString();
|
153 |
updateRequest.setData(updatedata); |
154 |
createRequest.setEfectiveDate((Timestamp)null); |
155 |
updateRequest.setComment("test row update (4,dd2)");
|
156 |
|
157 |
req_s = StringUtils.join(IOUtils.readLines(updateRequest.getRequestAsInputStream()),"\n").trim();
|
158 |
assertEquals("Row update LastErrorCode", ERR_OK, updateRequest.getLastErrorCode());
|
159 |
assertEquals("Row update request", expected.get("RowUpdateRequest").trim(), req_s); |
160 |
|
161 |
serverHandler = serverController.createRowUpdateHandler(); |
162 |
|
163 |
is = new ByteArrayInputStream(req_s.getBytes()); |
164 |
os = serverHandler.handle(is); |
165 |
|
166 |
resp_s = StringUtils.join(IOUtils.readLines(os),"\n").trim();
|
167 |
assertEquals("Row update request", expected.get("RowUpdateResponse").trim(), resp_s); |
168 |
|
169 |
updateRequest.consumeResponse(new ByteArrayInputStream(resp_s.getBytes())); |
170 |
assertEquals("Row update EntityCode", entityCode, updateRequest.getEntityCode());
|
171 |
assertEquals("Row update EntityRevisionCode", localRevisionCodeForRowDelete, updateRequest.getEntityRevisionCode());
|
172 |
|
173 |
|
174 |
// RowDelete test
|
175 |
RowDeleteRequestClient deleteRequest = (RowDeleteRequestClient) reporemote.createRowDeleteRequest( |
176 |
"test",
|
177 |
localRevisionCodeForRowDelete |
178 |
); |
179 |
deleteRequest.setRelatedFeatureCode(createRequest.getRelatedFeatureCode()); |
180 |
deleteRequest.setComment("test row delete (4,dd2)");
|
181 |
deleteRequest.setEfectiveDate(Timestamp.valueOf("2020-02-19 10:11:12.123")); |
182 |
|
183 |
req_s = StringUtils.join(IOUtils.readLines(deleteRequest.getRequestAsInputStream()),"\n").trim();
|
184 |
assertEquals("Row delete request", expected.get("RowDeleteRequest").trim(), req_s); |
185 |
|
186 |
serverHandler = serverController.createRowDeleteHandler(); |
187 |
|
188 |
is = new ByteArrayInputStream(req_s.getBytes()); |
189 |
os = serverHandler.handle(is); |
190 |
|
191 |
resp_s = StringUtils.join(IOUtils.readLines(os),"\n").trim();
|
192 |
assertEquals("Row delete request", expected.get("RowDeleteResponse").trim(), resp_s); |
193 |
|
194 |
deleteRequest.consumeResponse(new ByteArrayInputStream(resp_s.getBytes())); |
195 |
assertEquals("Row delete EntityCode", entityCode, deleteRequest.getEntityCode());
|
196 |
assertEquals("Row delete EntityRevisionCode", localRevisionCodeAfterRowDelete, deleteRequest.getEntityRevisionCode());
|
197 |
|
198 |
repolocal.dispose(); |
199 |
} |
200 |
} |