1 21 package com.jaspersoft.jasperserver.war.action; 22 23 24 import java.math.BigDecimal ; 25 import java.text.DateFormat ; 26 import java.text.DecimalFormat ; 27 import java.text.Format ; 28 import java.text.ParseException ; 29 import java.text.SimpleDateFormat ; 30 import java.util.ArrayList ; 31 import java.util.Collection ; 32 import java.util.Date ; 33 import java.util.HashMap ; 34 import java.util.Iterator ; 35 import java.util.List ; 36 import java.util.Locale ; 37 import java.util.Map ; 38 import java.util.Set ; 39 import java.util.TimeZone ; 40 import java.util.regex.Pattern ; 41 42 import net.sf.jasperreports.engine.JRParameter; 43 import net.sf.jasperreports.engine.JRReport; 44 45 import org.apache.commons.collections.OrderedMap; 46 import org.apache.commons.collections.map.LinkedMap; 47 import org.apache.commons.collections.set.ListOrderedSet; 48 import org.apache.commons.logging.Log; 49 import org.apache.commons.logging.LogFactory; 50 import org.springframework.context.MessageSource; 51 import org.springframework.context.i18n.LocaleContextHolder; 52 import org.springframework.webflow.Event; 53 import org.springframework.webflow.ParameterMap; 54 import org.springframework.webflow.RequestContext; 55 import org.springframework.webflow.action.FormAction; 56 57 import com.jaspersoft.jasperserver.api.JSException; 58 import com.jaspersoft.jasperserver.api.common.domain.impl.ExecutionContextImpl; 59 import com.jaspersoft.jasperserver.api.engine.common.service.EngineService; 60 import com.jaspersoft.jasperserver.api.metadata.common.domain.DataType; 61 import com.jaspersoft.jasperserver.api.metadata.common.domain.InputControl; 62 import com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValues; 63 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference; 64 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService; 65 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit; 66 import com.jaspersoft.jasperserver.war.dto.RuntimeInputControlWrapper; 67 import com.jaspersoft.jasperserver.war.util.CalendarFormatProvider; 68 69 73 public abstract class ReportParametersAction extends FormAction 74 { 75 private static final Log log = LogFactory.getLog(ReportParametersAction.class); 76 77 public static final String INPUTWRAPPERS_ATTR = "wrappers"; 78 79 private static final String COLUMN_VALUE_SEPARATOR = " | "; 80 private static final int COLUMN_VALUE_SEPARATOR_LENGTH = COLUMN_VALUE_SEPARATOR.length(); 81 82 private String reportUnitAttrName; 83 private String reportUnitObjectAttrName; 84 private String controlsDisplayFormAttrName; 85 private String reportDisplayFormAttrName; 86 private String calendarDatePatternAttrName; 87 private String calendarDatetimePatternAttrName; 88 private EngineService engine; 89 private RepositoryService repository; 90 private MessageSource messages; 91 private String hasInputControlsAttrName; 92 private String staticDatePattern; 93 private CalendarFormatProvider calendarFormatProvider; 94 95 protected Event createWrappers(RequestContext context, boolean parseRequest) throws Exception 96 { 97 String reportUnitUri = (String ) context.getFlowScope().get(getReportUnitAttrName()); 98 99 if (reportUnitUri == null) { 100 reportUnitUri = context.getRequestParameters().get(getReportUnitAttrName()); 101 if (reportUnitUri != null) { 102 context.getFlowScope().put(getReportUnitAttrName(), reportUnitUri); 103 } 104 } 105 106 if (reportUnitUri == null || reportUnitUri.trim().length() == 0) { 107 return error(); 108 } 109 110 ReportUnit reportUnit = (ReportUnit) repository.getResource(null, reportUnitUri); 111 112 if (reportUnit == null) { 113 return error(); 114 } 115 116 context.getFlowScope().put(getReportUnitObjectAttrName(), reportUnit); 117 context.getFlowScope().put(getControlsDisplayFormAttrName(), reportUnit.getInputControlRenderingView()); 118 context.getFlowScope().put(getReportDisplayFormAttrName(), reportUnit.getReportRenderingView()); 119 120 context.getFlowScope().put(getCalendarDatePatternAttrName(), getCalendarDatePattern()); 121 context.getFlowScope().put(getCalendarDatetimePatternAttrName(), getCalendarDatetimePattern()); 122 123 List wrappers = createWrappers(context, reportUnit); 124 context.getFlowScope().put(INPUTWRAPPERS_ATTR, wrappers); 125 126 boolean needsInput; 127 if (parseRequest) { 128 needsInput = !wrappers.isEmpty() && !parseRequest(context, wrappers, false); 129 } else { 130 needsInput = !wrappers.isEmpty(); 131 } 132 133 context.getFlowScope().put(getHasInputControlsAttrName(), Boolean.valueOf(needsInput)); 134 135 return needsInput ? yes() : no(); 136 } 137 138 protected Map getParameterValues(RequestContext context, boolean requestParsed) 139 { 140 List wrappers = (List ) context.getFlowScope().get(INPUTWRAPPERS_ATTR); 141 String reportUnitUri = (String ) context.getFlowScope().get(getReportUnitAttrName()); 142 return getParameterValues(context, wrappers, reportUnitUri, requestParsed); 143 } 144 145 protected Map getParameterValues(RequestContext context, List wrappers, String reportUnitUri, boolean requestParsed) { 146 boolean valid = requestParsed || parseRequest(context, wrappers, true); 147 148 Map parameterValues; 149 if (valid || wrappers.size() == 0) { 150 adjustDateTimezone(context, wrappers); 151 parameterValues = bindParameterValues(reportUnitUri, wrappers); 152 addCustomParameters(context, parameterValues); 153 } else { 154 parameterValues = null; 155 } 156 157 return parameterValues; 158 } 159 160 protected void adjustDateTimezone(RequestContext context, List wrappers) { 161 boolean convert = false; 162 int timezone = 0; 163 String tzParam = context.getRequestParameters().get("timezone"); 164 if (tzParam != null && tzParam.length() > 0) { 165 try { 166 timezone = Integer.parseInt(tzParam) * 60000; 167 convert = true; 168 } catch (NumberFormatException e) { 169 log.warn("Error parsing timezone offset. Ignoring client timezone", e); 170 } 171 } 172 173 for (int i = 0; i < wrappers.size(); i++) { 174 RuntimeInputControlWrapper wrapper = (RuntimeInputControlWrapper) wrappers.get(i); 175 176 Object value = wrapper.getValue(); 177 if (!(value instanceof Date )) 178 continue; 179 180 Date clientDate = (Date ) value; 181 wrapper.setClientDate(clientDate); 182 183 if (convert) { 184 int serverTimezone = TimeZone.getDefault().getOffset(clientDate.getTime()); 185 int dif = timezone + serverTimezone; 186 Date serverDate = new Date (clientDate.getTime() + dif); 187 wrapper.setValue(serverDate); 188 } 189 } 190 } 191 192 protected abstract void addCustomParameters(RequestContext context, Map parameterValues); 193 194 protected List createWrappers(RequestContext context, ReportUnit reportUnit) throws Exception 195 { 196 List wrappers = new ArrayList (); 197 198 List inputControls = reportUnit.getInputControls(); 200 for (int i = 0; i < inputControls.size(); i++) 201 { 202 ResourceReference inputControlRef = (ResourceReference) inputControls.get(i); 203 InputControl control; 204 if (inputControlRef.isLocal()) { 205 control = (InputControl) inputControlRef.getLocalResource(); 206 } else { 207 control = (InputControl) repository.getResource(new ExecutionContextImpl(), inputControlRef.getReferenceURI()); 208 } 209 210 Format format = null; 211 ResourceReference dataTypeRef = control.getDataType(); 212 if (dataTypeRef != null) { 213 DataType dataType; 214 if (!dataTypeRef.isLocal()) { 215 dataType = (DataType) repository.getResource(new ExecutionContextImpl(), dataTypeRef.getReferenceURI()); 216 control.setDataType(dataType); 217 } 218 else 219 dataType = (DataType) dataTypeRef.getLocalResource(); 220 221 switch (dataType.getType()) { 222 case DataType.TYPE_DATE: 223 format = getDateFormat(true); 224 break; 225 case DataType.TYPE_DATE_TIME: 226 format = getDatetimeFormat(true); 227 break; 228 case DataType.TYPE_NUMBER: 229 if (dataType.getRegularExpr() != null) 230 format = new DecimalFormat (dataType.getRegularExpr()); 231 } 232 } 233 ResourceReference listOfValuesRef = control.getListOfValues(); 234 if (listOfValuesRef != null && !listOfValuesRef.isLocal()) { 235 ListOfValues listOfValues = (ListOfValues) repository.getResource(new ExecutionContextImpl(), listOfValuesRef.getReferenceURI()); 236 control.setListOfValues(listOfValues); 237 } 238 239 RuntimeInputControlWrapper wrapper = new RuntimeInputControlWrapper(control); 240 wrapper.setFormat(format); 241 242 ResourceReference queryRef = control.getQuery(); 243 if (queryRef != null) { 244 OrderedMap results = executeQuery(control.getQuery(), reportUnit.getDataSource(), wrapper); 245 wrapper.setQueryResults(results); 246 } 247 248 wrappers.add(wrapper); 249 } 250 251 return wrappers; 252 } 253 254 255 258 protected OrderedMap executeQuery(ResourceReference queryReference, ResourceReference dataSourceReference, RuntimeInputControlWrapper wrapper) throws Exception 259 { 260 InputControl control = wrapper.getInputControl(); 261 String valueColumn = control.getQueryValueColumn(); 262 String [] visibleColumns = control.getQueryVisibleColumns(); 263 264 OrderedMap results = engine.executeQuery(null, queryReference, valueColumn, visibleColumns, dataSourceReference); 265 266 if (results == null) { 267 return null; 268 } 269 270 OrderedMap inputData = new LinkedMap(); 271 for (Iterator it = results.entrySet().iterator(); it.hasNext();) { 272 Map.Entry entry = (Map.Entry ) it.next(); 273 Object keyValue = entry.getKey(); 274 String [] columnValues = (String []) entry.getValue(); 275 276 String columnValuesString = ""; 277 if (columnValues != null && columnValues.length > 0) { 278 StringBuffer visibleColumnBuffer = new StringBuffer (); 279 for (int i = 0; i < columnValues.length; i++) { 280 visibleColumnBuffer.append(COLUMN_VALUE_SEPARATOR); 281 visibleColumnBuffer.append(columnValues[i] != null ? columnValues[i] : ""); 282 } 283 columnValuesString = visibleColumnBuffer.substring(COLUMN_VALUE_SEPARATOR_LENGTH); 284 } 285 286 inputData.put(keyValue.toString(), new Object [] {keyValue, columnValuesString}); 287 } 288 289 return inputData; 290 } 291 292 293 296 protected boolean parseRequest(RequestContext context, List wrappers, boolean interactiveParameters) 297 { 298 boolean isValid = true; 299 300 for (int i = 0; i < wrappers.size(); i++) 301 { 302 RuntimeInputControlWrapper wrapper = (RuntimeInputControlWrapper) wrappers.get(i); 303 InputControl control = wrapper.getInputControl(); 304 305 if (wrapper.isMulti()) { 306 ParameterMap requestParameters = context.getRequestParameters(); 307 308 Object paramValue = requestParameters.getMap().get(control.getName()); 310 String [] values; 311 if (paramValue == null) { 312 values = null; 313 } 314 else if (paramValue.getClass().isArray()) { 315 values = (String []) paramValue; 316 } else { 317 values = new String []{(String ) paramValue}; 318 } 319 320 parseRequestValues(values, wrapper, interactiveParameters); 321 } else { 322 String value = context.getRequestParameters().get(control.getName()); 323 parseRequestValue(value, wrapper, interactiveParameters); 324 } 325 326 isValid = isValid && (wrapper.getErrorMessage() == null); 327 } 328 329 return isValid; 330 } 331 332 protected void parseRequestValue(String strValue, RuntimeInputControlWrapper wrapper, boolean interactiveParameters) 333 { 334 InputControl control = wrapper.getInputControl(); 335 ResourceReference dataTypeRef = control.getDataType(); 336 DataType dataType; 337 if (dataTypeRef == null) { 338 dataType = null; 339 } else if (dataTypeRef.isLocal()) { 340 dataType = (DataType) dataTypeRef.getLocalResource(); 341 } else { 342 dataType = (DataType) repository.getResource(new ExecutionContextImpl(), dataTypeRef.getReferenceURI()); 343 } 344 345 if (control.getType() == InputControl.TYPE_BOOLEAN) 346 { 347 wrapper.setValue(Boolean.valueOf(strValue != null)); 348 return; 349 } 350 351 352 if (strValue != null && strValue.trim().length() == 0) 353 { 354 strValue = null; 355 } 356 357 if (control.isMandatory() && strValue == null) 358 { 359 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.mandatoryField", null, Locale.getDefault())); 360 return; 361 } 362 363 if (control.getType() == InputControl.TYPE_SINGLE_SELECT_LIST_OF_VALUES 364 || control.getType() == InputControl.TYPE_SINGLE_SELECT_LIST_OF_VALUES_RADIO) { 365 wrapper.setErrorMessage(null); 366 wrapper.setValue(getLovValue(wrapper, strValue)); 367 return; 368 } 369 370 if (control.getType() == InputControl.TYPE_SINGLE_SELECT_QUERY 371 || control.getType() == InputControl.TYPE_SINGLE_SELECT_QUERY_RADIO) { 372 wrapper.setErrorMessage(null); 373 wrapper.setValue(getQueryValue(wrapper, strValue)); 374 return; 375 } 376 377 if (dataType == null || strValue == null) 378 { 379 wrapper.setErrorMessage(null); 380 wrapper.setValue(null); 381 return; 382 } 383 384 switch(dataType.getType()) 385 { 386 case DataType.TYPE_TEXT : 387 { 388 if ( 389 dataType.getMaxLength() != null 390 && dataType.getMaxLength().intValue() < strValue.length() 391 ) 392 { 393 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.invalidType", null, Locale.getDefault())); 394 } 395 else if ( 396 dataType.getRegularExpr() != null 397 && dataType.getRegularExpr().trim().length() > 0 398 && !Pattern.matches(dataType.getRegularExpr(), strValue) 399 ) 400 { 401 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.invalidPattern", null, Locale.getDefault())); 402 } 403 else { 404 wrapper.setErrorMessage(null); 405 } 406 wrapper.setValue(strValue); 407 break; 408 } 409 case DataType.TYPE_NUMBER : 410 { 411 try 413 { 414 wrapper.setValue(new BigDecimal (strValue)); 415 wrapper.setErrorMessage(null); 416 return; 417 } 418 catch(NumberFormatException e) 419 { 420 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.invalidFloat", null, Locale.getDefault())); 421 wrapper.setValue(strValue); 422 } 423 break; 424 } 425 case DataType.TYPE_DATE : 426 { 427 DateFormat format = getDateFormat(interactiveParameters); 428 429 try 430 { 431 wrapper.setValue(format.parse(strValue)); 432 wrapper.setErrorMessage(null); 433 } 434 catch (ParseException e) 435 { 436 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.invalidDate", null, LocaleContextHolder.getLocale())); 437 wrapper.setValue(strValue); 438 } 439 break; 440 } 441 case DataType.TYPE_DATE_TIME : 442 { 443 DateFormat format = getDatetimeFormat(interactiveParameters); 444 445 try 446 { 447 wrapper.setValue(format.parse(strValue)); 448 wrapper.setErrorMessage(null); 449 } 450 catch (ParseException e) 451 { 452 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.invalidDateTime", null, LocaleContextHolder.getLocale())); 453 wrapper.setValue(strValue); 454 } 455 break; 456 } 457 } 458 459 if (wrapper.getErrorMessage() != null) 460 return; 461 462 Comparable value = (Comparable ) wrapper.getValue(); 463 464 if (dataType.getMinValue() != null) { 465 if (dataType.isStrictMin()) { 466 if (dataType.getMinValue().compareTo(value) > 0) 467 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.smallerThan", null, LocaleContextHolder.getLocale())); 468 } 469 else if (dataType.getMinValue().compareTo(value) >= 0) 470 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.smallerOrEqual", null, LocaleContextHolder.getLocale())); 471 } 472 473 if (dataType.getMaxValue() != null) { 474 if (dataType.isStrictMax()) { 475 if (dataType.getMaxValue().compareTo(value) < 0) 476 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.greaterThan", null, LocaleContextHolder.getLocale())); 477 } 478 else if (dataType.getMaxValue().compareTo(value) <= 0) 479 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.greaterOrEqual", null, LocaleContextHolder.getLocale())); 480 } 481 482 final Comparable minValue = dataType.getMinValue(); 483 if (minValue != null 484 && !((minValue instanceof String ) && ((String ) minValue).length() == 0)) { 485 if (dataType.isStrictMin()) { 486 if (minValue.compareTo(value) > 0) 487 wrapper.setErrorMessage(messages.getMessage( 488 "fillParameters.error.smallerThan", null, Locale.getDefault())); 489 } else if (minValue.compareTo(value) >= 0) 490 491 wrapper.setErrorMessage(messages.getMessage( 492 "fillParameters.error.smallerOrEqual", null, Locale.getDefault())); 493 } 494 495 final Comparable maxValue = dataType.getMinValue(); 496 if (maxValue != null 497 && !((maxValue instanceof String ) && ((String ) maxValue).length() == 0)) { 498 if (dataType.isStrictMax()) { 499 if (maxValue.compareTo(value) < 0) 500 wrapper.setErrorMessage(messages.getMessage( 501 "fillParameters.error.greaterThan", null, Locale.getDefault())); 502 } else if (maxValue.compareTo(value) <= 0) 503 504 wrapper.setErrorMessage(messages.getMessage( 505 "fillParameters.error.greaterOrEqual", null, Locale.getDefault())); 506 } 507 508 wrapper.setValue(value); 509 } 510 511 512 protected Object getLovValue(RuntimeInputControlWrapper wrapper, String strValue) { 513 return strValue; 514 } 515 516 517 protected Object getQueryValue(RuntimeInputControlWrapper wrapper, String strValue) { 518 Object [] result = (Object []) wrapper.getQueryResults().get(strValue); 519 Object value; 520 if (result != null) { 521 value = result[0]; 522 } else { 523 value = null; 524 } 525 return value; 526 } 527 528 529 protected void parseRequestValues(String [] strValues, RuntimeInputControlWrapper wrapper, boolean interactiveParameters) { 530 InputControl control = wrapper.getInputControl(); 531 532 if (strValues == null) { 533 strValues = new String [0]; 534 } 535 536 if (control.isMandatory() && strValues.length == 0) 537 { 538 wrapper.setErrorMessage(messages.getMessage("fillParameters.error.mandatoryField", null, Locale.getDefault())); 539 return; 540 } 541 542 if (control.getType() == InputControl.TYPE_MULTI_SELECT_LIST_OF_VALUES 543 || control.getType() == InputControl.TYPE_MULTI_SELECT_LIST_OF_VALUES_CHECKBOX) { 544 wrapper.setErrorMessage(null); 545 546 Set values = new ListOrderedSet(); 547 for (int i = 0; i < strValues.length; i++) { 548 values.add(getLovValue(wrapper, strValues[i])); 549 } 550 wrapper.setValue(values); 551 return; 552 } 553 554 if (control.getType() == InputControl.TYPE_MULTI_SELECT_QUERY 555 || control.getType() == InputControl.TYPE_MULTI_SELECT_QUERY_CHECKBOX) { 556 wrapper.setErrorMessage(null); 557 558 Set values = new ListOrderedSet(); 559 for (int i = 0; i < strValues.length; i++) { 560 values.add(getQueryValue(wrapper, strValues[i])); 561 } 562 wrapper.setValue(values); 563 return; 564 } 565 } 566 567 568 protected DateFormat getDateFormat(boolean interactiveParameters) { 569 DateFormat format; 570 571 if (interactiveParameters) { 572 format = getCalendarFormatProvider().getDateFormat(); 573 } else { 574 format = new SimpleDateFormat (getStaticDatePattern()); 575 } 576 return format; 577 } 578 579 protected DateFormat getDatetimeFormat(boolean interactiveParameters) { 580 DateFormat format; 581 if (interactiveParameters) { 582 format = getCalendarFormatProvider().getDatetimeFormat(); 583 } else { 584 format = new SimpleDateFormat (getStaticDatePattern()); 585 } 586 return format; 587 } 588 589 590 600 protected Map bindParameterValues(String reportName, List wrappers) 601 { 602 Map parametersMap = new HashMap (); 603 604 JRReport report = getEngine().getMainJasperReport(null, reportName); 605 JRParameter[] parameters = report.getParameters(); 606 if (parameters != null) 607 { 608 for(int i = 0; i < parameters.length; i++) 609 { 610 JRParameter parameter = parameters[i]; 611 parametersMap.put(parameter.getName(), parameter); 612 } 613 } 614 615 Map parameterValues = new HashMap (); 616 617 for (Iterator it = wrappers.iterator(); it.hasNext();) 618 { 619 RuntimeInputControlWrapper wrapper = (RuntimeInputControlWrapper)it.next(); 620 String parameterName = wrapper.getInputControl().getName(); JRParameter parameter = (JRParameter)parametersMap.get(parameterName); 622 if (parameter != null) 623 { 624 Object value = wrapper.getValue(); 625 626 if (value != null) { 627 if (Number .class.isAssignableFrom(parameter.getValueClass())) { 628 value = getParameterNumberValue(wrapper, parameter, value); 629 } 630 631 if (wrapper.isMulti()) { 632 value = getParameterMultiValue(wrapper, parameter, (Set ) value); 633 } 634 635 parameterValues.put(parameterName, value); 636 } 637 } 638 } 639 640 return parameterValues; 641 } 642 643 protected Object getParameterNumberValue(RuntimeInputControlWrapper wrapper, JRParameter parameter, Object value) { 644 if (Byte .class.getName().equals(parameter.getValueClassName())) 645 { 646 value = new Byte (((Number )value).byteValue()); 647 } 648 else if (Short .class.getName().equals(parameter.getValueClassName())) 649 { 650 value = new Short (((Number )value).shortValue()); 651 } 652 else if (Integer .class.getName().equals(parameter.getValueClassName())) 653 { 654 value = new Integer (((Number )value).intValue()); 655 } 656 else if (Long .class.getName().equals(parameter.getValueClassName())) 657 { 658 value = new Long (((Number )value).longValue()); 659 } 660 else if (Float .class.getName().equals(parameter.getValueClassName())) 661 { 662 value = new Float (((Number )value).floatValue()); 663 } 664 else if (Double .class.getName().equals(parameter.getValueClassName())) 665 { 666 value = new Double (((Double )value).longValue()); 667 } 668 return value; 669 } 670 671 protected Object getParameterMultiValue(RuntimeInputControlWrapper wrapper, JRParameter parameter, Set values) { 672 Class paramType = parameter.getValueClass(); 673 Collection value; 674 if (paramType.equals(Object .class) 675 || paramType.equals(Collection .class) 676 || paramType.equals(Set .class)) { 677 value = values; 678 } else if (paramType.equals(List .class)) { 679 value = new ArrayList (values); 680 } else { 681 throw new JSException("Unknown parameter type " + paramType.getName() + "for multiple value input"); 682 } 683 return value; 684 } 685 686 public Event checkParameters(RequestContext context) 687 { 688 List wrappers = (List ) context.getFlowScope().get(INPUTWRAPPERS_ATTR); 689 for (int i = 0; i < wrappers.size(); i++) { 690 RuntimeInputControlWrapper wrapper = (RuntimeInputControlWrapper) wrappers.get(i); 691 ResourceReference dataTypeRef = wrapper.getInputControl().getDataType(); 692 DataType dataType; 693 if (dataTypeRef == null) { 694 dataType = null; 695 } else if (dataTypeRef.isLocal()) { 696 dataType = (DataType) dataTypeRef.getLocalResource(); 697 } else { 698 dataType = (DataType) repository.getResource(new ExecutionContextImpl(), dataTypeRef.getReferenceURI()); 699 } 700 if (dataType != null && dataType.getType() == DataType.TYPE_DATE_TIME) 701 wrapper.setValue(wrapper.getClientDate()); 702 } 703 704 return success(); 705 } 706 707 708 protected String getCalendarDatePattern() 709 { 710 return getCalendarFormatProvider().getCalendarDatePattern(); 711 } 712 713 714 protected String getCalendarDatetimePattern() 715 { 716 return getCalendarFormatProvider().getCalendarDatetimePattern(); 717 } 718 719 723 public RepositoryService getRepository() { 724 return repository; 725 } 726 727 731 public void setRepository(RepositoryService repository) { 732 this.repository = repository; 733 } 734 735 736 public MessageSource getMessages() 737 { 738 return messages; 739 } 740 741 public void setMessages(MessageSource messages) 742 { 743 this.messages = messages; 744 } 745 746 public EngineService getEngine() { 747 return engine; 748 } 749 750 public void setEngine(EngineService engine) { 751 this.engine = engine; 752 } 753 754 public String getReportUnitAttrName() { 755 return reportUnitAttrName; 756 } 757 758 public void setReportUnitAttrName(String reportUnitAttrName) { 759 this.reportUnitAttrName = reportUnitAttrName; 760 } 761 762 public String getHasInputControlsAttrName() { 763 return hasInputControlsAttrName; 764 } 765 766 public void setHasInputControlsAttrName(String hasInputControlsAttrName) { 767 this.hasInputControlsAttrName = hasInputControlsAttrName; 768 } 769 770 public String getStaticDatePattern() { 771 return staticDatePattern; 772 } 773 774 public void setStaticDatePattern(String staticDatePattern) { 775 this.staticDatePattern = staticDatePattern; 776 } 777 778 781 public String getReportUnitObjectAttrName() { 782 return reportUnitObjectAttrName; 783 } 784 785 788 public void setReportUnitObjectAttrName(String reportUnitObjectAttrName) { 789 this.reportUnitObjectAttrName = reportUnitObjectAttrName; 790 } 791 792 795 public String getControlsDisplayFormAttrName() { 796 return controlsDisplayFormAttrName; 797 } 798 799 802 public void setControlsDisplayFormAttrName(String controlsDisplayFormAttrName) { 803 this.controlsDisplayFormAttrName = controlsDisplayFormAttrName; 804 } 805 806 809 public String getReportDisplayFormAttrName() { 810 return reportDisplayFormAttrName; 811 } 812 813 816 public void setReportDisplayFormAttrName(String reportDisplayFormAttrName) { 817 this.reportDisplayFormAttrName = reportDisplayFormAttrName; 818 } 819 820 823 public String getCalendarDatePatternAttrName() 824 { 825 return calendarDatePatternAttrName; 826 } 827 828 831 public void setCalendarDatePatternAttrName(String calendarDatePatternAttrName) 832 { 833 this.calendarDatePatternAttrName = calendarDatePatternAttrName; 834 } 835 836 public CalendarFormatProvider getCalendarFormatProvider() { 837 return calendarFormatProvider; 838 } 839 840 public void setCalendarFormatProvider( 841 CalendarFormatProvider calendarFormatProvider) { 842 this.calendarFormatProvider = calendarFormatProvider; 843 } 844 845 public String getCalendarDatetimePatternAttrName() { 846 return calendarDatetimePatternAttrName; 847 } 848 849 public void setCalendarDatetimePatternAttrName( 850 String calendarDatetimePatternAttrName) { 851 this.calendarDatetimePatternAttrName = calendarDatetimePatternAttrName; 852 } 853 } 854 | Popular Tags |