package com.levigo.samplelib;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.levigo.samplelib.controllers.AbstractController;
import com.levigo.samplelib.controllers.ExecutionController;
import com.levigo.samplelib.controllers.StartStopController;
import com.levigo.samplelib.descriptors.ControllerDescriptor;
import com.levigo.samplelib.descriptors.ExecutionControllerDescriptor;
import com.levigo.samplelib.descriptors.SampleDescriptor;
import com.levigo.samplelib.descriptors.StartStopControllerDescriptor;
public class SampleInstance {
private final SampleManager manager;
private final SampleDescriptor descriptor;
private final List<AbstractController> controllers;
public SampleInstance(SampleManager manager, SampleDescriptor descriptor) {
super();
this.manager = manager;
this.descriptor = descriptor;
// FIXME that should be done later and with better error handling
final Object si = manager.createSampleInstance(descriptor);
final List<AbstractController> temp = new ArrayList<AbstractController>(descriptor.getControllers().size());
for (ControllerDescriptor desc : descriptor.getControllers()) {
if (desc instanceof ExecutionControllerDescriptor) {
temp.add(ExecutionController.create(si, (ExecutionControllerDescriptor) desc));
} else if (desc instanceof StartStopControllerDescriptor) {
temp.add(StartStopController.create(si, (StartStopControllerDescriptor) desc));
}
}
this.controllers = Collections.unmodifiableList(temp);
}
public SampleDescriptor getDescriptor() {
return descriptor;
}
public SampleManager getManager() {
return manager;
}
public List<AbstractController> getControllers() {
return controllers;
}
}