RemoteStoresHelper.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 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.remote_stores;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.commons.lang.StringUtils;
- import org.openspcoop2.core.commons.Filtri;
- import org.openspcoop2.core.commons.Liste;
- import org.openspcoop2.core.commons.SearchUtils;
- import org.openspcoop2.pdd.core.keystore.RemoteStore;
- import org.openspcoop2.pdd.core.keystore.RemoteStoreKeyEntry;
- import org.openspcoop2.utils.date.DateUtils;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
- import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
- import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviCostanti;
- import org.openspcoop2.web.lib.mvc.DataElement;
- import org.openspcoop2.web.lib.mvc.DataElementType;
- import org.openspcoop2.web.lib.mvc.PageData;
- import org.openspcoop2.web.lib.mvc.Parameter;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- /**
- * RemoteStoresHelper
- *
- * @author Pintori Giuliano (pintori@link.it)
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class RemoteStoresHelper extends ConsoleHelper{
- public RemoteStoresHelper(HttpServletRequest request, PageData pd, HttpSession session) {
- super(request, pd, session);
- }
- public RemoteStoresHelper(ControlStationCore core, HttpServletRequest request, PageData pd, HttpSession session) {
- super(core, request, pd, session);
- }
- public void prepareRemoteStoreKeysList(ConsoleSearch ricerca, List<RemoteStoreKeyEntry> lista, long remoteStoreId) {
- try {
- Parameter pIdRemoteStore = new Parameter(RemoteStoresCostanti.PARAMETRO_REMOTE_STORE_ID, remoteStoreId + "");
-
- ServletUtils.addListElementIntoSession(this.request, this.session, RemoteStoresCostanti.OBJECT_NAME_REMOTE_STORES_KEYS, pIdRemoteStore);
- int idLista = Liste.REMOTE_STORE_KEY;
- int limit = ricerca.getPageSize(idLista);
- int offset = ricerca.getIndexIniziale(idLista);
- String filterRemoteStoreId = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_REMOTE_STORE_ID);
- // primo accesso
- if(StringUtils.isEmpty(filterRemoteStoreId)) {
- filterRemoteStoreId = remoteStoreId + "";
- }
-
- this.addFilterRemoteStoreId(filterRemoteStoreId, true);
- String filterRemoteStoreKid = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_REMOTE_STORE_KEY_KID);
- this.addFilterRemoteStoreKid(filterRemoteStoreKid);
- String filterRemoteStoreClientId = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_REMOTE_STORE_KEY_CLIENT_ID);
- this.addFilterRemoteStoreClientId(filterRemoteStoreClientId);
- String filterRemoteStoreOrganizzazione = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_REMOTE_STORE_KEY_ORGANIZZAZIONE);
- this.addFilterRemoteStoreOrganizzazione(filterRemoteStoreOrganizzazione);
- this.pd.setIndex(offset);
- this.pd.setPageSize(limit);
- this.pd.setNumEntries(ricerca.getNumEntries(idLista));
- this.pd.nascondiTextFilterAutomatico();
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(this.pd,
- new Parameter(RemoteStoresCostanti.LABEL_CACHE_PDND, RemoteStoresCostanti.SERVLET_NAME_REMOTE_STORES_KEYS_LIST));
- // Label colonne
- String[] labels = {
- RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_DATA_REGISTRAZIONE,
- RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CONTENT_KEY,
- RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CLIENT_ID,
- RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_ORGANIZATION_DETAILS
- };
- this.pd.setLabels(labels);
- // preparo i dati
- List<List<DataElement>> dati = new ArrayList<>();
- if (lista != null) {
- Iterator<RemoteStoreKeyEntry> it = lista.iterator();
- while (it.hasNext()) {
- List<DataElement> e = this.creaEntry(it, pIdRemoteStore);
- dati.add(e);
- }
- }
- this.pd.setDati(dati);
- // rimuovo il tasto add
- this.pd.setAddButton(false);
- } catch (Exception e) {
- this.log.error("Exception: " + e.getMessage(), e);
- }
- }
- private List<DataElement> creaEntry(Iterator<RemoteStoreKeyEntry> it, Parameter pIdRemoteStore) {
- RemoteStoreKeyEntry entry = it.next();
- List<DataElement> e = new ArrayList<>();
- // Data creazione
- SimpleDateFormat formatter = DateUtils.getDefaultDateTimeFormatter("yyyy-MM-dd HH:mm:ss.SSS");
- DataElement de = new DataElement();
- Parameter pId = new Parameter(RemoteStoresCostanti.PARAMETRO_REMOTE_STORE_KEY_ID, entry.getId()+"");
- de.setUrl(RemoteStoresCostanti.SERVLET_NAME_REMOTE_STORES_KEYS_CHANGE , pId, pIdRemoteStore);
- de.setValue(formatter.format(entry.getDataRegistrazione()));
- de.setIdToRemove(entry.getId() + "");
- de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
- e.add(de);
-
- // chiave pubblica
- de = new DataElement();
- if(entry.getContentKey() != null && isKidNotStartsWithClientId(entry.getKid())) {
- /** de.setValue(RemoteStoresCostanti.LABEL_DOWNLOAD.toLowerCase());
- de.setToolTip(entry.getKid());*/
- de.setValue(entry.getKid());
- de.setToolTip(RemoteStoresCostanti.LABEL_DOWNLOAD.toLowerCase());
-
- de.setUrl(ArchiviCostanti.SERVLET_NAME_DOCUMENTI_EXPORT,
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_ID_ACCORDO, entry.getId()+""),
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_DOCUMENTO_CHIAVE_PUBBLICA ),
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_REMOTE_STORE_ENTRY));
- de.setDisabilitaAjaxStatus();
-
- }else {
- de.setValue(RemoteStoresCostanti.VALUE_PARAMETRO_NON_PRESENTE);
- }
- e.add(de);
-
- // client id
- de = new DataElement();
- if(entry.getClientId() != null) {
- de.setValue(entry.getClientId());
- de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
- }else {
- de.setValue(RemoteStoresCostanti.VALUE_PARAMETRO_NON_PRESENTE);
- }
- e.add(de);
-
- // dettagli organizzazione
- de = new DataElement();
- if(entry.getOrganizationName() != null) {
- StringBuilder sb = new StringBuilder();
- sb.append(entry.getOrganizationName()).append(" (").append(entry.getOrganizationExternalOrigin()).append(" ").append(entry.getOrganizationExternalId()).append(")");
- de.setValue(sb.toString());
- de.setToolTip(entry.getOrganizationCategory());
- de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
- }else {
- de.setValue(RemoteStoresCostanti.VALUE_PARAMETRO_NON_PRESENTE);
- }
- e.add(de);
-
-
- return e;
- }
-
- private boolean isKidNotStartsWithClientId(String kid) {
- return kid != null && !kid.startsWith(RemoteStoresCostanti.VALUE_PARAMETRO_REMOTE_STORE_KEY_KID_STARTS_WITH_CLIENT_ID);
- }
-
-
-
- private void addFilterRemoteStoreOrganizzazione(String filterRemoteStoreOrganizzazione) throws Exception {
- String label = RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_ORGANIZATION_DETAILS;
- this.pd.addTextFilter(Filtri.FILTRO_REMOTE_STORE_KEY_ORGANIZZAZIONE, label, filterRemoteStoreOrganizzazione, this.getSize());
- }
-
- private void addFilterRemoteStoreClientId(String filterRemoteStoreClientId) throws Exception {
- String label = RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CLIENT_ID;
- this.pd.addTextFilter(Filtri.FILTRO_REMOTE_STORE_KEY_CLIENT_ID, label, filterRemoteStoreClientId, this.getSize());
- }
-
- private void addFilterRemoteStoreKid(String filterRemoteStoreKid) throws Exception {
- String label = RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_KID;
- this.pd.addTextFilter(Filtri.FILTRO_REMOTE_STORE_KEY_KID, label, filterRemoteStoreKid, this.getSize());
- }
- private void addFilterRemoteStoreId(String filterRemoteStoreId, boolean postback) throws Exception {
- // se e' presente solo un remote store allora inserisco un campo hidden altriment una select list
- List<RemoteStore> remoteStoresList = this.remoteStoresCore.remoteStoresList();
-
- if(remoteStoresList.size() > 1) {
- String label = RemoteStoresCostanti.LABEL_REMOTE_STORE;
-
- List<String> labels = new ArrayList<>();
- List<String> values = new ArrayList<>();
-
- for (RemoteStore remoteStore : remoteStoresList) {
- labels.add(remoteStore.getNome());
- values.add(remoteStore.getId() + "");
- }
-
- this.pd.addFilter(Filtri.FILTRO_REMOTE_STORE_ID, label, filterRemoteStoreId, values.toArray(new String[values.size()]), labels.toArray(new String[labels.size()]), postback, this.getSize());
-
- } else {
- this.pd.addHiddenFilter(Filtri.FILTRO_REMOTE_STORE_ID, filterRemoteStoreId, this.getSize());
- }
- }
-
- public List<DataElement> addRemoteStoreKeyToDati(long remoteStoreId, long id, RemoteStoreKeyEntry entry, List<DataElement> dati) {
- // le informazioni verranno visualizzate in modalita' noedit
- this.pd.disableEditMode();
-
- // data registrazione
- SimpleDateFormat formatter = DateUtils.getDefaultDateTimeFormatter("yyyy-MM-dd HH:mm:ss.SSS");
- DataElement de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_DATA_REGISTRAZIONE);
- de.setValue(formatter.format(entry.getDataRegistrazione()));
- de.setType(DataElementType.TEXT_EDIT);
- dati.add(de);
-
- // identificativi
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_ID);
- de.setValue(remoteStoreId +"");
- de.setType(DataElementType.HIDDEN);
- dati.add(de);
-
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_ID);
- de.setValue(id +"");
- de.setType(DataElementType.HIDDEN);
- dati.add(de);
-
- // sottosezione chiave pubblica (visualizza solo se il kid non inizia per ClientId--
- if(this.isKidNotStartsWithClientId(entry.getKid())) {
- if(entry.getDataAggiornamento() != null || entry.getContentKey() != null) {
- de = new DataElement();
- de.setType(DataElementType.SUBTITLE);
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CONTENT_KEY);
- dati.add(de);
- }
-
-
- if(entry.getDataAggiornamento() != null) {
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_DATA_AGGIORAMENTO);
- de.setValue(formatter.format(entry.getDataAggiornamento()));
- de.setType(DataElementType.TEXT_EDIT);
- dati.add(de);
- }
-
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_KID);
- de.setValue(entry.getKid());
- de.setType(DataElementType.TEXT_EDIT);
- dati.add(de);
-
- if(entry.getContentKey() != null) {
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CONTENT_KEY);
- de.setValue(new String(entry.getContentKey()));
- de.setType(DataElementType.TEXT_AREA_NO_EDIT);
- dati.add(de);
-
- de = new DataElement();
- de.setLabel("");
- de.setValue(RemoteStoresCostanti.LABEL_DOWNLOAD.toLowerCase());
- de.setUrl(ArchiviCostanti.SERVLET_NAME_DOCUMENTI_EXPORT,
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_ID_ACCORDO, entry.getId()+""),
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_DOCUMENTO_CHIAVE_PUBBLICA ),
- new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_REMOTE_STORE_ENTRY));
- de.setDisabilitaAjaxStatus();
- de.setType(DataElementType.LINK);
- dati.add(de);
- }
- }
-
- // sottosezione informazioni client (visualizza se presente client id)
- if(entry.getClientId() != null) {
- de = new DataElement();
- de.setType(DataElementType.SUBTITLE);
- de.setLabel(RemoteStoresCostanti.LABEL_INFORMAZIONI_CLIENT);
- dati.add(de);
-
- if(entry.getClientDataAggiornamento() != null) {
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CLIENT_DATA_AGGIORNAMENTO);
- de.setValue(formatter.format(entry.getClientDataAggiornamento()));
- de.setType(DataElementType.TEXT_EDIT);
- dati.add(de);
- }
-
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CLIENT_ID);
- de.setValue(entry.getClientId());
- de.setType(DataElementType.TEXT_EDIT);
- dati.add(de);
-
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_CLIENT_DETAILS);
- de.setValue(entry.getClientDetails());
- de.setType(DataElementType.TEXT_AREA_NO_EDIT);
- dati.add(de);
-
- de = new DataElement();
- de.setLabel(RemoteStoresCostanti.LABEL_PARAMETRO_REMOTE_STORE_KEY_ORGANIZATION_DETAILS);
- de.setValue(entry.getOrganizationDetails());
- de.setType(DataElementType.TEXT_AREA_NO_EDIT);
- dati.add(de);
- }
-
- return dati;
- }
- }