package com.datascience.datastoring.transforms;
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.datastoring.datamodels.memory.IncrementalNominalModel;
import com.datascience.datastoring.datamodels.memory.NominalModel;
import com.datascience.core.results.*;
import com.datascience.serialization.ISerializer;
import com.datascience.serialization.SerializationTransform;
import com.datascience.serialization.json.JSONUtils;
import com.datascience.utils.ITransformation;
import com.google.common.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Collection;
/**
* @Author: konrad
*/
public class SerializerBasedCoreTransformsFactory extends SingletonsStringCoreTransformsFactory {
protected ISerializer serializer;
public SerializerBasedCoreTransformsFactory(ISerializer serializer){
this.serializer = serializer;
}
@Override
public ITransformation<Collection<AssignedLabel<String>>, String> createNominalAssignsTransformation() {
return new SerializationTransform<Collection<AssignedLabel<String>>>(serializer,
JSONUtils.assignsStringType);
}
@Override
public ITransformation<Collection<LObject<String>>, String> createNominalObjectsTransformation() {
return new SerializationTransform<Collection<LObject<String>>>(serializer,
JSONUtils.objectsStringType);
}
@Override
public ITransformation<NominalModel, String> createNominalModelTransformation() {
return new SerializationTransform<NominalModel>(serializer, NominalModel.class);
}
@Override
public ITransformation<IncrementalNominalModel, String> createIncrementalNominalModelTransformation() {
return new SerializationTransform<IncrementalNominalModel>(serializer, IncrementalNominalModel.class);
}
@Override
public ITransformation<Collection<AssignedLabel<ContValue>>, String> createContAssignsTransformation() {
return new SerializationTransform<Collection<AssignedLabel<ContValue>>>(serializer,
JSONUtils.assignsContValueType);
}
@Override
public ITransformation<Collection<LObject<ContValue>>, String> createContObjectsTransformation() {
return new SerializationTransform<Collection<LObject<ContValue>>>(serializer,
JSONUtils.objectsContValueType);
}
@Override
public ITransformation<Collection<Worker>, String> createWorkersTransformation() {
return new SerializationTransform<Collection<Worker>>(serializer,
new TypeToken<Collection<Worker>>(){}.getType()); // TODO XXX FIXME
}
@Override
public ITransformation<DatumContResults, String> createDatumContResultsTransformation() {
return new SerializationTransform<DatumContResults>(serializer, DatumContResults.class);
}
@Override
public ITransformation<WorkerContResults, String> createWorkerContResultsTransformation() {
return new SerializationTransform<WorkerContResults>(serializer, WorkerContResults.class);
}
@Override
public ITransformation<DatumResult, String> createDatumStringResultsTransformation() {
return new SerializationTransform<DatumResult>(serializer, DatumResult.class);
}
@Override
public ITransformation<WorkerResult, String> createWorkerStringResultsTransformation(ResultsFactory.WorkerResultNominalFactory wrnf) {
return new SerializationTransform<WorkerResult>(serializer, WorkerResult.class);
}
@Override
public String getID() {
return serializer.getMediaType(); // TODO XXX FIXME this can be very wrong .. we should add getID to serializer
}
}