List of usage examples for org.apache.wicket.validation.validator DateValidator minimum
public static DateValidator minimum(Date minimum, String format)
From source file:au.org.theark.core.web.component.customfield.dataentry.CustomDataEditorDataView.java
License:Open Source License
@Override protected void populateItem(Item<T> item) { ICustomFieldData aCustomData = item.getModelObject(); CustomField cf = aCustomData.getCustomFieldDisplay().getCustomField(); CustomFieldDisplay cfd = aCustomData.getCustomFieldDisplay(); // Determine label of component, also used for error messages String labelModel = new String(); if (cf.getFieldLabel() != null) { labelModel = cf.getFieldLabel(); } else {/* w ww . jav a2s .com*/ // Defaults to name if no fieldLabel labelModel = cf.getName(); } Label fieldLabelLbl = new Label("fieldLabel", labelModel); Panel dataValueEntryPanel; String fieldTypeName = cf.getFieldType().getName(); String encodedValues = cf.getEncodedValues(); Boolean requiredField = aCustomData.getCustomFieldDisplay().getRequired(); if (fieldTypeName.equals(au.org.theark.core.web.component.customfield.Constants.DATE_FIELD_TYPE_NAME)) { if (cf.getDefaultValue() != null && item.getModelObject().getDateDataValue() == null) { try { item.getModelObject().setDateDataValue( new SimpleDateFormat(Constants.DD_MM_YYYY).parse(cf.getDefaultValue())); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } DateDataEntryPanel dateDataEntryPanel = new DateDataEntryPanel("dataValueEntryPanel", new PropertyModel<Date>(item.getModel(), "dateDataValue"), new Model<String>(labelModel)); dateDataEntryPanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); dateDataEntryPanel.setUnitsLabelModel( new PropertyModel<String>(item.getModel(), "customFieldDisplay.customField.unitType.name")); if (cf.getMinValue() != null && !cf.getMinValue().isEmpty()) { IConverter<Date> dateConverter = dateDataEntryPanel.getDateConverter(); try { Date minDate = (Date) dateConverter.convertToObject(cf.getMinValue(), getLocale()); dateDataEntryPanel.addValidator(DateValidator.minimum(minDate, Constants.DD_MM_YYYY)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error("Unexpected error: customfield.minValue is not in the DD/MM/YYYY date format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (cf.getMaxValue() != null && !cf.getMaxValue().isEmpty()) { IConverter<Date> dateConverter = dateDataEntryPanel.getDateConverter(); try { Date maxDate = (Date) dateConverter.convertToObject(cf.getMaxValue(), getLocale()); dateDataEntryPanel.addValidator(DateValidator.maximum(maxDate, Constants.DD_MM_YYYY)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error("Unexpected error: customfield.maxValue is not in the DD/MM/YYYY date format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (requiredField != null && requiredField == true) { dateDataEntryPanel.setRequired(true); } dataValueEntryPanel = dateDataEntryPanel; } else {//ie if its not a date... if (encodedValues != null && !encodedValues.isEmpty()) { // The presence of encodedValues means it should be a DropDownChoice List<String> encodeKeyValueList = Arrays.asList(encodedValues.split(";")); ArrayList<EncodedValueVO> choiceList = new ArrayList<EncodedValueVO>(); for (String keyValue : encodeKeyValueList) { // Only split for the first instance of the '=' (allows the '=' character in the actual value) String[] keyValueArray = keyValue.split("=", 2); EncodedValueVO encodedValueVo = new EncodedValueVO(); encodedValueVo.setKey(keyValueArray[0]); encodedValueVo.setValue(keyValueArray[1]); choiceList.add(encodedValueVo); } ChoiceRenderer<EncodedValueVO> choiceRenderer = new ChoiceRenderer<EncodedValueVO>("value", "key"); if (cfd.getAllowMultiselect()) { CheckGroupDataEntryPanel cgdePanel = new CheckGroupDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel), choiceList, choiceRenderer); cgdePanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); cgdePanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "customFieldDisplay.customField.unitType.name")); if (cf.getMissingValue() != null && !cf.getMissingValue().isEmpty()) { cgdePanel.setMissingValue(cf.getMissingValue()); } if (requiredField != null && requiredField == true) { cgdePanel.setRequired(true); } dataValueEntryPanel = cgdePanel; } else { if (cf.getDefaultValue() != null && item.getModelObject().getTextDataValue() == null) { item.getModelObject().setTextDataValue(cf.getDefaultValue()); } DropDownChoiceDataEntryPanel ddcPanel = new DropDownChoiceDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel), choiceList, choiceRenderer); ddcPanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); ddcPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "customFieldDisplay.customField.unitType.name")); if (cf.getMissingValue() != null && !cf.getMissingValue().isEmpty()) { ddcPanel.setMissingValue(cf.getMissingValue()); } if (requiredField != null && requiredField == true) { ddcPanel.setRequired(true); } dataValueEntryPanel = ddcPanel; } } else { if (fieldTypeName .equals(au.org.theark.core.web.component.customfield.Constants.CHARACTER_FIELD_TYPE_NAME)) { // Text data if (cf.getDefaultValue() != null && item.getModelObject().getTextDataValue() == null) { item.getModelObject().setTextDataValue(cf.getDefaultValue()); } TextDataEntryPanel textDataEntryPanel = new TextDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel)); textDataEntryPanel .setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); textDataEntryPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "customFieldDisplay.customField.unitType.name")); textDataEntryPanel.setTextFieldSize(60); if (requiredField != null && requiredField == true) { textDataEntryPanel.setRequired(true); } dataValueEntryPanel = textDataEntryPanel; } else if (fieldTypeName .equals(au.org.theark.core.web.component.customfield.Constants.NUMBER_FIELD_TYPE_NAME)) { // Number data if (cf.getDefaultValue() != null && item.getModelObject().getNumberDataValue() == null) { item.getModelObject().setNumberDataValue(Double.parseDouble(cf.getDefaultValue())); ; } NumberDataEntryPanel numberDataEntryPanel = new NumberDataEntryPanel("dataValueEntryPanel", new PropertyModel<Double>(item.getModel(), "numberDataValue"), new Model<String>(labelModel)); numberDataEntryPanel .setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); numberDataEntryPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "customFieldDisplay.customField.unitType.name")); if (cf.getMinValue() != null && !cf.getMinValue().isEmpty()) { IConverter<Double> doubleConverter = numberDataEntryPanel.getNumberConverter(); try { Double minNumber = (Double) doubleConverter.convertToObject(cf.getMinValue(), getLocale()); numberDataEntryPanel.addValidator(new MinimumValidator<Double>(minNumber)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: customfield.maxValue is not in a valid number format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (cf.getMaxValue() != null && !cf.getMaxValue().isEmpty()) { IConverter<Double> doubleConverter = numberDataEntryPanel.getNumberConverter(); try { Double maxNumber = (Double) doubleConverter.convertToObject(cf.getMaxValue(), getLocale()); numberDataEntryPanel.addValidator(new MaximumValidator<Double>(maxNumber)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: customfield.maxValue is not in a valid number format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (requiredField != null && requiredField == true) { numberDataEntryPanel.setRequired(true); } dataValueEntryPanel = numberDataEntryPanel; } else { // TODO: Unknown type should display an UnsupportedValueEntryPanel dataValueEntryPanel = new EmptyPanel("dataValueEntryPanel"); } } } item.add(fieldLabelLbl); item.add(dataValueEntryPanel); }
From source file:au.org.theark.phenotypic.web.component.phenodataentry.PhenoDataSetDataEditorDataView.java
License:Open Source License
@Override protected void populateItem(Item<T> item) { IPhenoDataSetFieldData aCustomData = item.getModelObject(); PhenoDataSetField pf = aCustomData.getPhenoDataSetFieldDisplay().getPhenoDataSetField(); PhenoDataSetFieldDisplay pfd = aCustomData.getPhenoDataSetFieldDisplay(); // Determine label of component, also used for error messages String labelModel = new String(); if (pf.getFieldLabel() != null) { labelModel = pf.getFieldLabel(); } else {//from w ww . j a v a 2 s. c om // Defaults to name if no fieldLabel labelModel = pf.getName(); } Label fieldLabelLbl = new Label("fieldLabel", labelModel); Panel dataValueEntryPanel; String fieldTypeName = pf.getFieldType().getName(); String encodedValues = pf.getEncodedValues(); Boolean requiredField = aCustomData.getPhenoDataSetFieldDisplay().getRequired(); if (fieldTypeName.equals(au.org.theark.core.web.component.customfield.Constants.DATE_FIELD_TYPE_NAME)) { if (pf.getDefaultValue() != null && item.getModelObject().getDateDataValue() == null) { try { item.getModelObject().setDateDataValue( new SimpleDateFormat(Constants.DD_MM_YYYY).parse(pf.getDefaultValue())); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } DateDataEntryPanel dateDataEntryPanel = new DateDataEntryPanel("dataValueEntryPanel", new PropertyModel<Date>(item.getModel(), "dateDataValue"), new Model<String>(labelModel)); dateDataEntryPanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); dateDataEntryPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "phenoDataSetFieldDisplay.phenoDataSetField.unitType.name")); if (pf.getMinValue() != null && !pf.getMinValue().isEmpty()) { IConverter<Date> dateConverter = dateDataEntryPanel.getDateConverter(); try { Date minDate = (Date) dateConverter.convertToObject(pf.getMinValue(), getLocale()); dateDataEntryPanel.addValidator(DateValidator.minimum(minDate, Constants.DD_MM_YYYY)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: phenoDataSetField.minValue is not in the DD/MM/YYYY date format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (pf.getMaxValue() != null && !pf.getMaxValue().isEmpty()) { IConverter<Date> dateConverter = dateDataEntryPanel.getDateConverter(); try { Date maxDate = (Date) dateConverter.convertToObject(pf.getMaxValue(), getLocale()); dateDataEntryPanel.addValidator(DateValidator.maximum(maxDate, Constants.DD_MM_YYYY)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: phenoDataSetField.maxValue is not in the DD/MM/YYYY date format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (requiredField != null && requiredField == true) { dateDataEntryPanel.setRequired(true); } dataValueEntryPanel = dateDataEntryPanel; } else {//ie if its not a date... if (encodedValues != null && !encodedValues.isEmpty()) { // The presence of encodedValues means it should be a DropDownChoice List<String> encodeKeyValueList = Arrays.asList(encodedValues.split(";")); ArrayList<EncodedValueVO> choiceList = new ArrayList<EncodedValueVO>(); for (String keyValue : encodeKeyValueList) { // Only split for the first instance of the '=' (allows the '=' character in the actual value) String[] keyValueArray = keyValue.split("=", 2); EncodedValueVO encodedValueVo = new EncodedValueVO(); encodedValueVo.setKey(keyValueArray[0]); encodedValueVo.setValue(keyValueArray[1]); choiceList.add(encodedValueVo); } ChoiceRenderer<EncodedValueVO> choiceRenderer = new ChoiceRenderer<EncodedValueVO>("value", "key"); if (pfd.getAllowMultiselect()) { CheckGroupDataEntryPanel cgdePanel = new CheckGroupDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel), choiceList, choiceRenderer); cgdePanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); cgdePanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "phenoDataSetFieldDisplay.phenoDataSetField.unitType.name")); if (pf.getMissingValue() != null && !pf.getMissingValue().isEmpty()) { cgdePanel.setMissingValue(pf.getMissingValue()); } if (requiredField != null && requiredField == true) { cgdePanel.setRequired(true); } dataValueEntryPanel = cgdePanel; } else { if (pf.getDefaultValue() != null && item.getModelObject().getTextDataValue() == null) { item.getModelObject().setTextDataValue(pf.getDefaultValue()); } DropDownChoiceDataEntryPanel ddcPanel = new DropDownChoiceDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel), choiceList, choiceRenderer); ddcPanel.setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); ddcPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "phenoDataSetFieldDisplay.phenoDataSetField.unitType.name")); if (pf.getMissingValue() != null && !pf.getMissingValue().isEmpty()) { ddcPanel.setMissingValue(pf.getMissingValue()); } if (requiredField != null && requiredField == true) { ddcPanel.setRequired(true); } dataValueEntryPanel = ddcPanel; } } else { if (fieldTypeName .equals(au.org.theark.core.web.component.customfield.Constants.CHARACTER_FIELD_TYPE_NAME)) { // Text data if (pf.getDefaultValue() != null && item.getModelObject().getTextDataValue() == null) { item.getModelObject().setTextDataValue(pf.getDefaultValue()); } TextDataEntryPanel textDataEntryPanel = new TextDataEntryPanel("dataValueEntryPanel", new PropertyModel<String>(item.getModel(), "textDataValue"), new Model<String>(labelModel)); textDataEntryPanel .setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); textDataEntryPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "phenoDataSetFieldDisplay.phenoDataSetField.unitType.name")); textDataEntryPanel.setTextFieldSize(60); if (requiredField != null && requiredField == true) { textDataEntryPanel.setRequired(true); } dataValueEntryPanel = textDataEntryPanel; } else if (fieldTypeName .equals(au.org.theark.core.web.component.customfield.Constants.NUMBER_FIELD_TYPE_NAME)) { // Number data if (pf.getDefaultValue() != null && item.getModelObject().getNumberDataValue() == null) { item.getModelObject().setNumberDataValue(Double.parseDouble(pf.getDefaultValue())); ; } NumberDataEntryPanel numberDataEntryPanel = new NumberDataEntryPanel("dataValueEntryPanel", new PropertyModel<Double>(item.getModel(), "numberDataValue"), new Model<String>(labelModel)); numberDataEntryPanel .setErrorDataValueModel(new PropertyModel<String>(item.getModel(), "errorDataValue")); numberDataEntryPanel.setUnitsLabelModel(new PropertyModel<String>(item.getModel(), "phenoDataSetFieldDisplay.phenoDataSetField.unitType.name")); if (pf.getMinValue() != null && !pf.getMinValue().isEmpty()) { IConverter<Double> doubleConverter = numberDataEntryPanel.getNumberConverter(); try { Double minNumber = (Double) doubleConverter.convertToObject(pf.getMinValue(), getLocale()); numberDataEntryPanel.addValidator(new MinimumValidator<Double>(minNumber)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: phenoDataSetField.maxValue is not in a valid number format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (pf.getMaxValue() != null && !pf.getMaxValue().isEmpty()) { IConverter<Double> doubleConverter = numberDataEntryPanel.getNumberConverter(); try { Double maxNumber = (Double) doubleConverter.convertToObject(pf.getMaxValue(), getLocale()); numberDataEntryPanel.addValidator(new MaximumValidator<Double>(maxNumber)); } catch (ConversionException ce) { // This should not occur because it means the data is corrupted on the backend database getLog().error( "Unexpected error: phenoDataSetField.maxValue is not in a valid number format"); this.error( "An unexpected error occurred loading the field validators from database. Please contact your System Administrator."); getParentContainer().setEnabled(false); } } if (requiredField != null && requiredField == true) { numberDataEntryPanel.setRequired(true); } dataValueEntryPanel = numberDataEntryPanel; } else { // TODO: Unknown type should display an UnsupportedValueEntryPanel dataValueEntryPanel = new EmptyPanel("dataValueEntryPanel"); } } } item.add(fieldLabelLbl); item.add(dataValueEntryPanel); }