NewReducerWizard.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:6k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.eclipse;
  19. import java.io.IOException;
  20. import java.util.Arrays;
  21. import org.eclipse.core.resources.IFile;
  22. import org.eclipse.core.runtime.CoreException;
  23. import org.eclipse.core.runtime.FileLocator;
  24. import org.eclipse.core.runtime.IProgressMonitor;
  25. import org.eclipse.core.runtime.IStatus;
  26. import org.eclipse.core.runtime.Path;
  27. import org.eclipse.jdt.core.IJavaElement;
  28. import org.eclipse.jdt.core.IType;
  29. import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;
  30. import org.eclipse.jdt.ui.wizards.NewTypeWizardPage;
  31. import org.eclipse.jface.operation.IRunnableWithProgress;
  32. import org.eclipse.jface.resource.ImageDescriptor;
  33. import org.eclipse.jface.viewers.IStructuredSelection;
  34. import org.eclipse.swt.SWT;
  35. import org.eclipse.swt.layout.GridLayout;
  36. import org.eclipse.swt.widgets.Composite;
  37. import org.eclipse.ui.INewWizard;
  38. import org.eclipse.ui.IWorkbench;
  39. /**
  40.  * Wizard for creating a new Reducer class (a class that runs the Reduce
  41.  * portion of a MapReduce job). The class is pre-filled with a template.
  42.  * 
  43.  */
  44. public class NewReducerWizard extends NewElementWizard implements
  45.     INewWizard, IRunnableWithProgress {
  46.   private Page page;
  47.   public NewReducerWizard() {
  48.     setWindowTitle("New Reducer");
  49.   }
  50.   public void run(IProgressMonitor monitor) {
  51.     try {
  52.       page.createType(monitor);
  53.     } catch (CoreException e) {
  54.       // TODO Auto-generated catch block
  55.       e.printStackTrace();
  56.     } catch (InterruptedException e) {
  57.       // TODO Auto-generated catch block
  58.       e.printStackTrace();
  59.     }
  60.   }
  61.   @Override
  62.   public void init(IWorkbench workbench, IStructuredSelection selection) {
  63.     super.init(workbench, selection);
  64.     page = new Page();
  65.     addPage(page);
  66.     page.setSelection(selection);
  67.   }
  68.   public static class Page extends NewTypeWizardPage {
  69.     public Page() {
  70.       super(true, "Reducer");
  71.       setTitle("Reducer");
  72.       setDescription("Create a new Reducer implementation.");
  73.       setImageDescriptor(ImageLibrary.get("wizard.reducer.new"));
  74.     }
  75.     public void setSelection(IStructuredSelection selection) {
  76.       initContainerPage(getInitialJavaElement(selection));
  77.       initTypePage(getInitialJavaElement(selection));
  78.     }
  79.     @Override
  80.     public void createType(IProgressMonitor monitor) throws CoreException,
  81.         InterruptedException {
  82.       super.createType(monitor);
  83.     }
  84.     @Override
  85.     protected void createTypeMembers(IType newType, ImportsManager imports,
  86.         IProgressMonitor monitor) throws CoreException {
  87.       super.createTypeMembers(newType, imports, monitor);
  88.       imports.addImport("java.io.IOException");
  89.       imports.addImport("org.apache.hadoop.io.WritableComparable");
  90.       imports.addImport("org.apache.hadoop.mapred.OutputCollector");
  91.       imports.addImport("org.apache.hadoop.mapred.Reporter");
  92.       imports.addImport("java.util.Iterator");
  93.       newType
  94.           .createMethod(
  95.               "public void reduce(WritableComparable _key, Iterator values, OutputCollector output, Reporter reporter) throws IOException n{n"
  96.                   + "t// replace KeyType with the real type of your keyn"
  97.                   + "tKeyType key = (KeyType) _key;nn"
  98.                   + "twhile (values.hasNext()) {n"
  99.                   + "tt// replace ValueType with the real type of your valuen"
  100.                   + "ttValueType value = (ValueType) values.next();nn"
  101.                   + "tt// process valuen" + "t}n" + "}n", null, false,
  102.               monitor);
  103.     }
  104.     public void createControl(Composite parent) {
  105.       // super.createControl(parent);
  106.       initializeDialogUnits(parent);
  107.       Composite composite = new Composite(parent, SWT.NONE);
  108.       GridLayout layout = new GridLayout();
  109.       layout.numColumns = 4;
  110.       composite.setLayout(layout);
  111.       createContainerControls(composite, 4);
  112.       createPackageControls(composite, 4);
  113.       createSeparator(composite, 4);
  114.       createTypeNameControls(composite, 4);
  115.       createSuperClassControls(composite, 4);
  116.       createSuperInterfacesControls(composite, 4);
  117.       // createSeparator(composite, 4);
  118.       setControl(composite);
  119.       setSuperClass("org.apache.hadoop.mapred.MapReduceBase", true);
  120.       setSuperInterfaces(Arrays
  121.           .asList(new String[] { "org.apache.hadoop.mapred.Reducer" }), true);
  122.       setFocus();
  123.       validate();
  124.     }
  125.     @Override
  126.     protected void handleFieldChanged(String fieldName) {
  127.       super.handleFieldChanged(fieldName);
  128.       validate();
  129.     }
  130.     private void validate() {
  131.       updateStatus(new IStatus[] { fContainerStatus, fPackageStatus,
  132.           fTypeNameStatus, fSuperClassStatus, fSuperInterfacesStatus });
  133.     }
  134.   }
  135.   @Override
  136.   public boolean performFinish() {
  137.     if (super.performFinish()) {
  138.       if (getCreatedElement() != null) {
  139.         selectAndReveal(page.getModifiedResource());
  140.         openResource((IFile) page.getModifiedResource());
  141.       }
  142.       return true;
  143.     } else {
  144.       return false;
  145.     }
  146.   }
  147.   @Override
  148.   protected void finishPage(IProgressMonitor monitor)
  149.       throws InterruptedException, CoreException {
  150.     this.run(monitor);
  151.   }
  152.   @Override
  153.   public IJavaElement getCreatedElement() {
  154.     return (page.getCreatedType() == null) ? null : page.getCreatedType()
  155.         .getPrimaryElement();
  156.   }
  157. }