...
Your plugin class name is inserted in the file as shown in the following code, as "MyPlugin".
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
@Override protected ServiceRegistration<?>[] registerService(IGBService igbService) throws Exception { return new ServiceRegistration[] { bundleContext.registerService(Operator.class, new MyPlugin(FileTypeCategory.Alignment), null), bundleContext.registerService(Operator.class, new MyPlugin(FileTypeCategory.Annotation), null), bundleContext.registerService(Operator.class, new MyPlugin(FileTypeCategory.ProbeSet), null) }; } |
...
This sample code inherits AbstractAnnotationOperator and implements Operator interface to work as a new annotation operation. For more options refer to the Extension Points section.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public class MyPlugin extends AbstractAnnotationOperator implements Operator { // Constructor MyPlugin(FileTypeCategory category){ super(category); } // Method to determine the internal plugin name @Override public String getName() { return this.category.toString().toLowerCase() +"_my_plugin"; } // Method to determine the display name for the operation @Override public String getDisplay() { return "My Operation"; } // Private method to check if two symmetries are overlapped used by the operate() private boolean overlap(BioSeq aseq, SeqSymmetry s0, SeqSymmetry s1) { return s0.getSpan(aseq) != null && s1.getSpan(aseq) != null && s0.getSpan(aseq).getMax() > s1.getSpan(aseq).getMin() && s0.getSpan(aseq).getMin() < s1.getSpan(aseq).getMax(); } // Core code for the operation which loops over input symmetries and return the overlapped ones @Override public SeqSymmetry operate(BioSeq aseq, List<SeqSymmetry> symList) { SimpleSymWithProps result = new SimpleSymWithProps(); result.setProperties(new HashMap<String,Object>()); TypeContainerAnnot t0 = (TypeContainerAnnot)symList.get(0); TypeContainerAnnot t1 = (TypeContainerAnnot)symList.get(1); result.setProperty("type", t0.getType() + " " + getName()); for (int i = 0; i < t0.getChildCount(); i++) { SeqSymmetry s0 = t0.getChild(i); for (int j = 0; j < t1.getChildCount(); j++) { SeqSymmetry s1 = t1.getChild(j); if (overlap(aseq, s0, s1)) { result.addChild(s0); result.addSpan(s0.getSpan(aseq)); break; } } |
Wiki Markup |
---|
*Step 7. Update* *{_}MAINFEST.BASE{_}{*}*:* Directly under the _\[MyPlugin\]_ folder, update the following highlighted fields for _MAINFEST.BASE_. |
Panel | |
---|---|
Wiki Markup | }
return result;
}
|
You can refer more operations in plugins or com.affymetrix.genometryImpl.operator package in core folder.
Step 7. Update MAINFEST.BASE: Directly under the [MyPlugin] folder, update the following highlighted fields for MAINFEST.BASE.
Panel |
---|
Manifest-Version: 1.0 |
- Bundle-Name - change to your plugin name
- Bundle-SymbolicName - change to your package path
- Bundle-Version - change to your plugin version
- Bundle-Activation - change to your Activator path (e.g. com.myorg.myplugin.Activator)
- Import-Package - include all the classes your are using in your source code
*Step 8. Update* *{_}ant.properties{_}{*}*:* Also found under _\[MyPlugin\]_ folder, update the highlighted fields as follows. Wiki Markup
Panel |
---|
name=MyPlugin |
name=\[your plugin name\]unmigrated-wiki-markupWiki Markup - project=\[your plugin name\]
- classpath is updated with the necessary paths; refer to the project build.xml for the actual paths listed, i.e. the path for igb_service, windows_service, etc.
...
- Next, using a command line prompt, navigate to IGB_HOME folder and run the following command (Enter your svn password as necessary):
Panel |
---|
ant externalBundles |
*Step 4. Move the .jar and .xml files to your plugin directory:* There should be 2 generated files in IGB_HOME/plugins/ext, _\[MyPlugin\].jar_ and _repository.xml_. Move these files to your plugin repository folder (local or remote HTTP server). Make sure to cut these files from from the IGB_HOME/plugins/ext folder, or delete after copying. Wiki Markup
Step 5 (optional): Revert IGB code: You can now revert all of the code changes you have made, if you wish, or simply change the name of the plugin in all appropriate code locations to create files for another plugin.
...