1 16 17 package org.pentaho.plugin.jfreechart; 18 19 import org.jfree.chart.imagemap.StandardURLTagFragmentGenerator; 20 import org.jfree.data.general.Dataset; 21 import org.pentaho.core.system.PentahoSystem; 22 import org.pentaho.core.util.TemplateUtil; 23 24 public class PentahoChartURLTagFragmentGenerator extends StandardURLTagFragmentGenerator { 25 private static final String SERIES_TAG = "series="; private static final String CATEGORY_TAG = "category="; 28 String urlFragment; 29 Dataset dataset; 30 String parameterName; 31 String outerParameterName; 32 33 public PentahoChartURLTagFragmentGenerator(String urlFragment, Dataset dataset, String parameterName, String outerParameterName) { 34 super(); 35 36 this.urlFragment = urlFragment; 37 this.dataset = dataset; 38 this.parameterName = parameterName; 39 this.outerParameterName = outerParameterName; 40 } 41 42 public PentahoChartURLTagFragmentGenerator(String urlTemplate, Dataset dataDefinition, String paramName) { 43 this(urlTemplate, dataDefinition, paramName, ""); } 45 46 public String generateURLFragment(String urlText) { 47 if (urlFragment != null) { 48 String urlTemplate = " HREF=\"" + PentahoSystem.getApplicationContext().getBaseUrl() + urlFragment + "\""; 50 int startIdx = urlText.indexOf(CATEGORY_TAG) + CATEGORY_TAG.length(); 51 int endIdx = urlText.indexOf('&', startIdx) != -1 ? urlText.indexOf('&', startIdx) : urlText.length(); 52 String value = urlText.substring(startIdx, endIdx).trim(); 53 urlTemplate = TemplateUtil.applyTemplate(urlTemplate, parameterName, value); 54 55 if (dataset instanceof CategoryDatasetChartDefinition){ 56 startIdx = urlText.indexOf(SERIES_TAG) + SERIES_TAG.length(); 57 endIdx = urlText.indexOf('&', startIdx) != -1 ? urlText.indexOf('&', startIdx) : urlText.length(); 58 value = urlText.substring(startIdx, endIdx).trim(); 59 urlTemplate = TemplateUtil.applyTemplate(urlTemplate, outerParameterName, value); 60 } 61 urlTemplate = urlTemplate + " target=\"pentaho-popup\""; 63 return urlTemplate; 64 } else { 65 return super.generateURLFragment(urlText); 66 } 67 } 68 } 69
| Popular Tags
|