Package org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget

Source Code of org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderImpl

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget;

import com.google.common.annotations.VisibleForTesting;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;

import org.waveprotocol.wave.client.debug.logger.DomLogger;
import org.waveprotocol.wave.common.logging.AbstractLogger.Level;
import org.waveprotocol.wave.common.logging.LoggerBundle;

import java.util.ArrayList;
import java.util.List;

public class GadgetInfoProviderImpl implements GadgetInfoProvider {
  private final static LoggerBundle LOG = new DomLogger("GadgetInfoProvider");
  public static final String GADGET_INFO_PATH = "/gadget/gadgetlist";

  private ArrayList<GadgetInfo> gadgetList;
  private Listener listener;
  private GadgetInfoParser parser;

  public GadgetInfoProviderImpl(GadgetInfoParser parser) {
    this.parser = parser;
    gadgetList = new ArrayList<GadgetInfo>();
  }

  @VisibleForTesting
  void addGadgetJson(String json) {
    gadgetList.addAll(parser.parseGadgetInfoJson(json));
  }

  private void notifyListener() {
    if (listener != null) {
      listener.onUpdate();
    }
  }

  /**
   * @see org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderInterface#getGadgetInfoList(String,
   *      String)
   */
  public List<GadgetInfo> getGadgetInfoList(String filter, String category) {
    List<GadgetInfo> filteredList = new ArrayList<GadgetInfo>();
    String lowerCaseFilter = filter.toLowerCase();
    for (GadgetInfo gadget : gadgetList) {
      String gadgetName = gadget.getName().toLowerCase();
      String gadgetDesc = gadget.getDescription().toLowerCase();
      if ((gadgetName.contains(lowerCaseFilter) || gadgetDesc.contains(lowerCaseFilter))
          && (category.equals(GadgetCategoryType.ALL.getType())
              || category.equals(gadget.getPrimaryCategory().getType()) || category.equals(gadget
              .getSecondaryCategory().getType()))) {
        filteredList.add(gadget);
      }
    }
    return filteredList;
  }

  /**
   * @see org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderInterface#setListener(org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderInterface.Listener)
   */
  public void setListener(Listener listener) {
    this.listener = listener;
  }

  /**
   * @see org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderInterface#startLoadingGadgetList()
   */
  public void startLoadingGadgetList() {
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, GADGET_INFO_PATH);
    try {
      builder.sendRequest(null, new RequestCallback() {
        public void onError(Request request, Throwable exception) {
          LOG.log(Level.ERROR, "Error fetching gadget info list from server: " + exception);
        }

        public void onResponseReceived(Request request, Response response) {
          if (200 == response.getStatusCode()) {
            String jsonResponse = response.getText();
            addGadgetJson(jsonResponse);
            notifyListener();
            return;
          } else {
            LOG.log(Level.ERROR, "Server responded with a HTTP error: " + response.getStatusCode());
          }
        }
      });
    } catch (RequestException e) {
      LOG.log(Level.ERROR, "Exception while sending HTTP request: " + e.toString());
    }
  }
}
TOP

Related Classes of org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.