Package org.mongodb.meclipse

Source Code of org.mongodb.meclipse.MeclipsePlugin

package org.mongodb.meclipse;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Set;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.wizards.IWizardDescriptor;
import org.mongodb.meclipse.preferences.MongoInstance;
import org.mongodb.meclipse.views.FilterPlacement;
import org.mongodb.meclipse.views.MeclipseView;
import org.mongodb.meclipse.views.objects.Filter;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;

/**
* The activator class controls the plug-in life cycle
*
* @author Flavio [FlaPer87] Percoco Premoli, walknwind
*/
public class MeclipsePlugin extends AbstractUIPlugin {

  // The plug-in ID
  public static final String PLUGIN_ID = "org.mongodb.meclipse";

  private HashMap<String, MongoInstance> mongoInstances = new HashMap<String, MongoInstance>();
  private HashMap<FilterPlacement, Set<Filter>> filters = new HashMap<FilterPlacement, Set<Filter>>();
  private MeclipseView mongoDbView;
  private static final ResourceBundle bundle = ResourceBundle
      .getBundle("messages");

  public static String getCaption(String key) {
    return bundle.getString(key);
  }

  public void setMongoDbView(MeclipseView mongoDbView) {
    this.mongoDbView = mongoDbView;
  }

  public MeclipseView getMongoDbView() {
    return mongoDbView;
  }

  // The shared instance
  private static MeclipsePlugin plugin;

