diff --git a/.gitignore b/.gitignore index 3e9c1d5cc7..f0e84046f8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ Thumbs.db oneclick/local.* oneclick/build/* #Created by portofino-spring-boot -/portofino-application/ \ No newline at end of file +/portofino-application/ +/.vscode/ \ No newline at end of file diff --git a/.hgignore b/.hgignore deleted file mode 100755 index 7b4bee3429..0000000000 --- a/.hgignore +++ /dev/null @@ -1,24 +0,0 @@ -^[.]git/.*$ -^profiles.xml -^target -^[^/]*/target -^out/ -^[.]idea/ -^[.]iml/ -^.*/overlays/.*$ -^oneclick/local.py$ -^oneclick/local.pyc$ -^oneclick/build/ -derby.log -portofino-local.properties$ -pom.xml.versionsBackup$ -syntax: glob -*.DS_Store -*.iml -*.ipr -*.iws -*~ -*.bak -*.orig -*h2.db -*trace.db diff --git a/.hgtags b/.hgtags deleted file mode 100644 index 5f0123b7ab..0000000000 --- a/.hgtags +++ /dev/null @@ -1,65 +0,0 @@ -4b16a795a049aa4397b57351963ec30a601cee2d 4.0.beta1 -c5d3c0a746dbc091d661f57edd56e92b85330677 4.0.beta2 -914aa719ae0a871a35cce5035b712db41159d612 4.0.beta3 -624bc19843a8552c2b5a7d158c60b5e89fac3f8e 4.0.beta4 -017354b9aec7caef5210fc82901619910f3bc49e 4.0.beta5 -4ba04beb9194b2550a095ec27de856c663acad7e 4.0.rc1 -418dc234bac1ac2b6440c79e8ef182cd0cae0372 4.0.rc2 -8ee90e211d840305b21684dbfa816b4524084e02 4.0.beta6 -eebf25554ba31bce1ddfe7504f0d21686dddab05 4.0.rc3 -3ca53608b01f0eed2807ccd9f7511259795ad2ab 4.0.rc4 - -b62aa11296d5d01f734bc41fc64588d712f9c92e 4.0.rc5 -96737304d944bfd05671eb0cea84a9499f5ea9e5 4.0.beta7 - -d5bf17ebcd3db47b6f028625547440ebbeecd522 4.0.rc6 -d5bf17ebcd3db47b6f028625547440ebbeecd522 4.0.rc6 -0000000000000000000000000000000000000000 4.0.rc6 -0000000000000000000000000000000000000000 4.0.rc6 -7569a7fc2147b85f8a0acac0492d907013109432 4.0.rc6 -16a7897d9e800806b5608d41fb4a9c274adefc12 4.0.rc8 -0000000000000000000000000000000000000000 4.0.rc8 -0000000000000000000000000000000000000000 4.0.rc8 -4ae044d66642439419a565c887690969f78ed545 4.0.rc8 -4989d782f7e1cc7ddddb0b48f9f8bf6c2e3c8e02 4.0.0 -1f42feb7e0d318800bdd72441f3ed578103e6e3c 4.0.1 -d70d7ae07b755e3894249e81e4220bed5f84c2e8 4.0.3 -9d0bcef1eb475c185414415a4e21614ab39e2b36 4.0.4 -9d0af09771d5e71e79205866d09cd7cc94a1b4ec 4.0.2 -afef944c742488de33db7cf3997811d9adf88c83 4.0.rc7 -3b7b88d9a117d452a7bf844df0c6d1cf5abe1c40 4.0.5 -f45ef3c2dacc05cffe144eeec1afe71305f5bb3c 4.0.6 -91aa842f2f9221cf2f39b1c15ee2a8be936c16cd 4.0.7 -91aa842f2f9221cf2f39b1c15ee2a8be936c16cd 4.0.7 -978270a9931c2cc963bd59b395b6c12c648acb43 4.0.7 -978270a9931c2cc963bd59b395b6c12c648acb43 4.0.7 -980e35f0d37aae520ca7b176bda34dbd2ec27b3d 4.0.7 -06a56c33a774a649573fc4660002304c0eca5f5e 4.0.8 -06a56c33a774a649573fc4660002304c0eca5f5e 4.0.8 -0000000000000000000000000000000000000000 4.0.8 -1987d47c8eeb6b882d6e526a22fca51a186d8e05 4.0.8 -0000000000000000000000000000000000000000 4.0.8 -0000000000000000000000000000000000000000 4.0.8 -4b5edd97901351c8f2ff3d2a9447adf39be59746 4.0.8 - -c4a2ba0333f9b3e168cef865260f07d4f6ee839a 4.0.9 -4f17274726aa6336248e6e6edd848c97ec776d63 4.0.9 -4f17274726aa6336248e6e6edd848c97ec776d63 4.0.9 -6325ace4a34f475365975365d8d419796694eeba 4.0.9 -00a3146b465cc868f5e35da8d1cfd676e1cd42d9 4.0.10 -cc991510fbf2384845d33fb030bc2616469aab26 4.1.beta1 -26aca7f464b093c5aca4328cda3eb08c237e6b06 4.1.beta2 -4965ced06434380fba6a7aa6daf28b084f38fb6d 4.1.beta3 -8110df3e80ee0baa71b654970eac6e8e817a563d 4.1.beta4 -3b531b20d284503f63895e1e52550adcb3363e2b 4.1.beta5 -408d13112fec23088c8d28b07b78f2eb27b18b49 4.1.beta6 -d0c893bf45d11e14cbe3a0c6638ac54829d9e875 4.1 -eebc12b714ff5772b0c373b3605f9ffae342f64d 4.1.1 -3c982b26ec6edf4172a817bff1af51984b90d39a 4.1.2 -772a587e9f0f4da56c154e4725327d937dbb6c8c 4.1.3 -772a587e9f0f4da56c154e4725327d937dbb6c8c 4.1.3 -386731eb041b6d26c03e78e08b2c3ffd2b5b7dc7 4.1.3 -f0e74d3fe517325f714a5e58316a7608f1b4b79c 4.2 -992c4682f6fe56023d3e71e84fa20d0fe87b4526 4.2.1 -e5eeb98b8c508a6114a14d34c71c5a78046855b9 4.2.2 -8c2f22b836a4346e6ee310abafd5710dd70ea1d0 4.2.3 diff --git a/elements/src/main/java/com/manydesigns/elements/Element.java b/elements/src/main/java/com/manydesigns/elements/Element.java index 86b231e66b..c84595a00d 100644 --- a/elements/src/main/java/com/manydesigns/elements/Element.java +++ b/elements/src/main/java/com/manydesigns/elements/Element.java @@ -35,7 +35,7 @@ public interface Element extends XhtmlFragment { "Copyright (C) 2005-2020 ManyDesigns srl"; void readFromRequest(HttpServletRequest req); - void readFrom(KeyValueAccessor keyValueAccessor); + void readFrom(KeyValueAccessor keyValueAccessor); boolean validate(); boolean isValid(); void readFromObject(Object obj); diff --git a/elements/src/main/java/com/manydesigns/elements/KeyValueAccessor.java b/elements/src/main/java/com/manydesigns/elements/KeyValueAccessor.java index 633a0ded11..7202687b74 100644 --- a/elements/src/main/java/com/manydesigns/elements/KeyValueAccessor.java +++ b/elements/src/main/java/com/manydesigns/elements/KeyValueAccessor.java @@ -1,5 +1,7 @@ package com.manydesigns.elements; +import java.util.List; + /** * @author Angelo Lupo - angelo.lupo@manydesigns.com * @author Giampiero Granatella - giampiero.granatella@manydesigns.com @@ -14,5 +16,6 @@ public interface KeyValueAccessor { void set(String name, Object value); boolean has(String name); - KeyValueAccessor inner(Object value); + KeyValueAccessor object(String name); + List list(String name); } diff --git a/elements/src/main/java/com/manydesigns/elements/MapKeyValueAccessor.java b/elements/src/main/java/com/manydesigns/elements/MapKeyValueAccessor.java index 1a34ed4a67..604d2bb826 100644 --- a/elements/src/main/java/com/manydesigns/elements/MapKeyValueAccessor.java +++ b/elements/src/main/java/com/manydesigns/elements/MapKeyValueAccessor.java @@ -26,7 +26,8 @@ public boolean has(String name) { } @Override - public KeyValueAccessor inner(Object value) { - return new MapKeyValueAccessor((Map) value); + public KeyValueAccessor object(String name) { + Map inner = (Map) get(name); + return inner != null ? new MapKeyValueAccessor(inner) : null; } } diff --git a/elements/src/main/java/com/manydesigns/elements/composites/AbstractCompositeElement.java b/elements/src/main/java/com/manydesigns/elements/composites/AbstractCompositeElement.java index 79df393a98..9c46f0b016 100644 --- a/elements/src/main/java/com/manydesigns/elements/composites/AbstractCompositeElement.java +++ b/elements/src/main/java/com/manydesigns/elements/composites/AbstractCompositeElement.java @@ -60,6 +60,13 @@ public void readFromRequest(HttpServletRequest req) { } } + @Override + public void readFrom(KeyValueAccessor keyValueAccessor) { + for (T current : this) { + current.readFrom(keyValueAccessor); + } + } + public boolean validate() { boolean result = true; for (T current : this) { diff --git a/elements/src/main/java/com/manydesigns/elements/fields/search/AbstractSearchField.java b/elements/src/main/java/com/manydesigns/elements/fields/search/AbstractSearchField.java index 5562f2c1c6..927a9c5500 100644 --- a/elements/src/main/java/com/manydesigns/elements/fields/search/AbstractSearchField.java +++ b/elements/src/main/java/com/manydesigns/elements/fields/search/AbstractSearchField.java @@ -21,6 +21,7 @@ package com.manydesigns.elements.fields.search; import com.manydesigns.elements.ElementsThreadLocals; +import com.manydesigns.elements.KeyValueAccessor; import com.manydesigns.elements.annotations.Id; import com.manydesigns.elements.annotations.InputName; import com.manydesigns.elements.annotations.Required; @@ -106,6 +107,11 @@ public void readFromObject(Object obj) { public void writeToObject(Object obj) { } + @Override + public void readFrom(KeyValueAccessor keyValueAccessor) { + throw new UnsupportedOperationException("TODO"); + } + //************************************************************************** // Getters/setters //************************************************************************** diff --git a/elements/src/main/java/com/manydesigns/elements/forms/SearchForm.java b/elements/src/main/java/com/manydesigns/elements/forms/SearchForm.java index 4974895e1b..6af2ea5be6 100644 --- a/elements/src/main/java/com/manydesigns/elements/forms/SearchForm.java +++ b/elements/src/main/java/com/manydesigns/elements/forms/SearchForm.java @@ -70,7 +70,4 @@ public SearchField findSearchFieldByPropertyName(String propertyName) { } return null; } - - - } diff --git a/elements/src/main/java/com/manydesigns/elements/forms/TableForm.java b/elements/src/main/java/com/manydesigns/elements/forms/TableForm.java index 2cfbce47c2..56a6891450 100644 --- a/elements/src/main/java/com/manydesigns/elements/forms/TableForm.java +++ b/elements/src/main/java/com/manydesigns/elements/forms/TableForm.java @@ -39,7 +39,7 @@ import java.lang.reflect.Array; import java.util.*; -/* +/** A form with multiple rows, where a row is a collection of fields. Every row has the same fields. * @author Paolo Predonzani - paolo.predonzani@manydesigns.com * @author Angelo Lupo - angelo.lupo@manydesigns.com * @author Giampiero Granatella - giampiero.granatella@manydesigns.com @@ -52,7 +52,7 @@ public class TableForm implements Element { protected String selectInputName = "select"; protected final Column[] columns; - protected final List rows = new ArrayList<>(); + protected List rows = new ArrayList<>(); protected String prefix; @@ -187,34 +187,26 @@ public boolean isValid() { public void readFromObject(Object obj) { Class clazz = obj.getClass(); - if (clazz.isArray()) { // Tratta obj come un array - // Scorre tutti gli ellementi dell'array obj, - // indipendentemente da quante righe ci sono nell table form. - // Eventualmente lancia Eccezione. + if (clazz.isArray()) { final int arrayLength = Array.getLength(obj); + rows = new ArrayList<>(arrayLength); for (int i = 0; i < arrayLength; i++) { Object currentObj = Array.get(obj, i); - rows[i].readFromObject(currentObj); - } - - // Scorre le rimanenti righe del table form, - // passano null come ottetto di bind. - for (int i = arrayLength; i < rows.length; i++) { - rows[i].readFromObject(null); + Row row = new Row(i); + rows.add(row); + row.readFromObject(currentObj); } } else if (Collection.class.isAssignableFrom(clazz)) { // Tratta obj come collection - Collection collection = (Collection)obj; - + Collection collection = (Collection) obj; + rows = new ArrayList<>(collection.size()); int i = 0; for (Object currentObj : collection) { - rows[i].readFromObject(currentObj); + Row row = new Row(i); + rows.add(row); + row.readFromObject(currentObj); i++; } - - for (; i < rows.length; i++) { - rows[i].readFromObject(null); - } } } diff --git a/elements/src/main/java/com/manydesigns/elements/json/JsonKeyValueAccessor.java b/elements/src/main/java/com/manydesigns/elements/json/JsonKeyValueAccessor.java index 310404ca78..9b2679bcd8 100644 --- a/elements/src/main/java/com/manydesigns/elements/json/JsonKeyValueAccessor.java +++ b/elements/src/main/java/com/manydesigns/elements/json/JsonKeyValueAccessor.java @@ -38,7 +38,10 @@ public boolean has(String name) { } @Override - public KeyValueAccessor inner(Object value) { - return new JsonKeyValueAccessor((JSONObject) value); + public KeyValueAccessor object(String name) { + if (jsonObject.isNull(name)) { + return null; + } + return new JsonKeyValueAccessor(jsonObject.getJSONObject(name)); } } diff --git a/elements/src/main/java/com/manydesigns/elements/pdf/TableFormPdfExporter.java b/elements/src/main/java/com/manydesigns/elements/pdf/TableFormPdfExporter.java index b76f6a1e91..085fd304b6 100644 --- a/elements/src/main/java/com/manydesigns/elements/pdf/TableFormPdfExporter.java +++ b/elements/src/main/java/com/manydesigns/elements/pdf/TableFormPdfExporter.java @@ -165,7 +165,7 @@ protected double[] setupColumnSizes() { int i = 0; for (Field field : row) { int size = StringUtils.length(field.getStringValue()); - double relativeSize = ((double) size) / form.getRows().length; + double relativeSize = ((double) size) / form.getRows().size(); columnSizes[i++] += relativeSize; } } diff --git a/pom.xml b/pom.xml index 2303e997d7..be2142ea4b 100644 --- a/pom.xml +++ b/pom.xml @@ -648,7 +648,7 @@ - 1.8 + 11 diff --git a/portofino-core/src/main/java/com/manydesigns/portofino/rest/FormParametersAccessor.java b/portofino-core/src/main/java/com/manydesigns/portofino/rest/FormParametersAccessor.java index 8e0b3551e4..0b22599e9b 100644 --- a/portofino-core/src/main/java/com/manydesigns/portofino/rest/FormParametersAccessor.java +++ b/portofino-core/src/main/java/com/manydesigns/portofino/rest/FormParametersAccessor.java @@ -29,7 +29,7 @@ public boolean has(String name) { } @Override - public KeyValueAccessor inner(Object value) { + public KeyValueAccessor object(String name) { throw new UnsupportedOperationException(); } }