Skip to content

Commit 5a1f988

Browse files
committed
fix testcase
1 parent 59dce35 commit 5a1f988

File tree

4 files changed

+44
-21
lines changed

4 files changed

+44
-21
lines changed

src/main/java/org/elasticsearch/plugin/nlpcn/executors/CSVResultsExtractor.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,6 @@ private List<String> createCSVLinesFromDocs(boolean flat, String separator, List
269269

270270
private List<String> createHeadersAndFillDocsMap(boolean flat, SearchHit[] hits, String scrollId, List<Map<String, Object>> docsAsMap) {
271271
Set<String> csvHeaders = new LinkedHashSet<>();
272-
if (this.queryAction instanceof DefaultQueryAction) {
273-
csvHeaders.addAll(((DefaultQueryAction) this.queryAction).getFieldNames());
274-
}
275272
for (SearchHit hit : hits) {
276273
Map<String, Object> doc = hit.getSourceAsMap();
277274
Map<String, DocumentField> fields = hit.getFields();
@@ -305,7 +302,18 @@ private List<String> createHeadersAndFillDocsMap(boolean flat, SearchHit[] hits,
305302
if (this.includeScrollId) {
306303
csvHeaders.add("_scroll_id");
307304
}
308-
return new ArrayList<>(csvHeaders);
305+
306+
List<String> headers = new ArrayList<>(csvHeaders);
307+
if (this.queryAction instanceof DefaultQueryAction) {
308+
List<String> fieldNames = ((DefaultQueryAction) this.queryAction).getFieldNames();
309+
headers.sort((o1, o2) -> {
310+
int i1 = fieldNames.indexOf(o1);
311+
int i2 = fieldNames.indexOf(o2);
312+
return Integer.compare(i1 < 0 ? Integer.MAX_VALUE : i1, i2 < 0 ? Integer.MAX_VALUE : i2);
313+
});
314+
}
315+
316+
return headers;
309317
}
310318

311319
private String findFieldValue(String header, Map<String, Object> doc, boolean flat, String separator) {

src/main/java/org/nlpcn/es4sql/jdbc/ObjectResultsExtractor.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@
1818
import org.nlpcn.es4sql.query.DefaultQueryAction;
1919
import org.nlpcn.es4sql.query.QueryAction;
2020

21-
import java.util.*;
21+
import java.util.ArrayList;
22+
import java.util.Collection;
23+
import java.util.LinkedHashSet;
24+
import java.util.List;
25+
import java.util.Map;
26+
import java.util.Set;
2227

2328
/**
2429
* Created by allwefantasy on 8/30/16.
@@ -259,10 +264,11 @@ private List<List<Object>> createLinesFromDocs(boolean flat, List<Map<String, Ob
259264

260265
private List<String> createHeadersAndFillDocsMap(boolean flat, SearchHit[] hits, String scrollId, List<Map<String, Object>> docsAsMap) {
261266
Set<String> headers = new LinkedHashSet<>();
267+
List<String> fieldNames = new ArrayList<>();
262268
if (this.queryAction instanceof DefaultQueryAction) {
263-
headers.addAll(((DefaultQueryAction) this.queryAction).getFieldNames());
269+
fieldNames.addAll(((DefaultQueryAction) this.queryAction).getFieldNames());
264270
}
265-
boolean hasScrollId = this.includeScrollId || headers.contains("_scroll_id");
271+
boolean hasScrollId = this.includeScrollId || fieldNames.contains("_scroll_id");
266272
for (SearchHit hit : hits) {
267273
Map<String, Object> doc = hit.getSourceAsMap();
268274
Map<String, DocumentField> fields = hit.getFields();
@@ -284,7 +290,16 @@ private List<String> createHeadersAndFillDocsMap(boolean flat, SearchHit[] hits,
284290
mergeHeaders(headers, doc, flat);
285291
docsAsMap.add(doc);
286292
}
287-
return new ArrayList<>(headers);
293+
294+
List<String> list = new ArrayList<>(headers);
295+
if (!fieldNames.isEmpty()) {
296+
list.sort((o1, o2) -> {
297+
int i1 = fieldNames.indexOf(o1);
298+
int i2 = fieldNames.indexOf(o2);
299+
return Integer.compare(i1 < 0 ? Integer.MAX_VALUE : i1, i2 < 0 ? Integer.MAX_VALUE : i2);
300+
});
301+
}
302+
return list;
288303
}
289304

290305
private Object findFieldValue(String header, Map<String, Object> doc, boolean flat) {

src/test/java/org/nlpcn/es4sql/CSVResultsExtractorTests.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ public void simpleSearchResultWithNestedOneFieldNotFlatNoAggs() throws Exception
7373

7474
List<String> lines = csvResult.getLines();
7575
Assert.assertEquals(7, lines.size());
76-
Assert.assertTrue(lines.contains("{firstname=Daenerys},Targaryen"));
77-
Assert.assertTrue(lines.contains("{firstname=Eddard},Stark"));
78-
Assert.assertTrue(lines.contains("{firstname=Brandon},Stark"));
79-
Assert.assertTrue(lines.contains("{firstname=Jaime},Lannister"));
76+
Assert.assertTrue(lines.contains("Targaryen,{firstname=Daenerys}"));
77+
Assert.assertTrue(lines.contains("Stark,{firstname=Eddard}"));
78+
Assert.assertTrue(lines.contains("Stark,{firstname=Brandon}"));
79+
Assert.assertTrue(lines.contains("Lannister,{firstname=Jaime}"));
8080

8181
}
8282

@@ -92,14 +92,14 @@ public void simpleSearchResultWithNestedTwoFieldsFromSameNestedNotFlatNoAggs() t
9292

9393
List<String> lines = csvResult.getLines();
9494
Assert.assertEquals(7, lines.size());
95-
Assert.assertTrue(lines.contains("{firstname=Daenerys, lastname=Targaryen},Targaryen") ||
96-
lines.contains("{lastname=Targaryen, firstname=Daenerys},Targaryen"));
97-
Assert.assertTrue(lines.contains("{firstname=Eddard, lastname=Stark},Stark") ||
98-
lines.contains("{lastname=Stark, firstname=Eddard},Stark"));
99-
Assert.assertTrue(lines.contains("{firstname=Brandon, lastname=Stark},Stark") ||
100-
lines.contains("{lastname=Stark, firstname=Brandon},Stark"));
101-
Assert.assertTrue(lines.contains("{firstname=Jaime, lastname=Lannister},Lannister") ||
102-
lines.contains("{lastname=Lannister, firstname=Jaime},Lannister") );
95+
Assert.assertTrue(lines.contains("Targaryen,{firstname=Daenerys, lastname=Targaryen}") ||
96+
lines.contains("Targaryen,{lastname=Targaryen, firstname=Daenerys}"));
97+
Assert.assertTrue(lines.contains("Stark,{firstname=Eddard, lastname=Stark}") ||
98+
lines.contains("Stark,{lastname=Stark, firstname=Eddard}"));
99+
Assert.assertTrue(lines.contains("Stark,{firstname=Brandon, lastname=Stark}") ||
100+
lines.contains("Stark,{lastname=Stark, firstname=Brandon}"));
101+
Assert.assertTrue(lines.contains("Lannister,{firstname=Jaime, lastname=Lannister}") ||
102+
lines.contains("Lannister,{lastname=Lannister, firstname=Jaime}") );
103103

104104
}
105105

src/test/java/org/nlpcn/es4sql/SQLFunctionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void functionAlias() throws Exception {
7272
List<String> headers = csvResult.getHeaders();
7373
List<String> content = csvResult.getLines();
7474
Assert.assertTrue(headers.contains("key"));
75-
Assert.assertTrue(content.contains("863 Wythe Place,863"));
75+
Assert.assertTrue(content.contains("863,863 Wythe Place"));
7676
}
7777

7878
@Test

0 commit comments

Comments
 (0)