com.github.raymanrt.orientqb.util.Commons.java Source code

Java tutorial

Introduction

Here is the source code for com.github.raymanrt.orientqb.util.Commons.java

Source

/*
 * Copyright 2015 Riccardo Tasso
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.github.raymanrt.orientqb.util;

import com.github.raymanrt.orientqb.query.Clause;
import com.github.raymanrt.orientqb.query.clause.CompositeClause;
import com.google.common.base.Function;
import com.google.common.collect.Lists;

import java.util.Collection;
import java.util.List;

import static com.github.raymanrt.orientqb.util.Joiner.j;
import static com.github.raymanrt.orientqb.util.Joiner.listJoiner;
import static com.google.common.collect.Collections2.transform;
import static com.google.common.collect.Lists.newArrayList;

public class Commons {

    private Commons() {
    };

    public static final Function<Clause, String> whereToStringFunction = new Function<Clause, String>() {
        @Override
        public String apply(Clause input) {
            String string = input.toString();
            if (input instanceof CompositeClause)
                string = j.join("( ", string, " )");
            return string;
        }
    };
    public static final Function<Object, String> toStringFunction = new Function<Object, String>() {
        @Override
        public String apply(Object input) {
            return input.toString();
        }
    };
    public static final Function<String, String> singleQuoteFunction = new Function<String, String>() {
        @Override
        public String apply(String input) {
            return singleQuote(input);
        }
    };
    private final static Function<Object, Object> castFunction = new Function<Object, Object>() {
        @Override
        public Object apply(Object input) {
            return cast(input);
        }
    };

    @SuppressWarnings("unchecked")
    public static String cast(Object value) {
        if (value instanceof String) {
            return singleQuote((String) value);
        }
        if (value instanceof Collection) {
            Collection<Object> collection = (Collection<Object>) value;
            collection = transform(collection, castFunction);
            return collectionToString(collection);
        }
        return value.toString();
    }

    public static String joinStrings(String... strings) {
        List<String> tokens = newArrayList(strings);
        tokens = Lists.transform(tokens, singleQuoteFunction);
        return listJoiner.join(tokens);
    }

    public static String singleQuote(String input) {
        return j.join("'", input.replace("'", "\\'"), "'");
    }

    public static String collectionToString(Collection<Object> collection) {
        return j.join("[", listJoiner.join(collection), "]");
    }

    public static String arrayToString(Object... array) {
        return j.join("[", listJoiner.join(array), "]");
    }

    public static String clean(String query) {
        return Patterns.manyWhiteSpaces.matcher(query).replaceAll(" ").trim();
    }

    public static boolean validVariable(String variable) {
        boolean isValid = variable.startsWith(":");
        isValid = isValid && !(variable.contains(Patterns.WHITESPACE));
        return isValid;
    }
}