All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.magentys.commons.adapt.string.MapAdapter Maven / Gradle / Ivy

The newest version!
package io.magentys.commons.adapt.string;

import io.magentys.commons.adapt.string.StringAdapters.StringAdapter;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class MapAdapter implements StringAdapter> {

    private final StringAdapter> listAdapter;
    private final MapEntryAdapter entryAdapter;

    public MapAdapter(final StringAdapter> listAdapter, final StringAdapter valueAdapter) {
        this.listAdapter = listAdapter;
        entryAdapter = new MapEntryAdapter(valueAdapter);
    }

    @Override
    public String toString(final Map t) {
        // Java 8
        // List stringList = t.entrySet().stream()
        // .map(entryAdapter::toString).collect(Collectors.toList());
        final List stringList = new LinkedList();

        for (final Entry entry : t.entrySet()) {
            stringList.add(entryAdapter.toString(entry));
        }

        return listAdapter.toString(stringList);
    }

    @Override
    public Map fromString(final String s) {

        // Java 8
        // return
        // listAdapter.fromString(s).stream().map(entryAdapter::fromString)
        // .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));

        final Map adapted = new HashMap();

        final List items = listAdapter.fromString(s);
        for (final String item : items) {
            final Entry e = entryAdapter.fromString(item);
            adapted.put(e.getKey(), e.getValue());
        }

        return adapted;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy