001/** 002 * '$Author: barseghian $' 003 * '$Date: 2010-08-13 19:10:37 +0000 (Fri, 13 Aug 2010) $' 004 * '$Revision: 25362 $' 005 * 006 * For Details: 007 * http://www.kepler-project.org 008 * 009 * Copyright (c) 2009-2010 The Regents of the 010 * University of California. All rights reserved. Permission is hereby granted, 011 * without written agreement and without license or royalty fees, to use, copy, 012 * modify, and distribute this software and its documentation for any purpose, 013 * provided that the above copyright notice and the following two paragraphs 014 * appear in all copies of this software. IN NO EVENT SHALL THE UNIVERSITY OF 015 * CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, 016 * OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS 017 * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE 018 * POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY 019 * DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 020 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE 021 * SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 022 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 023 * ENHANCEMENTS, OR MODIFICATIONS. 024 */ 025 026package org.kepler.workflowrunmanager.gui.kar; 027 028import java.awt.event.ActionEvent; 029import java.util.List; 030 031import org.kepler.gui.kar.ExportArchiveAction; 032import org.kepler.objectmanager.lsid.KeplerLSID; 033import org.kepler.util.WorkflowRun; 034import org.kepler.workflowrunmanager.WorkflowRunManager; 035import org.kepler.workflowrunmanager.WorkflowRunManagerManager; 036 037import ptolemy.actor.gui.TableauFrame; 038import ptolemy.kernel.ComponentEntity; 039 040public class ExportRunsArchiveAction extends ExportArchiveAction { 041 042 private List<KeplerLSID> _runLSIDs = null; 043 private WorkflowRunManager workflowRunManager = null; 044 045 public ExportRunsArchiveAction(TableauFrame parent, 046 List<KeplerLSID> execLSIDs, String overrideModuleDependencies) { 047 super(parent); 048 if (overrideModuleDependencies != null){ 049 super.overrideModuleDependencies(overrideModuleDependencies); 050 } 051 _runLSIDs = execLSIDs; 052 setRefreshFrameAfterSave(false); 053 setSingleItemKAR(false); 054 WorkflowRunManagerManager wrmm = WorkflowRunManagerManager.getInstance(); 055 workflowRunManager = wrmm.getWRM(parent); 056 } 057 058 protected boolean handleAction(ActionEvent e) { 059 060 // first clear any runs previously added to the "selected" list: 061 workflowRunManager.clearSelectedRuns(); 062 063 // if exporting just 1 run, give kar nice default name: 064 // workflowName-runExecId.kar 065 if (_runLSIDs.size() == 1){ 066 KeplerLSID runLSID = _runLSIDs.get(0); 067 WorkflowRun run = workflowRunManager.getRun(runLSID.toStringWithoutRevision()); 068 ComponentEntity workflow = workflowRunManager.getAssociatedWorkflowForWorkflowRun(runLSID); 069 if (run != null && workflow != null){ 070 String name = workflow.getName() + "-run" + run.getExecId() + ".kar"; 071 setDefaultFileName(name); 072 } 073 } 074 else{ 075 setDefaultFileName(""); 076 } 077 078 for (KeplerLSID runLSID : _runLSIDs) { 079 try { 080 ComponentEntity workflow = workflowRunManager.getAssociatedWorkflowForWorkflowRun(runLSID); 081 if (workflow != null) { 082 083 // Here we store the Run LSID in the Workflow Run Manager Singleton 084 // so the WorkflowRunEntryHandler can figure out which runs for which 085 // workflows to save 086 workflowRunManager.addRunToSelectedRuns(runLSID); 087 088 // Here we add the workflow the run is associated with as an initiator 089 // of the SaveKAR 090 _savekar.addSaveInitiator(workflow); 091 092 } 093 } catch (Exception exc) { 094 exc.printStackTrace(); 095 } 096 } 097 098 return true; 099 } 100 101 102 /** 103 * Invoked when an action occurs. 104 * 105 *@param e 106 * ActionEvent 107 */ 108 public void actionPerformed(ActionEvent e) { 109 super.actionPerformed(e); 110 111 // now clear any runs added to the "selected" list 112 // in prep for any subsequent saves 113 workflowRunManager.clearSelectedRuns(); 114 } 115 116}