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

org.opentripplanner.ext.transmodelapi.support.DataFetcherDecorator Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version
package org.opentripplanner.ext.transmodelapi.support;

import graphql.schema.DataFetchingEnvironment;

import java.util.Arrays;
import java.util.Map;
import java.util.function.Consumer;

public class DataFetcherDecorator {
    private final DataFetchingEnvironment environment;

    public DataFetcherDecorator(DataFetchingEnvironment e) {
        this.environment = e;
    }

    public   void argument(String name, Consumer consumer) {
        call(environment, name, consumer);
    }
    public   void argument(String name, Consumer consumer, Runnable alternativeAction) {
        if(GqlUtil.hasArgument(environment, name)) {
            argument(name, consumer);
        }
        else {
            alternativeAction.run();
        }
    }

    private static  void call(Map m, String name, Consumer consumer) {
        if (!name.contains(".")) {
            if (hasArgument(m, name)) {
                T v = m.get(name);
                consumer.accept(v);
            }
        } else {
            String[] parts = name.split("\\.");
            if (hasArgument(m, parts[0])) {
                Map nm = (Map) m.get(parts[0]);
                call(nm, String.join(".", Arrays.copyOfRange(parts, 1, parts.length)), consumer);
            }
        }
    }

    private static  void call(DataFetchingEnvironment environment, String name, Consumer consumer) {
        if (!name.contains(".")) {
            if (GqlUtil.hasArgument(environment, name)) {
                consumer.accept(environment.getArgument(name));
            }
        } else {
            String[] parts = name.split("\\.");
            if (GqlUtil.hasArgument(environment, parts[0])) {
                Map nm = (Map) environment.getArgument(parts[0]);
                call(nm, String.join(".", Arrays.copyOfRange(parts, 1, parts.length)), consumer);
            }
        }
    }

    public static  boolean hasArgument(Map m, String name) {
        return m.containsKey(name) && m.get(name) != null;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy