result set
This commit is contained in:
parent
4a9fca0bbd
commit
6c88c90f9f
|
@ -1,6 +1,7 @@
|
|||
package com.loafle.overflow.crawler.result;
|
||||
|
||||
import com.loafle.overflow.crawler.config.Item;
|
||||
import com.loafle.overflow.crawler.config.Query;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
@ -19,19 +20,19 @@ public class OFResultSetRow extends OFResultSet{
|
|||
|
||||
public void setMeta() {
|
||||
|
||||
List<String> meta = new ArrayList<>();
|
||||
List<String> meta = new ArrayList<>();
|
||||
|
||||
List<String> arrayColumns = (List<String>) this.item.getQuery().getQueryInfo().get("arrayColumns");
|
||||
List<String> keyColumns = (List<String>) this.item.getQuery().getQueryInfo().get("keyColumns");
|
||||
String valueColumn = (String) this.item.getQuery().getQueryInfo().get("valueColumn");
|
||||
List<String> arrayColumns = (List<String>) this.item.getQuery().getQueryInfo().get("arrayColumns");
|
||||
List<String> keyColumns = (List<String>) this.item.getQuery().getQueryInfo().get("keyColumns");
|
||||
String valueColumn = (String) this.item.getQuery().getQueryInfo().get("valueColumn");
|
||||
|
||||
for (String c : arrayColumns) {
|
||||
meta.add(c);
|
||||
}
|
||||
for (String c: keyColumns) {
|
||||
meta.add(c);
|
||||
}
|
||||
meta.add(valueColumn);
|
||||
for (String c : arrayColumns) {
|
||||
meta.add(c);
|
||||
}
|
||||
for (String c: keyColumns) {
|
||||
meta.add(c);
|
||||
}
|
||||
meta.add(valueColumn);
|
||||
|
||||
if(this.meta == null) {
|
||||
this.meta = new HashMap<>();
|
||||
|
@ -45,7 +46,52 @@ public class OFResultSetRow extends OFResultSet{
|
|||
|
||||
public Map<String, String> parse() {
|
||||
|
||||
return null;
|
||||
Map<String, String> returnMap = new HashMap<>();
|
||||
|
||||
String valueColumn = (String) this.item.getQuery().getQueryInfo().get("valueColumn");
|
||||
|
||||
for (List<String> row : this.rows) {
|
||||
String key = makeKey(row);
|
||||
returnMap.put(key,row.get(this.meta.get(valueColumn)));
|
||||
}
|
||||
|
||||
return returnMap;
|
||||
}
|
||||
|
||||
private String makeKey(List<String> data) {
|
||||
|
||||
Query query = this.item.getQuery();
|
||||
List<String> arrayColumns = (List<String>) this.item.getQuery().getQueryInfo().get("arrayColumns");
|
||||
List<String> keyColumns = (List<String>) this.item.getQuery().getQueryInfo().get("keyColumns");
|
||||
List<String> keys = query.getKeys();
|
||||
List<String> metrics = query.getKeys();
|
||||
|
||||
// 동적 키인지 일반 키들인지 체크해야함 // 일단은 동적 키적용
|
||||
String metricsType = (String) query.getQueryInfo().get("metricsType");
|
||||
|
||||
boolean find = false;
|
||||
int findIndex = -1;
|
||||
for (String keyColumn: keyColumns) {
|
||||
String row = data.get(this.meta.get(keyColumn));
|
||||
for (int i =0 ; i < keys.size() ; ++i) {
|
||||
if (row.equals(keys.get(i))) {
|
||||
findIndex = i;
|
||||
find = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (find == true) {break;}
|
||||
}
|
||||
|
||||
String metric = metrics.get(findIndex);
|
||||
|
||||
for (int i =0 ; i< arrayColumns.size() ; ++i) {
|
||||
// replace
|
||||
String k = "$" + i;
|
||||
metric = metric.replace(k,data.get(this.meta.get(arrayColumns.get(i))));
|
||||
}
|
||||
|
||||
return metric;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user