%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/yacy/source/net/yacy/contentcontrol/
Upload File :
Create Path :
Current File : //home/waritko/yacy/source/net/yacy/contentcontrol/SMWListImporterFormatObsolete.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;
        }
    }
}

Zerion Mini Shell 1.0