ProtocolPropertiesUtilities.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.web.ctrlstat.servlet.protocol_properties;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.openspcoop2.core.constants.ProprietariProtocolProperty;
import org.openspcoop2.core.registry.ProtocolProperty;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.ConsoleInterfaceType;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemType;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemValueType;
import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
import org.openspcoop2.protocol.sdk.properties.AbstractConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BaseConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BooleanConsoleItem;
import org.openspcoop2.protocol.sdk.properties.NumberConsoleItem;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
import org.openspcoop2.protocol.sdk.properties.StringConsoleItem;
import org.openspcoop2.protocol.sdk.properties.SubtitleConsoleItem;
import org.openspcoop2.protocol.sdk.properties.TitleConsoleItem;
import org.openspcoop2.utils.SortedMap;
import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneUtilities;
import org.openspcoop2.web.lib.mvc.BinaryParameter;
import org.openspcoop2.web.lib.mvc.DataElement;
import org.openspcoop2.web.lib.mvc.DataElement.STATO_APERTURA_SEZIONI;
import org.openspcoop2.web.lib.mvc.DataElementInfo;
import org.openspcoop2.web.lib.mvc.DataElementType;
import org.openspcoop2.web.lib.mvc.Parameter;
/**
* ProtocolPropertiesUtilities
*
* @author Pintori Giuliano (pintori@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ProtocolPropertiesUtilities {
private ProtocolPropertiesUtilities() {}
public static ConsoleInterfaceType getTipoInterfaccia(ConsoleHelper consoleHelper){
if(consoleHelper.isModalitaStandard()) {
return ConsoleInterfaceType.STANDARD;
}
if(consoleHelper.isModalitaCompleta()) {
return ConsoleInterfaceType.COMPLETA;
}
return ConsoleInterfaceType.AVANZATA;
}
private static String getPrefixErrorItemConClasse(AbstractConsoleItem<?> abItem) {
return "Item con classe ["+abItem.getClass()+"] ";
}
private static String getPrefixErrorItemConClasse(BaseConsoleItem item) {
return "Item con classe ["+item.getClass()+"] ";
}
public static List<DataElement> itemToDataElement(List<DataElement> dati ,
ConsoleHelper consoleHelper,
BaseConsoleItem item, Object defaultItemValue,
ConsoleOperationType consoleOperationType,
Properties binaryChangeProperties, ProtocolProperty protocolProperty, int size) throws ProtocolException {
return itemToDataElementEngine(dati, consoleHelper,
item, defaultItemValue,
consoleOperationType,
binaryChangeProperties,
protocolProperty!=null ? protocolProperty.getId() : null,
protocolProperty!=null ? protocolProperty.getFile() : null,
size,
protocolProperty!=null && (protocolProperty.getByteFile()!=null));
}
public static List<DataElement> itemToDataElement(List<DataElement> dati ,
ConsoleHelper consoleHelper,
BaseConsoleItem item, Object defaultItemValue,
ConsoleOperationType consoleOperationType,
Properties binaryChangeProperties, org.openspcoop2.core.config.ProtocolProperty protocolProperty, int size) throws ProtocolException {
return itemToDataElementEngine(dati, consoleHelper,
item, defaultItemValue,
consoleOperationType,
binaryChangeProperties,
protocolProperty!=null ? protocolProperty.getId() : null,
protocolProperty!=null ? protocolProperty.getFile() : null,
size,
protocolProperty!=null && (protocolProperty.getByteFile()!=null));
}
private static List<DataElement> itemToDataElementEngine(List<DataElement> dati ,
ConsoleHelper consoleHelper,
BaseConsoleItem item, Object defaultItemValue,
ConsoleOperationType consoleOperationType,
Properties binaryChangeProperties,
Long protocolPropertyId, String protocolPropertyFile, int size,
boolean contentSaved) throws ProtocolException {
if(item == null)
return dati;
// tipi con valore
if(item instanceof AbstractConsoleItem<?>){
AbstractConsoleItem<?> abItem = (AbstractConsoleItem<?>) item;
switch (abItem.getType()) {
case CHECKBOX:
getCheckbox(dati,abItem, defaultItemValue, size);
break;
case LOCK:
getText(dati, consoleHelper,abItem, size, DataElementType.LOCK);
break;
case LOCK_HIDDEN:
getHidden(dati, consoleHelper, abItem, size);
break;
case CRYPT:
getText(dati, consoleHelper,abItem, size, DataElementType.CRYPT);
break;
case FILE:
getFile(dati, consoleHelper, abItem, size, consoleOperationType,binaryChangeProperties, protocolPropertyId, protocolPropertyFile, contentSaved);
break;
case HIDDEN:
getHidden(dati, consoleHelper, abItem, size);
break;
case SELECT:
getSelect(dati,abItem, defaultItemValue, size);
break;
case MULTI_SELECT:
getMultiSelect(dati,abItem, defaultItemValue, size);
break;
case TEXT:
getText(dati, consoleHelper,abItem, size, DataElementType.TEXT);
break;
case TEXT_AREA:
getText(dati, consoleHelper,abItem, size, DataElementType.TEXT_AREA);
break;
case TEXT_AREA_NO_EDIT:
getText(dati, consoleHelper,abItem, size, DataElementType.TEXT_AREA_NO_EDIT);
break;
case TEXT_EDIT:
getText(dati, consoleHelper,abItem, size, DataElementType.TEXT_EDIT);
break;
case TAGS:
getText(dati, consoleHelper,abItem, size, DataElementType.TEXT_EDIT);
dati.get(dati.size()-1).enableTags();
break;
case NUMBER:
getText(dati, consoleHelper,abItem, size, DataElementType.NUMBER);
break;
default:
throw new ProtocolException(getPrefixErrorItemConClasse(abItem)+"identificato come tipo AbstractConsoleItem ma con Type: ["+abItem.getType()+"] di tipo titolo o note");
}
} else {
// titoli e note
switch (item.getType()) {
case NOTE:
getTitle(dati,item, size,DataElementType.NOTE);
break;
case SUBTITLE:
getTitle(dati,item, size,DataElementType.SUBTITLE);
break;
case TITLE:
getTitle(dati,item, size,DataElementType.TITLE);
break;
case HIDDEN:
getHidden(dati, consoleHelper, item, size);
break;
default:
throw new ProtocolException(getPrefixErrorItemConClasse(item)+"non identificato come tipo AbstractConsoleItem ma con Type: ["+item.getType()+"] non di tipo titolo o note");
}
}
return dati;
}
public static List<DataElement> itemToDataElementAsHidden(List<DataElement> dati ,ConsoleHelper consoleHelper, BaseConsoleItem item, Object defaultItemValue,
ConsoleOperationType consoleOperationType,
Properties binaryChangeProperties, ProtocolProperty protocolProperty, int size) throws ProtocolException {
if(defaultItemValue!=null || consoleOperationType!=null || binaryChangeProperties!=null || protocolProperty!=null) {
// nop
}
if(item == null)
return dati;
// tipi con valore
if(item instanceof AbstractConsoleItem<?>){
AbstractConsoleItem<?> abItem = (AbstractConsoleItem<?>) item;
switch (abItem.getType()) {
case CHECKBOX:
case LOCK:
case LOCK_HIDDEN:
case CRYPT:
case FILE:
case HIDDEN:
case SELECT:
case MULTI_SELECT:
case TEXT:
case TEXT_AREA:
case TEXT_AREA_NO_EDIT:
case TEXT_EDIT:
case TAGS:
case NUMBER:
getHidden(dati, consoleHelper, abItem, size);
break;
default:
throw new ProtocolException(getPrefixErrorItemConClasse(abItem)+"identificato come tipo AbstractConsoleItem ma con Type: ["+abItem.getType()+"] di tipo titolo o note");
}
} else {
// titoli e note non vengono aggiunti lascio il controllo dei tipi per sicurezza
switch (item.getType()) {
case NOTE:
case SUBTITLE:
case TITLE:
case HIDDEN:
break;
default:
throw new ProtocolException(getPrefixErrorItemConClasse(item)+"non identificato come tipo AbstractConsoleItem ma con Type: ["+item.getType()+"] non di tipo titolo o note");
}
}
return dati;
}
public static List<DataElement> getTitle(List<DataElement> dati ,BaseConsoleItem item, int size, DataElementType type) {
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(type);
de.setLabel(item.getLabel());
de.setSize(size);
de.setValue("");
if(ConsoleItemType.TITLE.equals(item.getType()) && item instanceof TitleConsoleItem) {
TitleConsoleItem titleItem = (TitleConsoleItem) item;
if(titleItem.isCloseable()) {
de.setStatoAperturaSezioni(STATO_APERTURA_SEZIONI.CHIUSO);
}
}
else if(ConsoleItemType.SUBTITLE.equals(item.getType()) && item instanceof SubtitleConsoleItem) {
SubtitleConsoleItem subItem = (SubtitleConsoleItem) item;
if(subItem.isCloseable()) {
de.setStatoAperturaSezioni(STATO_APERTURA_SEZIONI.CHIUSO);
}
}
dati.add(de);
return dati;
}
private static String getPrefixMessageErrorConsoleItemType(ConsoleItemValueType consoleItemValueType) {
return "Item con consoleItemType ["+consoleItemValueType+"] ";
}
public static List<DataElement> getText(List<DataElement> dati ,ConsoleHelper consoleHelper, AbstractConsoleItem<?> item, int size, DataElementType type) throws ProtocolException {
DataElement de = new DataElement();
de.setName(item.getId());
if(DataElementType.LOCK.equals(type)) {
// imposto il tipo insieme al valore
}
else {
de.setType(type);
}
de.setRequired(item.isRequired());
de.setLabel(item.getLabel());
de.setLabelRight(item.getLabelRight());
if(item.isReloadOnChange()) {
if(item.isReloadOnHttpPost()) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
de.setNote(item.getNote());
de.setSize(size);
addDataElementInfo(item, de);
ConsoleItemValueType consoleItemValueType = ProtocolPropertiesUtils.getConsoleItemValueType(item);
setTextValue(consoleItemValueType, consoleHelper, item, de, type);
if(item.getDefaultValueForCloseableSection() instanceof String) {
String s = (String) item.getDefaultValueForCloseableSection();
de.setValoreDefault(s);
}
dati.add(de);
return dati;
}
private static void setTextValue(ConsoleItemValueType consoleItemValueType,ConsoleHelper consoleHelper,AbstractConsoleItem<?> item,DataElement de, DataElementType type) throws ProtocolException {
String value = null;
switch(consoleItemValueType){
case BOOLEAN:
BooleanConsoleItem booleanItem = (BooleanConsoleItem) item;
value = booleanItem.getDefaultValue() != null ? booleanItem.getDefaultValue() + "" : "";
break;
case NUMBER:
NumberConsoleItem numberItem = (NumberConsoleItem) item;
value = numberItem.getDefaultValue() != null ? numberItem.getDefaultValue() + "" : "";
if(DataElementType.NUMBER.equals(type)) {
de.setMinValue((int)numberItem.getMin());
de.setMaxValue((int)numberItem.getMax());
}
break;
case STRING:
StringConsoleItem stringItem = (StringConsoleItem) item;
value = stringItem.getDefaultValue() != null ? stringItem.getDefaultValue() : "";
if(stringItem.getRows()!=null) {
de.setRows(stringItem.getRows());
}
break;
case BINARY: // NOP
value = "Prova Binary";
break;
default:
throw new ProtocolException(getPrefixMessageErrorConsoleItemType(consoleItemValueType)+"non puo' essere visualizzato come un "+type);
}
if(DataElementType.LOCK.equals(type)) {
// imposto il tipo insieme al valore
try {
consoleHelper.getCore().getLockUtilities().lock(de, value);
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
else {
de.setValue(value);
}
}
public static List<DataElement> getFile(List<DataElement> dati ,
ConsoleHelper consoleHelper,
AbstractConsoleItem<?> item, int size, ConsoleOperationType consoleOperationType,
Properties binaryChangeProperties,
Long protocolPropertyId, String protocolPropertyFile,
boolean contentSaved) {
if(consoleHelper!=null) {
// nop
}
DataElement de = new DataElement();
DataElement de2 =null ;
List<DataElement> df = null;
de.setName(item.getId());
/**String nameRechange = ProtocolPropertiesCostanti.PARAMETER_FILENAME_RECHANGE_PREFIX + item.getId();
String nameRechangeParamTmp = consoleHelper.getParameter(nameRechange);
boolean isNameRechange = "true".equals(nameRechangeParamTmp);
org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem bci = null;
String fileName = null;
if(item!=null && item instanceof org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem) {
bci = (org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem) item;
fileName = bci.getFileName();
}
if(!consoleOperationType.equals(ConsoleOperationType.ADD) && fileName==null) {
// aggiungo riferimento per dopo
DataElement deChange = new DataElement();
deChange.setName(nameRechange);
deChange.setValue("true");
deChange.setType(DataElementType.HIDDEN);
dati.add(deChange);
}*/
/**boolean addDE = true;*/
if(consoleOperationType.equals(ConsoleOperationType.ADD) || !contentSaved){
BinaryConsoleItem binaryItem = (BinaryConsoleItem) item;
BinaryParameter bp = new BinaryParameter();
bp.setName(binaryItem.getId());
bp.setFilename(binaryItem.getFileName());
bp.setId(binaryItem.getFileId());
de = bp.getFileDataElement(item.getLabel(), "", size);
de.setRequired(item.isRequired());
/** de.setPostBack(item.isReloadOnChange()); */
df = bp.getFileNameDataElement();
de2 = bp.getFileIdDataElement();
} else {
/**if(fileName==null || isNameRechange) {
addDE = false;
}*/
de.setType(DataElementType.LINK);
String idItem = protocolPropertyId != null ? protocolPropertyId + "" : "";
String idProprietario = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO);
String urlChange= binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE);
String tipoProprietario = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO);
String nomeProprietario = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO);
String parentProprietario = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PARENT_PROPRIETARIO);
if(parentProprietario == null)
parentProprietario = "";
String protocollo = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO);
String tipoAccordo = binaryChangeProperties.getProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO);
if(tipoAccordo == null)
tipoAccordo = "";
de.setUrl(ProtocolPropertiesCostanti.SERVLET_NAME_BINARY_PROPERTY_CHANGE,
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_ID,idItem),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME,item.getId()),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO,idProprietario),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO,tipoProprietario),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO,nomeProprietario),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PARENT_PROPRIETARIO,parentProprietario),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO,protocollo),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO, tipoAccordo),
new Parameter(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE,urlChange));
// CHANGE Label del link
de.setValue(item.getLabel());
if(protocolPropertyFile != null){
de2 = new DataElement();
de2.setName(ProtocolPropertiesCostanti.PARAMETER_FILENAME_PREFIX + item.getId());
de2.setValue(protocolPropertyFile);
de2.setType(DataElementType.HIDDEN);
}
}
/**if(addDE) {*/
dati.add(de);
/**}*/
if(df != null)
dati.addAll(df);
if(de2 != null)
dati.add(de2);
return dati;
}
private static void addDataElementInfo(AbstractConsoleItem<?> item, DataElement de) {
if(item.getInfo()!=null) {
DataElementInfo dInfo = new DataElementInfo(item.getInfo().getHeaderFinestraModale());
dInfo.setHeaderBody(item.getInfo().getHeaderBody());
if(item.getInfo().getListBody()!=null && !item.getInfo().getListBody().isEmpty()) {
dInfo.setListBody(item.getInfo().getListBody());
}
de.setInfo(dInfo);
}
}
private static Boolean getSelectedValue(BooleanConsoleItem booleanItem, Object defaultItemValue) {
Boolean selectedBooleanValue = null;
if(booleanItem.getDefaultValue() != null) {
selectedBooleanValue = booleanItem.getDefaultValue();
}
else if(defaultItemValue instanceof Boolean) {
selectedBooleanValue = (Boolean) defaultItemValue;
}
else {
selectedBooleanValue = false;
}
return selectedBooleanValue;
}
private static String getSelectedValue(NumberConsoleItem numberItem, Object defaultItemValue) {
String selectedNumberValue = null;
if(numberItem.getDefaultValue()!=null) {
selectedNumberValue = numberItem.getDefaultValue() + "";
}
else if(defaultItemValue instanceof Long) {
selectedNumberValue = (defaultItemValue) + "";
}
else if(defaultItemValue instanceof Integer) {
selectedNumberValue = (defaultItemValue) + "";
}
else {
selectedNumberValue = null;
}
return selectedNumberValue;
}
private static String getSelectedValue(StringConsoleItem stringItem, Object defaultItemValue) {
String selectedStringValue = null;
if(stringItem.getDefaultValue()!=null) {
selectedStringValue = stringItem.getDefaultValue();
}
else if(defaultItemValue instanceof String) {
selectedStringValue = ((String) defaultItemValue);
}
else {
selectedStringValue = null;
}
return selectedStringValue;
}
public static List<DataElement> getCheckbox(List<DataElement> dati ,AbstractConsoleItem<?> item, Object defaultItemValue, int size) throws ProtocolException{
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(DataElementType.CHECKBOX);
de.setRequired(item.isRequired());
de.setLabel(item.getLabel());
de.setLabelRight(item.getLabelRight());
if(item.isReloadOnChange()) {
if(item.isReloadOnHttpPost()) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
de.setNote(item.getNote());
de.setSize(size);
addDataElementInfo(item, de);
ConsoleItemValueType consoleItemValueType = ProtocolPropertiesUtils.getConsoleItemValueType(item);
switch(consoleItemValueType){
case BOOLEAN:
BooleanConsoleItem booleanItem = (BooleanConsoleItem) item;
Boolean selectedBooleanValue = getSelectedValue(booleanItem, defaultItemValue);
de.setSelected(selectedBooleanValue);
break;
case NUMBER:
NumberConsoleItem numberItem = (NumberConsoleItem) item;
String selectedNumberValue = getSelectedValue(numberItem, defaultItemValue);
de.setSelected(selectedNumberValue);
break;
case STRING:
StringConsoleItem stringItem = (StringConsoleItem) item;
String selectedStringValue = getSelectedValue(stringItem, defaultItemValue);
de.setSelected(selectedStringValue);
break;
case BINARY: // non supportato
default:
throw new ProtocolException(getPrefixMessageErrorConsoleItemType(consoleItemValueType)+"non puo' essere visualizzato come una CheckBox");
}
if(item.getDefaultValueForCloseableSection() instanceof Boolean) {
boolean b = (Boolean) item.getDefaultValueForCloseableSection();
de.setValoreDefaultCheckbox(b);
}
dati.add(de);
return dati;
}
public static List<DataElement> getHidden(List<DataElement> dati, ConsoleHelper consoleHelper, AbstractConsoleItem<?> item, int size) throws ProtocolException {
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(DataElementType.HIDDEN);
de.setRequired(item.isRequired());
de.setLabel(item.getLabel());
de.setLabelRight(item.getLabelRight());
if(item.isReloadOnChange()) {
if(item.isReloadOnHttpPost()) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
de.setNote(item.getNote());
de.setSize(size);
/**addDataElementInfo(item, de);*/
ConsoleItemValueType consoleItemValueType = ProtocolPropertiesUtils.getConsoleItemValueType(item);
setHiddenValue(consoleItemValueType, consoleHelper, item, de);
dati.add(de);
return dati;
}
private static void setHiddenValue(ConsoleItemValueType consoleItemValueType,ConsoleHelper consoleHelper,AbstractConsoleItem<?> item,DataElement de) throws ProtocolException {
String value = null;
switch(consoleItemValueType){
case BOOLEAN:
BooleanConsoleItem booleanItem = (BooleanConsoleItem) item;
value = booleanItem.getDefaultValue() != null ? booleanItem.getDefaultValue() + "" : "";
break;
case NUMBER:
NumberConsoleItem numberItem = (NumberConsoleItem) item;
value = numberItem.getDefaultValue() != null ? numberItem.getDefaultValue() + "" : "";
break;
case STRING:
StringConsoleItem stringItem = (StringConsoleItem) item;
value = stringItem.getDefaultValue() != null ? stringItem.getDefaultValue() + "" : "";
break;
case BINARY: // NOP
value = "";
break;
default:
throw new ProtocolException(getPrefixMessageErrorConsoleItemType(consoleItemValueType)+"non puo' essere visualizzato come una Hidden");
}
if(item.isLockedType()) {
// imposto il tipo insieme al valore
try {
consoleHelper.getCore().getLockUtilities().lockHidden(de, value);
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
else {
de.setValue(value);
}
}
public static List<DataElement> getHidden(List<DataElement> dati, ConsoleHelper consoleHelper ,BaseConsoleItem item, int size) {
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(DataElementType.HIDDEN);
de.setLabel(item.getLabel());
de.setSize(size);
dati.add(de);
return dati;
}
public static List<DataElement> getSelect(List<DataElement> dati ,AbstractConsoleItem<?> item, Object defaultItemValue, int size) throws ProtocolException {
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(DataElementType.SELECT);
de.setRequired(item.isRequired());
de.setLabel(item.getLabel());
de.setLabelRight(item.getLabelRight());
if(item.isReloadOnChange()) {
if(item.isReloadOnHttpPost()) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
de.setNote(item.getNote());
de.setSize(size);
addDataElementInfo(item, de);
ConsoleItemValueType consoleItemValueType = ProtocolPropertiesUtils.getConsoleItemValueType(item);
List<String> values = new ArrayList<>();
List<String> labels = new ArrayList<>();
switch(consoleItemValueType){
case BOOLEAN:
BooleanConsoleItem booleanItem = (BooleanConsoleItem) item;
Boolean selectedBooleanValue = getSelectedValue(booleanItem, defaultItemValue);
de.setSelected(selectedBooleanValue);
SortedMap<Boolean> booleanMapLabelValues = booleanItem.getMapLabelValues();
for (String key : booleanMapLabelValues.keys()) {
labels.add(key);
values.add(booleanMapLabelValues.get(key)+ "");
}
break;
case NUMBER:
NumberConsoleItem numberItem = (NumberConsoleItem) item;
String selectedNumberValue = getSelectedValue(numberItem, defaultItemValue);
de.setSelected(selectedNumberValue);
SortedMap<Long> numberMapLabelValues = numberItem.getMapLabelValues();
for (String key : numberMapLabelValues.keys()) {
labels.add(key);
values.add(numberMapLabelValues.get(key)+ "");
}
break;
case STRING:
StringConsoleItem stringItem = (StringConsoleItem) item;
String selectedStringValue = getSelectedValue(stringItem, defaultItemValue);
de.setSelected(selectedStringValue);
SortedMap<String> stringMapLabelValues = stringItem.getMapLabelValues();
for (String key : stringMapLabelValues.keys()) {
labels.add(key);
values.add(stringMapLabelValues.get(key)+ "");
}
break;
case BINARY: // non supportato
default:
throw new ProtocolException(getPrefixMessageErrorConsoleItemType(consoleItemValueType)+"non puo' essere visualizzato come una Select List");
}
de.setValues(values);
de.setLabels(labels);
if(item.getDefaultValueForCloseableSection() instanceof String) {
String s = (String) item.getDefaultValueForCloseableSection();
de.setValoreDefaultSelect(s);
}
dati.add(de);
return dati;
}
public static List<DataElement> getMultiSelect(List<DataElement> dati ,AbstractConsoleItem<?> item, Object defaultItemValue, int size) throws ProtocolException {
DataElement de = new DataElement();
de.setName(item.getId());
de.setType(DataElementType.MULTI_SELECT);
de.setRequired(item.isRequired());
de.setLabel(item.getLabel());
de.setLabelRight(item.getLabelRight());
if(item.isReloadOnChange()) {
if(item.isReloadOnHttpPost()) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
de.setNote(item.getNote());
de.setSize(size);
addDataElementInfo(item, de);
ConsoleItemValueType consoleItemValueType = ProtocolPropertiesUtils.getConsoleItemValueType(item);
setValuesLabelsMultiSelect(consoleItemValueType, item, defaultItemValue, de);
if(item.getDefaultValueForCloseableSection() instanceof String) {
String s = (String) item.getDefaultValueForCloseableSection();
de.setValoreDefaultMultiSelect(new String [] {s});
}
dati.add(de);
return dati;
}
private static void setValuesLabelsMultiSelect(ConsoleItemValueType consoleItemValueType, AbstractConsoleItem<?> item, Object defaultItemValue, DataElement de) throws ProtocolException {
List<String> values = new ArrayList<>();
List<String> labels = new ArrayList<>();
switch(consoleItemValueType){
case STRING:
StringConsoleItem stringItem = (StringConsoleItem) item;
String selectedStringValue = getSelectedValue(stringItem, defaultItemValue);
if(selectedStringValue!=null) {
if(selectedStringValue.contains(",")) {
de.setSelezionati(selectedStringValue.split(","));
}
else {
de.setSelezionati(new String[] {selectedStringValue});
}
}
if(stringItem.getRows()!=null) {
de.setRows(stringItem.getRows());
}
SortedMap<String> stringMapLabelValues = stringItem.getMapLabelValues();
for (String key : stringMapLabelValues.keys()) {
labels.add(key);
values.add(stringMapLabelValues.get(key)+ "");
}
break;
case BINARY:
case BOOLEAN:
case NUMBER:
default:
throw new ProtocolException(getPrefixMessageErrorConsoleItemType(consoleItemValueType)+"non puo' essere visualizzato come una Multi-Select List");
}
de.setValues(values);
de.setLabels(labels);
}
public static String getLabelTipoProprietario(ProprietariProtocolProperty tipoProprietario, String tipoAccordo) {
if(tipoProprietario != null){
switch (tipoProprietario) {
case ACCORDO_COOPERAZIONE:
return ProtocolPropertiesCostanti.LABEL_AC;
case ACCORDO_SERVIZIO_PARTE_COMUNE:
return AccordiServizioParteComuneUtilities.getTerminologiaAccordoServizio(tipoAccordo);
case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
return ProtocolPropertiesCostanti.LABEL_APS;
case AZIONE_ACCORDO:
return ProtocolPropertiesCostanti.LABEL_AZIONE_ACCORDO;
case FRUITORE:
return ProtocolPropertiesCostanti.LABEL_FRUITORE;
case OPERATION:
return ProtocolPropertiesCostanti.LABEL_OPERATION;
case PORT_TYPE:
return ProtocolPropertiesCostanti.LABEL_PORT_TYPE;
case RESOURCE:
return ProtocolPropertiesCostanti.LABEL_RESOURCE;
case SOGGETTO:
return ProtocolPropertiesCostanti.LABEL_SOGGETTO;
case SERVIZIO_APPLICATIVO:
return ProtocolPropertiesCostanti.LABEL_SERVIZIO_APPLICATIVO;
}
}
return null;
}
public static String getValueParametroTipoProprietarioAccordoServizio(String tipo){
if(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE.equals(tipo)){
return ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_ACCORDO_SERVIZIO_PARTE_COMUNE;
}
else{
return ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_ACCORDO_SERVIZIO_COMPOSTO;
}
}
}