com.github.dakusui.jcunit.fsm.Parameters Maven / Gradle / Ivy
package com.github.dakusui.jcunit.fsm;
import com.github.dakusui.jcunit8.factorspace.Factor;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
public interface Parameters extends Iterable {
Parameters EMPTY = new Parameters() {
@Override
public List values() {
return Collections.emptyList();
}
@Override
public int size() {
return values().size();
}
@Override
public Factor get(int i) {
throw new NoSuchElementException();
}
@Override
public Iterator iterator() {
return Collections.emptyList().iterator();
}
};
List values();
int size();
Factor get(int i);
class Builder {
private final String name;
private List parameters = new LinkedList<>();
public Builder(String name) {
this.name = requireNonNull(name);
}
public Builder add(Object... levels) {
parameters.add(Factor.create(
String.format("%s-p%d", this.name, parameters.size()),
levels
));
return this;
}
public Parameters build() {
return new Parameters() {
@Override
public Iterator iterator() {
return parameters.iterator();
}
@Override
public List values() {
return parameters.stream().map(Factor::getLevels).collect(Collectors.toList());
}
@Override
public int size() {
return parameters.size();
}
@Override
public Factor get(int i) {
return parameters.get(i);
}
};
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy