001/* 002 * Copyright (c) 2003-2010 The Regents of the University of California. 003 * All rights reserved. 004 * 005 * '$Author: barseghian $' 006 * '$Date: 2011-02-12 02:25:44 +0000 (Sat, 12 Feb 2011) $' 007 * '$Revision: 27102 $' 008 * 009 * Permission is hereby granted, without written agreement and without 010 * license or royalty fees, to use, copy, modify, and distribute this 011 * software and its documentation for any purpose, provided that the above 012 * copyright notice and the following two paragraphs appear in all copies 013 * of this software. 014 * 015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY 016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 019 * SUCH DAMAGE. 020 * 021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE 024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 026 * ENHANCEMENTS, OR MODIFICATIONS. 027 * 028 */ 029 030package org.kepler.reporting.rio; 031 032import java.io.Serializable; 033import java.util.Iterator; 034import java.util.Set; 035import java.util.SortedMap; 036import java.util.TreeMap; 037 038import org.kepler.reporting.rio.DynamicReportItem.DynamicItemProperties; 039 040/** 041 * This class is intended as a very general holder for Item properties. 042 * The intent is that subclassess will provide pertinent property key 043 * (static constant Strings) that are relevant to the particular Item type. 044 * This is in lieu of having an ever-growing number of methods for getting/setting 045 * item properties. 046 * @see DynamicItemProperties 047 * @author leinfelder 048 * 049 */ 050public class ItemProperties implements Serializable { 051 052 protected SortedMap<String, String> properties = new TreeMap<String, String>(); 053 054 public String getProperty(String key) { 055 return properties.get(key); 056 } 057 058 /** 059 * Returns boolean - is this change worthy of marking the TableauFrame modified 060 * @param key 061 * @param value 062 */ 063 public boolean setProperty(String key, String value) { 064 String previousValue = properties.put(key, value); 065 // we won't treat initialization as a change 066 if (properties.get(key) != null){ 067 // more caveats: 068 if ( 069 (previousValue == null && value != null && !value.equals("")) || 070 (previousValue != null && value != null && !previousValue.equals(value) 071 )){ 072 return true; 073 } 074 } 075 return false; 076 } 077 078 public String getPropertyNameAt(int index) { 079 //System.out.println("ItemProperties getPropertyNameAt("+index+")"); 080 return (String) properties.keySet().toArray(new String[0])[index]; 081 } 082 083 /** 084 * Retrieve a list of all the property keys for this ItemProperties object 085 * @return list of keys that can then be used to lookup/set the values 086 */ 087 public Set<String> getProperties() { 088 return properties.keySet(); 089 } 090 091 private void usage() { 092 this.setProperty("width", "400"); 093 this.setProperty("height", "600"); 094 095 Iterator<String> iter = this.getProperties().iterator(); 096 while (iter.hasNext()) { 097 String key = iter.next(); 098 String value = this.getProperty(key); 099 //do something 100 } 101 102 103 } 104}