use of com.manydesigns.elements.reflection.PropertyAccessor in project Portofino by ManyDesigns.
the class NumericFieldTest method testFormattedWithModifiers.
public void testFormattedWithModifiers() throws NoSuchFieldException {
ClassAccessor classAccessor = JavaClassAccessor.getClassAccessor(this.getClass());
PropertyAccessor myPropertyAccessor = classAccessor.getProperty("myFormattedDecimalWithModifiers");
decimalField = new NumericField(myPropertyAccessor, Mode.EDIT, null);
decimalField.setStringValue("aaa1,234.5bbb");
assertTrue(decimalField.validate());
assertEquals(decimalField.getValue(), new BigDecimal("123.4"));
decimalField.setStringValue("aaa1.234,5bbb");
assertFalse(decimalField.validate());
// Out of range, max is 10^precision
decimalField.setStringValue("aaa1,234,567.8bbb");
assertFalse(decimalField.validate());
// Leave only Italian locale
req.locales.remove(0);
decimalField = new NumericField(myPropertyAccessor, Mode.EDIT, null);
decimalField.setStringValue("aaa1,234.5bbb");
assertFalse(decimalField.validate());
decimalField.setStringValue("aaa1.234,5bbb");
assertTrue(decimalField.validate());
assertEquals(decimalField.getValue(), new BigDecimal("123.4"));
}
use of com.manydesigns.elements.reflection.PropertyAccessor in project Portofino by ManyDesigns.
the class NumericFieldTest method testFormatted.
public void testFormatted() throws NoSuchFieldException {
ClassAccessor classAccessor = JavaClassAccessor.getClassAccessor(this.getClass());
PropertyAccessor myPropertyAccessor = classAccessor.getProperty("myFormattedDecimal");
decimalField = new NumericField(myPropertyAccessor, Mode.EDIT, null);
decimalField.setStringValue("aaa1,234.5bbb");
assertEquals(decimalField.getValue(), new BigDecimal("1234"));
assertTrue(decimalField.validate());
decimalField.setStringValue("aaa1.234,5bbb");
assertFalse(decimalField.validate());
// Leave only Italian locale
req.locales.remove(0);
decimalField = new NumericField(myPropertyAccessor, Mode.EDIT, null);
decimalField.setStringValue("aaa1,234.5bbb");
assertFalse(decimalField.validate());
decimalField.setStringValue("aaa1.234,5bbb");
assertTrue(decimalField.validate());
assertEquals(decimalField.getValue(), new BigDecimal("1234"));
}
use of com.manydesigns.elements.reflection.PropertyAccessor in project Portofino by ManyDesigns.
the class FormBuilder method configReflectiveFields.
public FormBuilder configReflectiveFields() {
logger.debug("configReflectiveFields");
groupedPropertyAccessors = new ArrayList<ArrayList<PropertyAccessor>>();
fieldSetNames = new ArrayList<String>();
ArrayList<PropertyAccessor> currentGroup = null;
String currentGroupName = null;
for (PropertyAccessor current : classAccessor.getProperties()) {
// check if field is enabled
Enabled enabled = current.getAnnotation(Enabled.class);
if (enabled != null && !enabled.value()) {
logger.debug("Skipping non-enabled field: {}", current.getName());
continue;
}
String groupName = null;
if (current.isAnnotationPresent(com.manydesigns.elements.annotations.FieldSet.class)) {
groupName = getText(current.getAnnotation(FieldSet.class).value());
}
if ((currentGroup == null) || (groupName != null && !groupName.equals(currentGroupName))) {
currentGroup = new ArrayList<PropertyAccessor>();
groupedPropertyAccessors.add(currentGroup);
fieldSetNames.add(groupName);
currentGroupName = groupName;
}
currentGroup.add(current);
}
logger.debug("configReflectiveFields");
return this;
}
use of com.manydesigns.elements.reflection.PropertyAccessor in project Portofino by ManyDesigns.
the class FormBuilder method build.
// **************************************************************************
// Building
// **************************************************************************
public Form build() {
logger.debug("build");
Form form = new Form(mode);
if (groupedPropertyAccessors == null) {
configReflectiveFields();
}
// remove unused (or partially used) selection providers
List<PropertyAccessor> allPropertyAccessors = new ArrayList<PropertyAccessor>();
for (ArrayList<PropertyAccessor> group : groupedPropertyAccessors) {
allPropertyAccessors.addAll(group);
}
removeUnusedSelectionProviders(allPropertyAccessors);
// create the form/fieldset/field sructure
Map<String, Field> fieldMap = new HashMap<String, Field>();
for (int i = 0; i < groupedPropertyAccessors.size(); i++) {
buildFieldGroup(form, i, fieldMap);
}
// handle cascaded select fields
for (Map.Entry<String[], SelectionProvider> current : selectionProviders.entrySet()) {
String[] fieldNames = current.getKey();
SelectionProvider selectionProvider = current.getValue();
SelectionModel selectionModel = selectionProvider.createSelectionModel();
SelectField previousField = null;
for (int i = 0; i < fieldNames.length; i++) {
SelectField selectField = (SelectField) fieldMap.get(fieldNames[i]);
selectField.setSelectionModel(selectionModel);
selectField.setSelectionModelIndex(i);
if (previousField != null) {
selectField.setPreviousSelectField(previousField);
previousField.setNextSelectField(selectField);
}
previousField = selectField;
}
}
return form;
}
use of com.manydesigns.elements.reflection.PropertyAccessor in project Portofino by ManyDesigns.
the class SearchFormBuilder method build.
// **************************************************************************
// Building
// **************************************************************************
public SearchForm build() {
logger.debug("build");
SearchForm searchForm = new SearchForm();
FieldsManager manager = FieldsManager.getManager();
if (propertyAccessors == null) {
configReflectiveFields();
}
Map<String, SearchField> fieldMap = new HashMap<String, SearchField>();
for (PropertyAccessor propertyAccessor : propertyAccessors) {
SearchField field = null;
String fieldName = propertyAccessor.getName();
for (Map.Entry<String[], SelectionProvider> current : selectionProviders.entrySet()) {
String[] fieldNames = current.getKey();
int index = ArrayUtils.indexOf(fieldNames, fieldName);
if (index >= 0) {
field = new SelectSearchField(propertyAccessor, current.getValue(), prefix);
break;
}
}
if (field == null) {
field = manager.tryToInstantiateSearchField(classAccessor, propertyAccessor, prefix);
}
if (field == null) {
logger.warn("Cannot instantiate field for property {}", propertyAccessor);
continue;
}
fieldMap.put(fieldName, field);
searchForm.add(field);
}
// handle cascaded select fields
for (Map.Entry<String[], SelectionProvider> current : selectionProviders.entrySet()) {
String[] fieldNames = current.getKey();
SelectionProvider selectionProvider = current.getValue();
SelectionModel selectionModel = selectionProvider.createSelectionModel();
SelectSearchField previousField = null;
for (int i = 0; i < fieldNames.length; i++) {
SelectSearchField selectSearchField = (SelectSearchField) fieldMap.get(fieldNames[i]);
if (selectSearchField == null) {
previousField = null;
continue;
}
selectSearchField.setSelectionModel(selectionModel);
selectSearchField.setSelectionModelIndex(i);
if (previousField != null) {
selectSearchField.setPreviousSelectField(previousField);
previousField.setNextSelectField(selectSearchField);
}
previousField = selectSearchField;
}
}
return searchForm;
}
Aggregations