org.rstudio.core.client.js.JsUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.rstudio.core.client.js.JsUtil.java

Source

/*
 * JsUtil.java
 *
 * Copyright (C) 2009-12 by RStudio, Inc.
 *
 * Unless you have received this program directly from RStudio pursuant
 * to the terms of a commercial license agreement with RStudio, then
 * this program is licensed to you under the terms of version 3 of the
 * GNU Affero General Public License. This program is distributed WITHOUT
 * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
 * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
 *
 */
package org.rstudio.core.client.js;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayBoolean;
import com.google.gwt.core.client.JsArrayInteger;
import com.google.gwt.core.client.JsArrayString;

import java.util.Iterator;

public class JsUtil {
    public static Iterable<String> asIterable(final JsArrayString array) {
        return new Iterable<String>() {
            @Override
            public Iterator<String> iterator() {
                return new Iterator<String>() {
                    int i = 0;

                    @Override
                    public boolean hasNext() {
                        return array.length() > i;
                    }

                    @Override
                    public String next() {
                        return array.get(i++);
                    }

                    @Override
                    public void remove() {
                        throw new UnsupportedOperationException();
                    }
                };
            }
        };
    }

    public static <T extends JavaScriptObject> Iterable<T> asIterable(final JsArray<T> array) {
        return new Iterable<T>() {
            @Override
            public Iterator<T> iterator() {
                return new Iterator<T>() {
                    int i = 0;

                    @Override
                    public boolean hasNext() {
                        return array.length() > i;
                    }

                    @Override
                    public T next() {
                        return array.get(i++);
                    }

                    @Override
                    public void remove() {
                        throw new UnsupportedOperationException();
                    }
                };
            }
        };
    }

    public static boolean areEqual(JsArrayString a, JsArrayString b) {
        if (a == null && b == null)
            return true;
        else if (a == null && b != null)
            return false;
        else if (a != null && b == null)
            return false;
        else if (a.length() != b.length())
            return false;
        else {
            for (int i = 0; i < a.length(); i++) {
                if (!a.get(i).equals(b.get(i)))
                    return false;
            }

            return true;
        }
    }

    public static String[] toStringArray(JsArrayString strings) {
        String[] result = new String[strings.length()];
        for (int i = 0; i < strings.length(); i++)
            result[i] = strings.get(i);
        return result;
    }

    public static JsArrayString toJsArrayString(Iterable<String> strings) {
        JsArrayString result = JsArrayString.createArray().cast();
        for (String s : strings)
            result.push(s);
        return result;
    }

    public static JsArrayString toJsArrayString(String[] strings) {
        JsArrayString result = JsArrayString.createArray().cast();
        for (String s : strings)
            result.push(s);
        return result;
    }

    public static JsArrayBoolean toJsArrayBoolean(Iterable<Boolean> strings) {
        JsArrayBoolean result = JsArrayBoolean.createArray().cast();
        for (Boolean s : strings)
            result.push(s);
        return result;
    }

    public static JsArrayBoolean toJsArrayBoolean(Boolean[] strings) {
        JsArrayBoolean result = JsArrayBoolean.createArray().cast();
        for (Boolean s : strings)
            result.push(s);
        return result;
    }

    public static JsArrayInteger toJsArrayInteger(Iterable<Integer> integers) {
        JsArrayInteger result = JsArrayInteger.createArray().cast();
        for (Integer i : integers)
            result.push(i);
        return result;
    }

    public native static JavaScriptObject createEmptyArray(int length) /*-{
                                                                       return new Array(length);
                                                                       }-*/;

}