001/* An interface for module initializations.
002
003/**
004 *  '$Author: barseghian $'
005 *  '$Date: 2013-01-15 21:33:01 +0000 (Tue, 15 Jan 2013) $'
006 *  '$Revision: 31328 $'
007 *
008 *  For Details:
009 *  http://www.kepler-project.org
010 *
011 *  Copyright (c) 2010 The Regents of the
012 *  University of California. All rights reserved. Permission is hereby granted,
013 *  without written agreement and without license or royalty fees, to use, copy,
014 *  modify, and distribute this software and its documentation for any purpose,
015 *  provided that the above copyright notice and the following two paragraphs
016 *  appear in all copies of this software. IN NO EVENT SHALL THE UNIVERSITY OF
017 *  CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL,
018 *  OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
019 *  DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
020 *  POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY
021 *  DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
022 *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
023 *  SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
024 *  CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
025 *  ENHANCEMENTS, OR MODIFICATIONS.
026 */
027
028package org.kepler.module.workflowrunmanager;
029
030import java.util.List;
031
032import org.kepler.build.modules.Module;
033import org.kepler.configuration.ConfigurationManager;
034import org.kepler.configuration.ConfigurationProperty;
035import org.kepler.gui.KeplerGraphFrame;
036import org.kepler.gui.KeplerGraphFrameUpdater;
037import org.kepler.module.ModuleInitializer;
038import org.kepler.util.ProvenanceStore;
039import org.kepler.workflowrunmanager.WRMDefaults;
040import org.kepler.workflowrunmanager.WorkflowRunManager;
041import org.kepler.workflowrunmanager.WorkflowRunManagerManager;
042
043/**
044 * Initialize the workflow-run-manager module
045 * 
046 * @author Chad Berkley
047 * @version $Id: Initialize.java 31328 2013-01-15 21:33:01Z barseghian $
048 */
049
050public class Initialize implements KeplerGraphFrameUpdater, ModuleInitializer {
051                
052        /**
053         * Initialize the module
054         */
055        public void initializeModule() {
056                
057                // add ourself as an updater so we can add the view selector
058                KeplerGraphFrame.addUpdater(this);
059                
060                ConfigurationManager cm = ConfigurationManager.getInstance();
061
062                Module coreModule = ConfigurationManager.getModule("core");
063                Module commonModule = ConfigurationManager.getModule("common");
064                Module wrmModule = ConfigurationManager
065                                .getModule(WRMDefaults.moduleName);
066                Module guiModule = ConfigurationManager.getModule("gui");
067
068                ConfigurationProperty coreProperty = cm.getProperty(coreModule);
069                ConfigurationProperty commonProperty = cm.getProperty(commonModule);
070                ConfigurationProperty wrmProperty = cm.getProperty(wrmModule);
071                ConfigurationProperty guiProperty = cm.getProperty(guiModule);
072
073                // we need to override the common tab pane properties with the ones from
074                // wrm
075                ConfigurationProperty commonViewPaneTabPanesProp = commonProperty
076                                .getProperty("viewPaneTabPanes");
077                ConfigurationProperty wrmViewPaneTabPanesProp = wrmProperty
078                                .getProperty("viewPaneTabPanes");
079                commonProperty.overrideProperty(commonViewPaneTabPanesProp,
080                                wrmViewPaneTabPanesProp, true);
081
082                ConfigurationProperty commonCanvasViewPaneLocationProp = commonProperty
083                                .getProperty("canvasViewPaneLocation");
084                ConfigurationProperty wrmCanvasViewPaneLocationProp = wrmProperty
085                                .getProperty("canvasViewPaneLocation");
086                commonProperty.overrideProperty(commonCanvasViewPaneLocationProp,
087                                wrmCanvasViewPaneLocationProp, true);
088
089                // override the viewPaneFactory
090                ConfigurationProperty guiViewPaneFactory = guiProperty
091                                .getProperty("viewPaneFactory");
092                ConfigurationProperty wrmViewPaneFactory = wrmProperty
093                                .getProperty("viewPaneFactory");
094                guiProperty.overrideProperty(guiViewPaneFactory, wrmViewPaneFactory,
095                                true);
096
097                // override the tabPaneFactory
098                ConfigurationProperty guiTabPaneFactory = guiProperty
099                                .getProperty("tabPaneFactory");
100                ConfigurationProperty wrmTabPaneFactory = wrmProperty
101                                .getProperty("tabPaneFactory");
102                guiProperty
103                                .overrideProperty(guiTabPaneFactory, wrmTabPaneFactory, true);
104
105                System.out.println("common tabpane configuration overridden by workflow-run-manager");
106
107                // add the WorkflowRun KAREntryHandler to core
108                ConfigurationProperty kehfWRM = wrmProperty
109                                .getProperty("karEntryHandlerFactory");
110                ConfigurationProperty kehfCore = coreProperty
111                                .getProperty("karEntryHandlerFactory");
112
113                List<ConfigurationProperty> handlers = kehfWRM
114                                .getProperties("karHandler");
115                for (ConfigurationProperty handler : handlers) {
116                        try {
117
118                                List<ConfigurationProperty> l = kehfCore.getProperties();
119                                boolean add = true;
120                                for (int i = 0; i < l.size(); i++) {
121                                        ConfigurationProperty cp = (ConfigurationProperty) l.get(i);
122                                        String name = cp.getProperty("name").getValue();
123                                        if (name.equals(handler.getProperty("name").getValue())) {
124                                                add = false;
125                                        }
126                                }
127
128                                if (add) {
129                                        kehfCore.addProperty(handler);
130                                }
131                        } catch (Exception e) {
132                                e.printStackTrace();
133                        }
134                }
135                
136                // connect wrm to default prov store here instead of in WRMPanel initializeTab 
137                // so can work gui-less
138                WorkflowRunManagerManager wrmm = WorkflowRunManagerManager.getInstance();
139                ProvenanceStore provenanceStore = new ProvenanceStore(WRMDefaults.provenanceDefaultsProperty);
140                WorkflowRunManager workflowRunManager = wrmm.getWRM(null, provenanceStore);
141                workflowRunManager.connect();
142                
143        }
144        
145    /** Compares this object with the specified object for order. */
146    public int compareTo(KeplerGraphFrameUpdater o)
147    {
148        /// always return greater than provenance
149        ///if (o instanceof org.kepler.module.provenance.Initialize) {
150        ///     return 1;
151        ///}
152        ///return 0;
153        
154        // we currently like view menu always on far-right
155        // setting this high:
156        return 3;
157    }
158
159    /** Update the components. */
160    public void updateFrameComponents(KeplerGraphFrame.Components components)
161    {
162  
163    }
164    
165    
166        public void dispose(KeplerGraphFrame frame) {
167        }
168        
169}