001/* 002Copyright (c) 2010 The Regents of the University of California. 003All rights reserved. 004Permission is hereby granted, without written agreement and without 005license or royalty fees, to use, copy, modify, and distribute this 006software and its documentation for any purpose, provided that the above 007copyright notice and the following two paragraphs appear in all copies 008of this software. 009 010IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY 011FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 012ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 013THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 014SUCH DAMAGE. 015 016THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 017INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 018MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE 019PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 020CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 021ENHANCEMENTS, OR MODIFICATIONS. 022 023*/ 024 025package org.kepler.util; 026 027import java.lang.ref.WeakReference; 028import java.util.LinkedList; 029import java.util.List; 030 031import org.kepler.objectmanager.lsid.KeplerLSID; 032 033import ptolemy.kernel.util.NamedObj; 034 035 036public class WorkflowRenameManager { 037 038 static private WorkflowRenameManager _instance = null; 039 040 041 /** The list of WorkflowRenameListener. */ 042 private List<WeakReference<WorkflowRenameListener>> _renameListenerList = 043 new LinkedList<WeakReference<WorkflowRenameListener>>(); 044 045 046 public synchronized static WorkflowRenameManager getInstance() { 047 if (_instance == null) { 048 _instance = new WorkflowRenameManager(); 049 } 050 return _instance; 051 } 052 053 private WorkflowRenameManager() { 054 } 055 056 /** 057 * Notify all WorkflowRenameListeners that a workflow was renamed. 058 * @param namedObj the workflow 059 * @param oldLSID the previous LSID 060 * @param newLSID the new LSID 061 * @param oldName the previous name 062 * @param newName the new name 063 */ 064 public void renamedWorkflow(NamedObj namedObj, KeplerLSID oldLSID, 065 KeplerLSID newLSID, String oldName, String newName){ 066 067 for(WeakReference<WorkflowRenameListener> listenerWf : _renameListenerList){ 068 WorkflowRenameListener listener = listenerWf.get(); 069 if (listener != null) 070 listener.renamedWorkflow(namedObj, oldLSID, newLSID, 071 oldName, newName); 072 } 073 } 074 075 /** Add a WorkflowRenameListener to the list of listeners. */ 076 public void addRenameListener(WorkflowRenameListener listener) { 077 _renameListenerList.add(new WeakReference(listener)); 078 } 079 080 /** Clear the list of WorkflowRenameListener. */ 081 public void clearRenameListeners() { 082 _renameListenerList.clear(); 083 } 084 085 /** Remove a WorkflowRenameListener from the list of listeners. */ 086 public void removeRenameListener(WorkflowRenameListener listener) { 087 _renameListenerList.remove(listener); 088 } 089 090 091}