ServletExtendedConnettoreUtils.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.plugins.servlet;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.utils.regexp.RegularExpressionEngine;
import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettoreConverter;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettoreItem;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedException;
import org.openspcoop2.web.ctrlstat.plugins.IExtendedConnettore;
import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
import org.openspcoop2.web.lib.mvc.DataElement;
import org.openspcoop2.web.lib.mvc.DataElementType;
import org.openspcoop2.web.lib.mvc.ServletUtils;
/**
* ServletExtendedConnettoreUtils
*
* @author Poli Andrea (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ServletExtendedConnettoreUtils {
private ServletExtendedConnettoreUtils() {}
public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.config.Connettore connettore,
ConnettoreServletType servletType, ConsoleHelper consoleHelper,
boolean first,String endpointType) throws ExtendedException{
return getExtendedConnettore(connettore, servletType, consoleHelper, null, first, endpointType);
}
public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.config.Connettore connettore,
ConnettoreServletType servletType, ConsoleHelper consoleHelper, Properties parametersPOST,
boolean first,String endpointType) throws ExtendedException{
boolean connettoreDisabilitato = true;
String tipoConnettore = TipiConnettore.DISABILITATO.getNome();
if(ConnettoreServletType.SERVIZIO_APPLICATIVO_ADD.equals(servletType)){
// default diverso
connettoreDisabilitato = false;
tipoConnettore = TipiConnettore.HTTP.getNome();
}
if(first){
if(connettore!=null){
connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(connettore.getTipo());
tipoConnettore = connettore.getTipo();
}
}
else{
connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(endpointType);
tipoConnettore = endpointType;
}
List<ExtendedConnettore> l = getExtendedConnettore(servletType, consoleHelper, connettoreDisabilitato, tipoConnettore);
if(!l.isEmpty()){
if(first)
ExtendedConnettoreConverter.readExtendedInfoFromConnettore(l, connettore);
else
updateInfo(consoleHelper, parametersPOST, l);
}
return l;
}
public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.registry.Connettore connettore,
ConnettoreServletType servletType, ConsoleHelper consoleHelper,
boolean first,String endpointType) throws Exception{
return getExtendedConnettore(connettore, servletType, consoleHelper, null, first, endpointType);
}
public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.registry.Connettore connettore,
ConnettoreServletType servletType, ConsoleHelper consoleHelper, Properties parametersPOST,
boolean first,String endpointType) throws Exception{
boolean connettoreDisabilitato = true;
String tipoConnettore = TipiConnettore.DISABILITATO.getNome();
if(first){
if(connettore!=null){
connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(connettore.getTipo());
tipoConnettore = connettore.getTipo();
}
}
else{
connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(endpointType);
tipoConnettore = endpointType;
}
List<ExtendedConnettore> l = getExtendedConnettore(servletType, consoleHelper, connettoreDisabilitato, tipoConnettore);
if(!l.isEmpty()){
if(first)
ExtendedConnettoreConverter.readExtendedInfoFromConnettore(l, connettore);
else
updateInfo(consoleHelper, parametersPOST, l);
}
return l;
}
private static List<ExtendedConnettore> getExtendedConnettore(ConnettoreServletType servletType, ConsoleHelper consoleHelper,
boolean connettoreDisabilitato, String tipoConnettore) throws ExtendedException{
List<ExtendedConnettore> list = new ArrayList<>();
if(consoleHelper.getCore().getExtendedConnettore()!=null && !consoleHelper.getCore().getExtendedConnettore().isEmpty()){
boolean interfacciaAvanzata =consoleHelper.isModalitaAvanzata();
for (IExtendedConnettore ext : consoleHelper.getCore().getExtendedConnettore()) {
List<ExtendedConnettore> l = ext.getExtendedConnettore(servletType,interfacciaAvanzata,connettoreDisabilitato,tipoConnettore);
if(l!=null && !l.isEmpty()){
list.addAll(l);
}
}
}
return list;
}
public static void addToDatiEnabled(List<DataElement> dati,List<ExtendedConnettore> list){
if(list!=null){
for (ExtendedConnettore extendedConnettore : list) {
DataElement de = new DataElement();
de.setName(extendedConnettore.getId());
de.setValue(extendedConnettore.isEnabled()+"");
de.setSelected(extendedConnettore.isEnabled());
de.setLabel(extendedConnettore.getLabel());
de.setType(DataElementType.CHECKBOX);
de.setPostBack(true);
dati.add(de);
de = new DataElement();
de.setName(extendedConnettore.getIdForOldValue());
de.setValue(extendedConnettore.isEnabled()+"");
de.setType(DataElementType.HIDDEN);
dati.add(de);
}
}
}
public static void addToDatiExtendedInfo(List<DataElement> dati,List<ExtendedConnettore> list){
if(list!=null){
for (ExtendedConnettore extendedConnettore : list) {
if(extendedConnettore.isEnabled()){
DataElement de = new DataElement();
de.setName("ExtendedSection-"+extendedConnettore.getId());
de.setLabel(extendedConnettore.getSection());
de.setValue(extendedConnettore.getSection()+"");
de.setType(DataElementType.TITLE);
dati.add(de);
if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
String id = ExtendedConnettoreConverter.buildId(extendedConnettore.getId(), extendedConnettoreItem.getId());
de = new DataElement();
de.setName(id);
de.setLabel(extendedConnettoreItem.getLabel());
de.setNote(extendedConnettoreItem.getNote());
de.setValue(extendedConnettoreItem.getValue());
de.setRequired(extendedConnettoreItem.isRequired());
de.setType(DataElementType.TEXT_EDIT);
dati.add(de);
}
}
}
}
}
}
public static void updateInfo(ConsoleHelper consoleHelper,Properties parametersPOST, List<ExtendedConnettore> list) throws ExtendedException{
try {
if(list!=null){
for (ExtendedConnettore extendedConnettore : list) {
String tmp = consoleHelper.getParameter(extendedConnettore.getId());
if(parametersPOST!=null && parametersPOST.size()>0){
tmp = getValueFromPropertiesPOST(parametersPOST, extendedConnettore.getId());
}
extendedConnettore.setEnabled(ServletUtils.isCheckBoxEnabled(tmp));
String tmpOldValue = consoleHelper.getParameter(extendedConnettore.getIdForOldValue());
if(parametersPOST!=null && parametersPOST.size()>0){
tmpOldValue = getValueFromPropertiesPOST(parametersPOST, extendedConnettore.getIdForOldValue());
}
boolean oldValue = ServletUtils.isCheckBoxEnabled(tmpOldValue);
boolean changeRidefinizione = oldValue != extendedConnettore.isEnabled();
if(extendedConnettore.isEnabled() && !changeRidefinizione){ // altrimenti devo mantenere i valori di default
if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
String id = ExtendedConnettoreConverter.buildId(extendedConnettore.getId(), extendedConnettoreItem.getId());
tmp = consoleHelper.getParameter(id);
if(parametersPOST!=null && parametersPOST.size()>0){
tmp = getValueFromPropertiesPOST(parametersPOST, id);
}
extendedConnettoreItem.setValue(tmp);
}
}
}
}
}
}catch(Exception e) {
throw new ExtendedException(e.getMessage(),e);
}
}
private static String getValueFromPropertiesPOST(Properties parametersPOST, String idParameter){
if(parametersPOST!=null && parametersPOST.size()>0){
Enumeration<?> enKeys = parametersPOST.keys();
while (enKeys.hasMoreElements()) {
Object object = enKeys.nextElement();
if(object instanceof String){
String s = (String) object;
if (s.indexOf("\""+idParameter+"\"") != -1) {
return parametersPOST.getProperty(s);
}
}
}
}
return null;
}
public static void checkInfo(List<ExtendedConnettore> list) throws ExtendedException{
if(list!=null){
for (ExtendedConnettore extendedConnettore : list) {
if(extendedConnettore.isEnabled()){
if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
if(extendedConnettoreItem.getValue()==null || "".equals(extendedConnettoreItem.getValue())){
if(extendedConnettoreItem.isRequired()){
throw new ExtendedException("Deve essere indicato un valore in '"+extendedConnettoreItem.getLabel()+"'");
}
}
else{
if(extendedConnettoreItem.getRegularExpression()!=null){
try{
if(!RegularExpressionEngine.isMatch(extendedConnettoreItem.getValue(),extendedConnettoreItem.getRegularExpression())){
throw new ExtendedException("Il valore indicato in '"+extendedConnettoreItem.getLabel()+"' non รจ valido");
}
}catch(Exception e){
throw new ExtendedException(e.getMessage(),e);
}
}
}
}
}
}
}
}
}
}