1 package jimm.datavision.field; 2 import jimm.datavision.Report; 3 import jimm.datavision.Section; 4 import jimm.datavision.Group; 5 import jimm.util.I18N; 6 import java.util.HashMap ; 7 8 25 public class SpecialField extends Field { 26 27 public static final String TYPE_STRING = "special"; 28 29 36 public static HashMap specialFieldNames() { 37 HashMap map = new HashMap (); 38 39 map.put("report.title", I18N.get("SpecialField.report.title")); 40 map.put("report.name", I18N.get("SpecialField.report.name")); 41 map.put("report.author", I18N.get("SpecialField.report.author")); 42 map.put("report.description", I18N.get("SpecialField.report.description")); 43 map.put("report.date", I18N.get("SpecialField.report.date")); 44 map.put("report.row", I18N.get("SpecialField.report.row")); 45 map.put("page.number", I18N.get("SpecialField.page.number")); 46 map.put("group.count", I18N.get("SpecialField.group.count")); 47 48 return map; 49 } 50 51 58 public static Object value(Field f, String str, Report report) { 59 if ("report.title".equals(str)) 60 return report.getTitle(); 61 if ("report.name".equals(str)) 62 return report.getName(); 63 if ("report.author".equals(str)) 64 return report.getAuthor(); 65 if ("report.description".equals(str)) 66 return report.getDescription(); 67 else if ("report.date".equals(str)) 68 return new java.util.Date (); 69 else if ("report.row".equals(str)) 70 return new Integer (report.rowNumber()); 71 else if ("page.number".equals(str)) 72 return new Integer (report.pageNumber()); 73 else if ("group.count".equals(str)) 74 return groupCount(f); 75 else 76 return I18N.get("SpecialField.unknown"); 77 } 78 79 90 protected static Integer groupCount(Field f) { 91 if (f == null) 92 return new Integer (0); 93 94 Report report = f.getReport(); 95 Group group = report.findGroup(f.getSection()); 96 97 if (group == null && f.getSection().isDetail()) 98 group = report.innermostGroup(); 100 return new Integer (group == null ? report.rowNumber() 101 : group.getRecordCount()); 102 } 103 104 105 115 public SpecialField(Long id, Report report, Section section, Object value, 116 boolean visible) 117 { 118 super(id, report, section, value, visible); 119 } 120 121 public String dragString() { 122 return typeString() + ":" + value; 123 } 124 125 public String typeString() { return TYPE_STRING; } 126 127 public String designLabel() { return "{" + value + "}"; } 128 129 public String formulaString() { return "{%" + value + "}"; } 130 131 136 public Object getValue() { 137 return SpecialField.value(this, (String )value, section.getReport()); 138 } 139 } 140 | Popular Tags |