  /**
   * The constructor
   */
  public MeclipsePlugin() {
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
   * )
   */
  public void start(BundleContext context) throws Exception {
    super.start(context);
    plugin = this;
    MongoInstance[] savedServers = loadSavedServers();
    for (MongoInstance savedServer : savedServers) {
      mongoInstances.put(savedServer.getName(), savedServer);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
   * )
   */
  public void stop(BundleContext context) throws Exception {
    plugin = null;
    saveServers();
    super.stop(context);
  }

  /**
   * Returns the shared instance
   *
   * @return the shared instance
   */
  public static MeclipsePlugin getDefault() {
    return plugin;
  }

  /**
   * Taken from EclipseTracPlugin
   *
   * Returns an image descriptor for the image file at the given plug-in
   * relative path
   *
   * @param path
   *            the path
   * @return the image descriptor
   */
  protected static ImageDescriptor getImageDescriptor(String path) {
    return imageDescriptorFromPlugin(PLUGIN_ID, path);
  }

  // IMAGE HANDLING
  public static final String COLLECTION_IMG_ID = "./icons/table.png";
  public static final String CONNECTION_IMG_ID = "./icons/leaf.png";
  public static final String CONNECTION_ERROR_IMG_ID = "./icons/leaf_error.png";
  public static final String DATABASE_IMG_ID = "./icons/database.png";
  public static final String FILTER_IMG_ID = "./icons/table_go.png";
  public static final String GET_ALL_IMG_ID = "./icons/getAll.gif";
  public static final String GET_NEXT_IMG_ID = "./icons/next.gif";
  public static final String FIND_IMG_ID = "./icons/find.gif";
  public static final String HELP_IMG_ID = "./icons/help.gif";

  final List<String> IMG_ID_LIST = new ArrayList<String>() {
    /**
     * Generated by Eclipse
     */
    private static final long serialVersionUID = 666142153396600669L;

    {
      add(COLLECTION_IMG_ID);
      add(CONNECTION_IMG_ID);
      add(CONNECTION_ERROR_IMG_ID);
      add(DATABASE_IMG_ID);
      add(FILTER_IMG_ID);
      add(GET_NEXT_IMG_ID);
      add(GET_ALL_IMG_ID);
      add(FIND_IMG_ID);
      add(HELP_IMG_ID);
    }
  };

  @Override
  protected void initializeImageRegistry(ImageRegistry registry) {
    super.initializeImageRegistry(registry);
    Bundle bundle = Platform.getBundle(PLUGIN_ID);
    for (String img_id : IMG_ID_LIST) {
      ImageDescriptor myImage = ImageDescriptor.createFromURL(FileLocator
          .find(bundle, new Path(img_id), null));
      registry.put(img_id, myImage);
    }
  }

  public void addMongo(String name, MongoInstance conn) {
    this.mongoInstances.put(name, conn);
  }

  public MongoInstance getMongoInstance(String name) {
    return mongoInstances.get(name);
  }

  public Set<String> getMongoNames() {
    return mongoInstances.keySet();
  }

  public void addFilter(FilterPlacement placement, Filter filter) {
    Set<Filter> filtersThere = filters.get(placement);

    if (filtersThere == null)
      filtersThere = new HashSet<Filter>();
    filtersThere.add(filter);

    filters.put(placement, filtersThere);
    getMongoDbView().refreshMe();
  }

  private MongoInstance[] loadSavedServers() {
    CsvReader reader = null;
    try {
      IPath libPath = MeclipsePlugin.getDefault().getStateLocation();
      libPath = libPath.append("servers.cfg");
      File file = libPath.toFile();
      if (!file.exists())
        return new MongoInstance[0];

      reader = new CsvReader(new BufferedReader(new FileReader(file)));

      java.util.List<MongoInstance> savedServersList = new ArrayList<MongoInstance>();
      while (reader.readRecord()) {
        MongoInstance server = new MongoInstance(reader.get(0));
        server.setHost(reader.get(1));
        try {
          server.setPort(Integer.valueOf(reader.get(2)));
        } catch (NumberFormatException e) {
          System.out.println(e);
        }
        savedServersList.add(server);
      }
      return savedServersList.toArray(new MongoInstance[savedServersList
          .size()]);
    } catch (IOException ex) {
      ex.printStackTrace();
    } finally {
      if (reader != null) {
        reader.close();
      }
    }

    return new MongoInstance[0];
  }

  private void saveServers() {
    // save server preferences here
    CsvWriter writer = null;
    try {
      IPath libPath = getStateLocation();
      libPath = libPath.append("servers.cfg");
      File file = libPath.toFile();
      if (!file.exists()) {
        file.createNewFile();
      }
      writer = new CsvWriter(new FileWriter(file, false), ',');
      for (MongoInstance server : mongoInstances.values()) {
        writer.write(server.getName());
        writer.write(server.getHost());
        writer.write(String.valueOf(server.getPort()));
        writer.endRecord();
      }
    } catch (IOException ex) {
      ex.printStackTrace();
    } finally {
      if (writer != null) {
        writer.close();
      }
    }
  }

  public void removeMongo(String name) {
    mongoInstances.remove(name);
  }

  /**
   * Stolen from
   * http://torkildr.blogspot.com/2010/07/invoking-eclipse-wizard.html
   *
   * @param id
   */
  public void openWizard(String id) {
    // First see if this is a "new wizard".
    IWizardDescriptor descriptor = PlatformUI.getWorkbench()
        .getNewWizardRegistry().findWizard(id);
    // If not check if it is an "import wizard".
    if (descriptor == null) {
      descriptor = PlatformUI.getWorkbench().getImportWizardRegistry()
          .findWizard(id);
    }
    // Or maybe an export wizard
    if (descriptor == null) {
      descriptor = PlatformUI.getWorkbench().getExportWizardRegistry()
          .findWizard(id);
    }
    try {
      // Then if we have a wizard, open it.
      if (descriptor != null) {
        IWizard wizard = descriptor.createWizard();
        WizardDialog wd = new WizardDialog(PlatformUI.getWorkbench()
            .getDisplay().getActiveShell(), wizard);
        wd.setTitle(wizard.getWindowTitle());
        wd.open();
      }
    } catch (CoreException e) {
      e.printStackTrace();
    }
  }

  public Set<Filter> getFilters(FilterPlacement filterPlacement) {
    return filters.get(filterPlacement);
  }
}
TOP

Related Classes of org.mongodb.meclipse.MeclipsePlugin

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.