mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-24 17:51:09 +07:00
43 lines
1.1 KiB
Java
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
|
|
));
|
|
}
|
|
} |