package com.datascience.utils.transformations.thrift;
import com.datascience.core.base.AssignedLabel;
import com.datascience.core.base.ContValue;
import com.datascience.core.base.LObject;
import com.datascience.core.base.Worker;
import com.datascience.core.results.*;
import com.datascience.datastoring.datamodels.memory.IncrementalNominalModel;
import com.datascience.datastoring.datamodels.memory.NominalModel;
import com.datascience.datastoring.transforms.ICoreTransformsFactory;
import com.datascience.utils.ITransformation;
import com.datascience.utils.transformations.ComposingTransform;
import com.datascience.utils.transformations.thrift.generated.*;
import com.google.gson.JsonObject;
import org.apache.thrift.TBase;
import java.io.InputStream;
import java.util.Collection;
/**
* @Author: konrad
*/
public class ThriftCoreTransformFactory implements ICoreTransformsFactory<InputStream> {
protected <A, B extends TBase> ITransformation<A, InputStream> compose(ITransformation<A, B> base, B object){
return new ComposingTransform<A, B, InputStream>(base,
new ThriftCoreTransforms.ThriftBaseTransform<B>(object));
}
@Override
public ITransformation<JsonObject, InputStream> createSettingsTransform() {
return compose(null, new TSettings());
}
@Override
public ITransformation<String, InputStream> createKindTransform() {
return compose(null, new TKind());
}
@Override
public ITransformation<Collection<AssignedLabel<String>>, InputStream> createNominalAssignsTransformation() {
return compose(null, new TAssigns());
}
@Override
public ITransformation<Collection<LObject<String>>, InputStream> createNominalObjectsTransformation() {
return compose(null, new TLObjects());
}
@Override
public ITransformation<NominalModel, InputStream> createNominalModelTransformation() {
//TODO!!!
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public ITransformation<IncrementalNominalModel, InputStream> createIncrementalNominalModelTransformation() {
//TODO!!!
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public ITransformation<Collection<AssignedLabel<ContValue>>, InputStream> createContAssignsTransformation() {
return compose(null, new TAssigns());
}
@Override
public ITransformation<Collection<LObject<ContValue>>, InputStream> createContObjectsTransformation() {
return compose(null, new TLObjects());
}
@Override
public ITransformation<Collection<Worker>, InputStream> createWorkersTransformation() {
return compose(new ThriftCoreTransforms.WorkersTransform(), new TWorkers());
}
@Override
public ITransformation<DatumContResults, InputStream> createDatumContResultsTransformation() {
return compose(null, new TDatumContResults());
}
@Override
public ITransformation<WorkerContResults, InputStream> createWorkerContResultsTransformation() {
return compose(null, new TWorkerContResults());
}
@Override
public ITransformation<DatumResult, InputStream> createDatumStringResultsTransformation() {
return compose(null, new TDatumNominalResults());
}
@Override
public ITransformation<WorkerResult, InputStream> createWorkerStringResultsTransformation(ResultsFactory.WorkerResultNominalFactory wrnf) {
return compose(null, new TWorkerNominalResults());
}
@Override
public String getID() {
return "THRIFT";
}
}