public void appendSetValue(Value value, LiteralValue literal) {
Collection<String> values = literal.getValues();
if (literal.isComplex()) {
// use complex value
ProfileSetComplexValueType setValue = data.addNewSetComplexValue();
setValue.setIdref(value.getId());
if (values.isEmpty()) {
setValue.setNil();
} else {
for (String item : values) {
setValue.addItem(item);
}
}
} else {
ProfileSetValueType setValue = data.addNewSetValue();
setValue.setIdref(value.getId());
if (values.size() > 1) {
throw new UnsupportedOperationException("Value '"+value.getId()+"' has '"+values.size()+"' values.");
} else if (values.size() == 1) {
setValue.setStringValue(values.iterator().next());
} else { // empty
setValue.setNil();
}
}
}