All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.util.gson.BasicIteratorTaskAdapter Maven / Gradle / Ivy

The newest version!
package prerna.util.gson;

import java.io.IOException;

import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

import prerna.query.querystruct.SelectQueryStruct;
import prerna.sablecc2.om.task.BasicIteratorTask;
import prerna.sablecc2.om.task.options.TaskOptions;

public class BasicIteratorTaskAdapter extends AbstractSemossTypeAdapter {

	static enum MODE {RECREATE_NEW, CONTINUE_PREVIOUS_ITERATING}
	private MODE curMode = MODE.RECREATE_NEW;
	
	@Override
	public BasicIteratorTask read(JsonReader in) throws IOException {
		String taskId = null;
		int numCollected = 0;
		long internalOffset = 0;
		TaskOptions tOptions = null;
		SelectQueryStruct qs = null;
		
		in.beginObject();
		while(in.hasNext()) {
			String key = in.nextName();
			JsonToken peek = in.peek();
			if(peek == JsonToken.NULL) {
				in.nextNull();
				continue;
			}
			
			if(key.equals("taskType")) {
				in.nextString();
			} else if(key.equals("id")) {
				taskId = in.nextString();
			} else if(key.equals("numCollected")) {
				numCollected = (int) in.nextLong();
			}
			else if(key.equals("internalOffset")) {
				internalOffset = in.nextLong();
			} else if(key.equals("taskOptions")) {
				TaskOptionsAdapter adapter = new TaskOptionsAdapter();
				tOptions = (TaskOptions) adapter.read(in);
			} else if(key.equals("qs")) {
				SelectQueryStructAdapter adapter = new SelectQueryStructAdapter();
				adapter.setInsight(this.insight);
				qs = adapter.read(in);
			}
		}
		in.endObject();

		BasicIteratorTask task = new BasicIteratorTask(qs);
		task.setId(taskId);
		task.setTaskOptions(tOptions);
		task.setNumCollect(numCollected);
		task.setInternalOffset(internalOffset);
		if(curMode == MODE.CONTINUE_PREVIOUS_ITERATING) {
			task.setInternalOffset(internalOffset + numCollected);
		}
		
		return task;
	}

	@Override
	public void write(JsonWriter out, BasicIteratorTask value) throws IOException {
		out.beginObject();
		out.name("taskType").value("basic");
		out.name("id").value(value.getId());
		out.name("numCollected").value(value.getNumCollect());
		out.name("internalOffset").value(value.getInternalOffset());
		out.name("taskOptions");
		if(value.getTaskOptions() != null) {
			TaskOptionsAdapter adapter = new TaskOptionsAdapter();
			adapter.write(out, value.getTaskOptions());
		} else {
			out.nullValue();
		}
		out.name("qs");
		SelectQueryStruct qs = value.getQueryStruct();
		SelectQueryStructAdapter adapter = new SelectQueryStructAdapter();
		adapter.write(out, qs);
		out.endObject();
	}
	
	public void setCurMode(MODE curMode) {
		this.curMode = curMode;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy