Files
2014-10-08 14:06:00 +02:00

43 lines
1.1 KiB
Java

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
abstract class FieldCommand implements Comparable<FieldCommand> {
protected DataFieldMeta getMeta() {
return null;
}
}
abstract class DataFieldMeta implements Comparable<DataFieldMeta> {
protected String getId() {
return "";
}
}
interface DataFieldRepository {
List<ValueHolder> getStrings(String dataFieldPath, Object subject, Core1Account account);
}
final class ValueHolder {
DataFieldMeta getMetadata() {
return null;
}
}
interface Core1Account{}
class Test {
public Map<String, ValueHolder> foo(final DataFieldRepository repository, final List<FieldCommand> fields, final Object sourceObject, final Core1Account account) {
return fields
.stream()
.map(field -> field.getMeta().getId())
.distinct()
.map(dataFieldId -> repository.getStrings(dataFieldId, sourceObject, account))
.filter(values -> !values.isEmpty())
.map(values -> values.get(0))
.collect(Collectors.toMap(
value -> value.getMetadata().getId(),
value -> value
));
}
}