118 lines
2.9 KiB
Java
118 lines
2.9 KiB
Java
package net.yacy.contentcontrol;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Reader;
|
|
import java.util.Iterator;
|
|
import java.util.concurrent.ArrayBlockingQueue;
|
|
|
|
import net.yacy.cora.util.ConcurrentLog;
|
|
|
|
import org.json.simple.JSONArray;
|
|
import org.json.simple.JSONObject;
|
|
import org.json.simple.parser.JSONParser;
|
|
import org.json.simple.parser.ParseException;
|
|
|
|
public class SMWListImporterFormatObsolete implements Runnable{
|
|
|
|
private final ArrayBlockingQueue<SMWListRow> listEntries;
|
|
private final Reader importFile;
|
|
private final JSONParser parser;
|
|
|
|
public SMWListImporterFormatObsolete(final Reader importFile, final int queueSize) {
|
|
this.listEntries = new ArrayBlockingQueue<SMWListRow>(queueSize);
|
|
this.importFile = importFile;
|
|
this.parser = new JSONParser();
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
ConcurrentLog.info("SMWLISTSYNC", "Importer run()");
|
|
Object obj = this.parser.parse(this.importFile);
|
|
|
|
JSONObject jsonObject = (JSONObject) obj;
|
|
|
|
JSONArray items = (JSONArray) jsonObject.get("items");
|
|
|
|
@SuppressWarnings("unchecked")
|
|
Iterator<JSONObject> iterator = items.iterator();
|
|
while (iterator.hasNext()) {
|
|
this.parseItem (iterator.next());
|
|
}
|
|
|
|
} catch (final IOException e) {
|
|
ConcurrentLog.logException(e);
|
|
} catch (final ParseException e) {
|
|
ConcurrentLog.logException(e);
|
|
} finally {
|
|
|
|
try {
|
|
ConcurrentLog.info("SMWLISTSYNC", "Importer inserted poison pill in queue");
|
|
this.listEntries.put(SMWListRow.POISON);
|
|
} catch (final InterruptedException e) {
|
|
ConcurrentLog.logException(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void parseItem(JSONObject jsonObject) {
|
|
|
|
try {
|
|
SMWListRow row = new SMWListRow();
|
|
@SuppressWarnings("unchecked")
|
|
Iterator<String> iterator = jsonObject.keySet().iterator();
|
|
|
|
while (iterator.hasNext()) {
|
|
String entryKey = iterator.next();
|
|
|
|
Object value = jsonObject.get (entryKey);
|
|
String valueKey = "";
|
|
|
|
if (value instanceof java.lang.String) {
|
|
valueKey = value.toString();
|
|
} else if (value instanceof JSONArray) {
|
|
valueKey = jsonListAll ((JSONArray) value);
|
|
}
|
|
|
|
row.add (entryKey, valueKey);
|
|
}
|
|
|
|
this.listEntries.put(row);
|
|
|
|
} catch (final Exception e) {
|
|
ConcurrentLog.info("SMWLISTSYNC", "import of entry failed");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
private String jsonListAll(JSONArray value) {
|
|
String res = "";
|
|
|
|
@SuppressWarnings("unchecked")
|
|
Iterator<Object> iterator = value.listIterator();
|
|
while (iterator.hasNext()) {
|
|
Object val = iterator.next();
|
|
res += val.toString()+",";
|
|
}
|
|
|
|
if (res.endsWith (",")) {
|
|
res = res.substring (0, res.length()-1);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
public SMWListRow take() {
|
|
try {
|
|
return this.listEntries.take();
|
|
} catch (final InterruptedException e) {
|
|
ConcurrentLog.logException(e);
|
|
return null;
|
|
}
|
|
}
|
|
}
|