001/** 002 * '$Author: barseghian $' 003 * '$Date: 2013-01-15 21:33:01 +0000 (Tue, 15 Jan 2013) $' 004 * '$Revision: 31328 $' 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; 027 028import java.awt.Color; 029import java.awt.Font; 030import java.io.IOException; 031import java.util.ArrayList; 032import java.util.Arrays; 033import java.util.HashMap; 034import java.util.List; 035import java.util.Map; 036import java.util.Vector; 037 038import org.kepler.configuration.ConfigurationManager; 039import org.kepler.configuration.ConfigurationNamespace; 040import org.kepler.configuration.ConfigurationProperty; 041import org.kepler.objectmanager.repository.EcogridRepository; 042import org.kepler.objectmanager.repository.Repository; 043import org.kepler.objectmanager.repository.RepositoryManager; 044import org.kepler.util.ProvenanceStore; 045 046// singleton. 047public final class WRMDefaults { 048 049 static private WRMDefaults _instance = null; 050 051 static final public String moduleName = "workflow-run-manager"; 052 053 static final public ConfigurationProperty provenanceDefaultsProperty = 054 ConfigurationManager.getInstance().getProperty( 055 ConfigurationManager.getModule("provenance"), "provenance.defaultSettings"); 056 057 static final public String TAGS = "Tags"; 058 static final public String WORKFLOW_NAME = "Workflow Name"; 059 static final public String START_TIME = "Run Date"; 060 static final public String DURATION = "Duration"; 061 static final public String USER = "User"; 062 static final public String EXEC_ID = "Id"; 063 static final public String DEFAULT = "default"; 064 065 static final public String RANGE_SEPARATOR = " - "; 066 067 // TODO these sizes should be derived from some official Kepler UI settings: 068 static final public int WRM_PANE_WIDTH = 800; 069 static final public int WRM_PANE_HEIGHT = 180; 070 071 static final public int WRM_FONT_SIZE = 11; 072 static final public Font WRM_FONT = new Font("LucidaGrande", Font.PLAIN, 073 WRM_FONT_SIZE); 074 static final public int WRM_ROW_HEIGHT = 14; 075 076 // preferred column widths 077 static final public int TAGS_COLUMN_WIDTH = 270; 078 ///static final public int WORKFLOW_NAME_COLUMN_WIDTH = 120; 079 static final public int WORKFLOW_NAME_COLUMN_WIDTH = 140; 080 static final public int START_TIME_COLUMN_WIDTH = 150; 081 static final public int DURATION_COLUMN_WIDTH = 45; 082 static final public int USER_NAME_COLUMN_WIDTH = 40; 083 static final public int EXEC_ID_COLUMN_WIDTH = 20; 084 085 static final public int COLUMN_MARGIN = 2; 086 static final public Color TABLE_GRID_COLOR = Color.LIGHT_GRAY; 087 static final public boolean SHOW_VERTICAL_LINES = true; 088 static final public boolean SHOW_HORIZONTAL_LINES = false; 089 static final public Color ERROR_ROW_COLOR = new Color(255, 191, 207); 090 static final public Color ERROR_ROW_SELECTED_COLOR = new Color(150, 119, 211); 091 static final public Color IMPORTED_ROW_COLOR = new Color(255, 206, 255); 092 static final public Color IMPORTED_ROW_SELECTED_COLOR = new Color(51, 204, 255); 093 static final public Color PREVIEW_TEXT_COLOR = new Color(144, 144, 144); 094 095 //set to whatever is selected by provenanceStoresComboBox 096 private ProvenanceStore defaultProvenanceStore = 097 new ProvenanceStore(provenanceDefaultsProperty); 098 099 private Vector<ProvenanceStore> provenanceStores = null; 100 101 // default column order: 102 //private static List<String> defaultColumnOrderList = new ArrayList<String>( 103 // Arrays.asList(TAGS, WORKFLOW_NAME, START_TIME, DURATION, USER, EXEC_ID)); 104 static private List<String> defaultColumnOrderList = new ArrayList<String>( 105 Arrays.asList(TAGS, WORKFLOW_NAME, START_TIME, DURATION, USER)); 106 107 public Map<String, String> DEFAULTSEARCHSTRING = new HashMap<String, String>(); 108 109 private WRMDefaults() { 110 111 DEFAULTSEARCHSTRING.put(TAGS, "click to enter search term"); 112 DEFAULTSEARCHSTRING.put(WORKFLOW_NAME, "workflow search"); 113 DEFAULTSEARCHSTRING.put(START_TIME, "> Jan 01, 2004 12:00:00 AM"); 114 DEFAULTSEARCHSTRING.put(DURATION, "> 00:00:00"); 115 DEFAULTSEARCHSTRING.put(USER, "username"); 116 DEFAULTSEARCHSTRING.put(EXEC_ID, "> 0"); 117 DEFAULTSEARCHSTRING.put(DEFAULT, "blank"); 118 119 // initialize the provenance stores (used by combobox) 120 try { 121 provenanceStores = new Vector<ProvenanceStore>(); 122 RepositoryManager repositoryManager = RepositoryManager.getInstance(); 123 124 // first add the default local provenance store 125 provenanceStores.add(defaultProvenanceStore); 126 127 // now add all the ecogrid repositories 128 ConfigurationNamespace remoteStoresNameSpace = new ConfigurationNamespace( 129 "remoteStores"); 130 for (Repository repo : repositoryManager.getRepositories()) { 131 ConfigurationProperty provenanceProperty = ConfigurationManager 132 .getInstance().getProperty( 133 ConfigurationManager.getModule(moduleName), 134 remoteStoresNameSpace, 135 "repositories." + repo.getName()); 136 if (provenanceProperty != null 137 && repo instanceof EcogridRepository) { 138 ProvenanceStore provStore = new ProvenanceStore( 139 provenanceProperty, (EcogridRepository) repo); 140 provenanceStores.add(provStore); 141 } 142 } 143 } catch (IOException e) { 144 // TODO Auto-generated catch block 145 e.printStackTrace(); 146 } catch (Exception e) { 147 // TODO Auto-generated catch block 148 e.printStackTrace(); 149 } 150 151 } 152 153 public synchronized static WRMDefaults getInstance() { 154 if (_instance == null) { 155 _instance = new WRMDefaults(); 156 } 157 return _instance; 158 } 159 160 public String getDefault(String key) { 161 if (DEFAULTSEARCHSTRING.containsKey(key)) { 162 return DEFAULTSEARCHSTRING.get(key); 163 } else { 164 System.out.println("ERROR no default for key:" + key); 165 return DEFAULTSEARCHSTRING.get(DEFAULT); 166 } 167 } 168 169 public int getDefaultColIndex(String col) throws Exception { 170 if (defaultColumnOrderList.contains(col)) { 171 return defaultColumnOrderList.indexOf(col); 172 } 173 throw new Exception("ERROR trying to get a default column that doesn't exist"); 174 } 175 176 public String getDefaultSearchStringForColIndex(int col) { 177 try { 178 return getDefault(defaultColumnOrderList.get(col)); 179 } catch (IndexOutOfBoundsException ioobe) { 180 ioobe.printStackTrace(); 181 return "%"; 182 } 183 } 184 185 public boolean containsName(String name) { 186 if (DEFAULTSEARCHSTRING.containsValue(name)) { 187 return true; 188 } 189 return false; 190 } 191 192 public int getColumnCount() { 193 return defaultColumnOrderList.size(); 194 } 195 196 public Vector<ProvenanceStore> getProvenanceStores(){ 197 return provenanceStores; 198 } 199 200 public ProvenanceStore getDefaultProvenanceStore(){ 201 return defaultProvenanceStore; 202 } 203 204}