diff --git a/SBNWeb/.classpath b/SBNWeb/.classpath
index e321ba5..75ab00b 100644
--- a/SBNWeb/.classpath
+++ b/SBNWeb/.classpath
@@ -50,5 +50,6 @@
+
diff --git a/SBNWeb/JavaSource/it/iccu/sbn/web/actions/elaborazioniDifferite/esporta/EsportaAction.java b/SBNWeb/JavaSource/it/iccu/sbn/web/actions/elaborazioniDifferite/esporta/EsportaAction.java
index fb2b346..cb64ab0 100644
--- a/SBNWeb/JavaSource/it/iccu/sbn/web/actions/elaborazioniDifferite/esporta/EsportaAction.java
+++ b/SBNWeb/JavaSource/it/iccu/sbn/web/actions/elaborazioniDifferite/esporta/EsportaAction.java
@@ -21,6 +21,7 @@
import it.iccu.sbn.ejb.exception.ValidationException;
import it.iccu.sbn.ejb.utils.ValidazioneDati;
import it.iccu.sbn.ejb.utils.stampe.StampeUtil;
+import it.iccu.sbn.ejb.vo.UniqueIdentifiableVO;
import it.iccu.sbn.ejb.vo.amministrazionesistema.BibliotecaVO;
import it.iccu.sbn.ejb.vo.amministrazionesistema.sif.SIFListaBibliotecheAffiliatePerAttivitaVO;
import it.iccu.sbn.ejb.vo.amministrazionesistema.sif.SIFListaBibliotechePoloVO;
@@ -34,13 +35,17 @@
import it.iccu.sbn.ejb.vo.gestionebibliografica.titolo.ComboCodDescVO;
import it.iccu.sbn.ejb.vo.gestionestampe.common.TipoStampa;
import it.iccu.sbn.ejb.vo.stampe.StampaDiffVO;
+import it.iccu.sbn.persistence.dao.common.DaoManager;
import it.iccu.sbn.servizi.codici.CodiciProvider;
+import it.iccu.sbn.util.config.CommonConfiguration;
+import it.iccu.sbn.util.config.Configuration;
import it.iccu.sbn.util.rfid.InventarioRFIDParser;
import it.iccu.sbn.vo.domain.CodiciAttivita;
import it.iccu.sbn.web.actionforms.common.documentofisico.RicercaInventariCollocazioniForm;
import it.iccu.sbn.web.actionforms.elaborazioniDifferite.esporta.EsportaForm;
import it.iccu.sbn.web.actionforms.elaborazioniDifferite.esporta.EsportaForm.TipoProspettazioneExport;
import it.iccu.sbn.web.actions.common.ConfermaDati;
+import it.iccu.sbn.web.actions.common.SbnDownloadAction;
import it.iccu.sbn.web.actions.common.documentofisico.RicercaInventariCollocazioniAction;
import it.iccu.sbn.web.actions.gestionebibliografica.isbd.akros.EccezioneSbnDiagnostico;
import it.iccu.sbn.web.actions.gestionesemantica.utility.CaricamentoComboSemantica;
@@ -60,6 +65,7 @@
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
@@ -72,19 +78,27 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
-import org.apache.struts.action.ActionMessages;
import org.apache.struts.upload.FormFile;
+import com.google.gson.ExclusionStrategy;
+import com.google.gson.FieldAttributes;
+import com.google.gson.GsonBuilder;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+
import static it.iccu.sbn.ejb.utils.ValidazioneDati.isFilled;
public class EsportaAction extends RicercaInventariCollocazioniAction implements SbnAttivitaChecker {
private static final String LISTA_BIBLIOTECHE = "sif.bib.export.unimarc";
+ private static final EsportaVO ESPORTA_ERROR = new EsportaVO();
private static Logger log = Logger.getLogger(EsportaAction.class);
@@ -102,6 +116,8 @@ protected Map getKeyMethodMap() {
map.put("gestionestampe.lsBib", "cartiglioListaBib");
+ map.put("button.scarica.template.conf", "downloadConfigTemplate");
+
return map;
}
@@ -268,14 +284,14 @@ protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
this.saveToken(request);
} catch (ValidationException ve) {
- ActionMessages errors = new ActionMessages();
- errors.add("generico", new ActionMessage("error.documentofisico."+ ve.getMessage()));
- this.saveErrors(request, errors);
+
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico."+ ve.getMessage()));
+
return mapping.getInputForward();
} catch (Exception e) { // altri tipi di errore
- ActionMessages errors = new ActionMessages();
- errors.add("generico", new ActionMessage("error.documentofisico."+ e.getMessage())); if (!ValidazioneDati.isFilled(e.getMessage())) log.error("", e);
- this.saveErrors(request, errors);
+
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico."+ e.getMessage())); if (!ValidazioneDati.isFilled(e.getMessage())) log.error("", e);
+
return mapping.getInputForward();
}
return mapping.getInputForward();
@@ -310,9 +326,9 @@ public ActionForward selezPosseduto(ActionMapping mapping, ActionForm form,
if (ValidazioneDati.equals(currentForm.getCodAttivita(), CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040)
&& ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1) {
- ActionMessages errors = new ActionMessages();
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.esporta.selezionare.bib"));
- this.saveErrors(request, errors);
+
+ LinkableTagUtils.addError(request, new ActionMessage("errors.esporta.selezionare.bib"));
+
}
currentForm.getEsporta().setTipoEstrazione(TipoEstrazioneUnimarc.COLLOCAZIONI);
super.unspecified(mapping, currentForm, request, response);
@@ -374,7 +390,6 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
EsportaForm currentForm = (EsportaForm) form;
String idBatch = null;
- ActionMessages errors = new ActionMessages();
try {
resetToken(request);
@@ -384,44 +399,12 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
// Setting biblioteca corrente (6 caratteri)
// codice polo + codice biblioteca
+ EsportaVO esportaVO = this.preparaParametriExport(mapping, form, request, response);
+ if (esportaVO == ESPORTA_ERROR)
+ return mapping.getInputForward();
+
Navigation navi = Navigation.getInstance(request);
UserVO utente = navi.getUtente();
- EsportaVO esportaVO = currentForm.getEsporta().copy();
- esportaVO.setCodPolo(utente.getCodPolo());
- esportaVO.setCodBib(utente.getCodBib());
- esportaVO.setUser(utente.getUserId());
-
- esportaVO.setCodAttivita(CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040);
-
- if (currentForm.isUnimarc() ) {
- esportaVO.validate();
- //almaviva5_20130226 imposta etichette da esportate
- ExportUnimarcBatch.impostaEtichetteDaEsportare(esportaVO);
- }
-
- // se ho selezionato tutti i materiali é più efficente
- // eliminare il filtro
- String[] materiali = esportaVO.getMateriali();
- if (ValidazioneDati.size(materiali) == EsportaVO.MATERIALI.length)
- esportaVO.setMateriali(null);
- else
- // le collane hanno il tipo materiale a spazio, devo includerlo nel
- // filtro
- if (ValidazioneDati.isFilled(materiali)) {
- if (Arrays.asList(esportaVO.getNature()).contains("C")) {
- List tmp = new ArrayList(Arrays.asList(materiali));
- tmp.add(" "); // aggiungo mat. fittizio
- esportaVO.setMateriali(tmp.toArray(materiali));
- }
- }
-
- String basePath = this.servlet.getServletContext().getRealPath(File.separator);
- esportaVO.setBasePath(basePath);
- String downloadPath = StampeUtil.getBatchFilesPath();
- esportaVO.setDownloadPath(downloadPath);
- esportaVO.setDownloadLinkPath("/"); // eliminato
-
- esportaVO.setTicket(utente.getTicket());
// Inizio Modifica almaviva2 febbraio 2010 per utilizzare oggetto anche per stampa cataloghi e classi.
if (currentForm.getCodAttivita().equals(CodiciAttivita.getIstance().GDF_STAMPA_CATALOGHI)) {
@@ -429,10 +412,10 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
// Intervento del 25.02.2013 su Richiesta ICCU in fase di Elaborazione Manuale Utente;
// Modifiche/controlli per attivazione stampa catalogo per Soggetti e Classi
if (esportaVO.getTipoCatalogo().equals("SOG") && esportaVO.getCodSoggettario().equals("")) {
- errors = new ActionMessages();
- errors.add("Attenzione", new ActionMessage("errors.gestioneBibliografica.testoProtocollo" ,
+
+ LinkableTagUtils.addError(request, new ActionMessage("errors.gestioneBibliografica.testoProtocollo" ,
"La stampa catalogo per Soggetto può essere richiesta per un solo Soggettario - impostarlo con l'apposita selezione"));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
}
if (esportaVO.getCodSoggettario().length() > 0 && !esportaVO.getTipoCatalogo().equals("SOG")) {
@@ -440,10 +423,10 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
}
if (esportaVO.getTipoCatalogo().equals("CLA") && esportaVO.getCodSistemaClassificazione().equals("")) {
- errors = new ActionMessages();
- errors.add("Attenzione", new ActionMessage("errors.gestioneBibliografica.testoProtocollo" ,
+
+ LinkableTagUtils.addError(request, new ActionMessage("errors.gestioneBibliografica.testoProtocollo" ,
"La stampa catalogo per Classe può essere richiesta per un solo sistema di Classificazione - impostarlo con l'apposita selezione"));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
}
if (esportaVO.getCodSistemaClassificazione().length() > 0 && !esportaVO.getTipoCatalogo().equals("CLA")) {
@@ -498,8 +481,8 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
try {
nome = FormattazioneModificata.formatta(stringaLike);
} catch (EccezioneSbnDiagnostico e) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(e.getMessage()));
- this.saveErrors(request, errors);
+ LinkableTagUtils.addError(request, new ActionMessage(e.getMessage()));
+
return mapping.getInputForward();
}
// Manutenzione BUG Mantis (Collaudo) 5167 - 05-11-2012
@@ -507,8 +490,8 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
// perchè tale limite è valido solo nel caso che la ricerca venga effettuata con il Protocollo
// mentre qui si usano le select su tabelle DB
// if (nome.length() < 3) {
-// errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.prenotazione.failed"));
-// this.saveErrors(request, errors);
+// LinkableTagUtils.addError(request, new ActionMessage("errors.prenotazione.failed"));
+//
// return mapping.getInputForward();
// }
if (nome.length() > 50) {
@@ -522,8 +505,8 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
try {
nome = FormattazioneModificata.formatta(stringaLike);
} catch (EccezioneSbnDiagnostico e) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(e.getMessage()));
- this.saveErrors(request, errors);
+ LinkableTagUtils.addError(request, new ActionMessage(e.getMessage()));
+
return mapping.getInputForward();
}
if (nome.length() > 50) {
@@ -539,8 +522,8 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
//esporta per collocazioni
if (esportaVO.getTipoEstrazione() == TipoEstrazioneUnimarc.COLLOCAZIONI) {
if (currentForm.getCodPoloSez() == null && currentForm.getCodBibSez() == null){
- errors.add("generico", new ActionMessage("error.documentofisico.premereTastoSezione"));
- this.saveErrors(request, errors);
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico.premereTastoSezione"));
+
request.setAttribute("currentForm", currentForm);
super.unspecified(mapping, currentForm, request, response);
this.saveMessages(request, ConfermaDati.bottoneGenerico(this, mapping, request));
@@ -577,21 +560,21 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
areaParametriStampaSchedeVo.setEndInventario(currentForm.getEndInventario());
areaParametriStampaSchedeVo.setStartInventario(currentForm.getStartInventario());
} else {
- errors = new ActionMessages();
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+
+ LinkableTagUtils.addError(request, new ActionMessage(
"errors.gestioneBibliografica.testoProtocollo",
"Selezionare il tipo di filtri da utilizzare (Collocazione o Serie inventariale)"));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
}
} else if (currentForm.getTipoProspettazione().toString().equals("CLASSIFICAZIONI")) {
- errors = new ActionMessages();
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+
+ LinkableTagUtils.addError(request, new ActionMessage(
"errors.gestioneBibliografica.testoProtocollo",
"La funzione richiesta attualmente non è disponibile; utilizzare i filtri per DATI CATALOGRAFICI"));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
}
@@ -649,16 +632,15 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
}
// user
- UserVO user = utente;
- areaParametriStampaSchedeVo.setUser(user.getUserId());
+ areaParametriStampaSchedeVo.setUser(utente.getUserId());
// percorso dei file template: webroot/jrxml/\tab\tab\tab\par
- basePath = this.servlet.getServletContext().getRealPath(File.separator);
+ String basePath = this.servlet.getServletContext().getRealPath(File.separator);
String pathJrxml = basePath + File.separator + "jrxml" + File.separator + "default_catalografico.jrxml";
// ho finito di preparare il VO, ora lo metto nell'arraylist che
// passerò alla coda.
- List parametri = new ArrayList();
+ List parametri = new ArrayList();
parametri.add(areaParametriStampaSchedeVo);
request.setAttribute("DatiVo", parametri);
@@ -668,10 +650,10 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
// differita
StampaDiffVO stam = new StampaDiffVO();
- UserVO ute = utente;
- stam.setCodPolo(ute.getCodPolo());
- stam.setCodBib(ute.getCodBib());
- stam.setUser(ute.getUserId());
+
+ stam.setCodPolo(utente.getCodPolo());
+ stam.setCodBib(utente.getCodBib());
+ stam.setUser(utente.getUserId());
stam.setCodAttivita(CodiciAttivita.getIstance().GDF_STAMPA_CATALOGHI);
stam.setTipoStampa(currentForm.getTipoFormato());
@@ -686,61 +668,9 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
String dataCorr = util.getCurrentDate();
stam.setData(dataCorr);
- idBatch = factory.getElaborazioniDifferite().prenotaElaborazioneDifferita(ute.getTicket(), stam, null);
+ idBatch = factory.getElaborazioniDifferite().prenotaElaborazioneDifferita(utente.getTicket(), stam, null);
} else {
//esporta
- TipoEstrazioneUnimarc type = getTipoEstrazione(mapping, form, request, response);
- if (type == null)
- return mapping.getInputForward();
- esportaVO.setTipoEstrazione(type);
- if (!ValidazioneDati.in(type,
- TipoEstrazioneUnimarc.ARCHIVIO,
- TipoEstrazioneUnimarc.FILE)) {
- if (ValidazioneDati.equals(currentForm.getCodAttivita(), CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040)
- && ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1) {
- errors = new ActionMessages();
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.esporta.selezionare.bib"));
- this.saveErrors(request, errors);
- request.setAttribute("currentForm", currentForm);
- return mapping.getInputForward();
- }
- //esporta per collocazioni
- if (type == TipoEstrazioneUnimarc.COLLOCAZIONI) {
- if (currentForm.getCodPoloSez() == null && currentForm.getCodBibSez() == null){
- errors.add("generico", new ActionMessage("error.documentofisico.premereTastoSezione"));
- this.saveErrors(request, errors);
- request.setAttribute("currentForm", currentForm);
- return mapping.getInputForward();
- }
- currentForm.setFolder("Collocazione");
-
- super.validaInputCollocazioni(mapping, request, currentForm);
- currentForm.setTipoOperazione("S");
- esportaVO.setCodPoloSez(utente.getCodPolo());
- esportaVO.setCodBibSez(utente.getCodBib());
- esportaVO.setPossCodSez(currentForm.getSezione());
- esportaVO.setPossDallaCollocazione(currentForm.getDallaCollocazione());
- esportaVO.setPossAllaCollocazione(currentForm.getAllaCollocazione());
- esportaVO.setPossSpecificazioneCollDa(currentForm.getDallaSpecificazione());
- esportaVO.setPossSpecificazioneCollA(currentForm.getAllaSpecificazione());
- esportaVO.setTipoCollocazione(currentForm.getTipoColloc());
- if (ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1){
- throw new ValidationException(SbnErrorTypes.UNI_TROPPE_BIBLIOTECHE_PER_RANGE);
- }
- currentForm.setFolder(null);
- }else{
- super.validaInputRangeInventari(mapping, request, currentForm);
- currentForm.setTipoOperazione("R");
- esportaVO.setPossSerie(currentForm.getSerie());
- esportaVO.setPossDalNumero(currentForm.getStartInventario());
- esportaVO.setPossAlNumero(currentForm.getEndInventario());
- currentForm.setFolder(null);
- if (ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1){
- throw new ValidationException(SbnErrorTypes.UNI_TROPPE_BIBLIOTECHE_PER_RANGE);
- }
- }
-
- }
idBatch = factory.getElaborazioniDifferite().prenotaElaborazioneDifferita(utente.getTicket(), esportaVO, null);
}
@@ -752,9 +682,9 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
}
if (currentForm.getTipoProspettazione() == TipoProspettazioneExport.POSSEDUTO){
- errors = new ActionMessages();
- errors.add("generico", new ActionMessage("error.documentofisico."+ e.getMessage())); if (!ValidazioneDati.isFilled(e.getMessage())) log.error("", e);
- this.saveErrors(request, errors);
+
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico."+ e.getMessage())); if (!ValidazioneDati.isFilled(e.getMessage())) log.error("", e);
+
request.setAttribute("currentForm", currentForm);
return mapping.getInputForward();
}
@@ -765,20 +695,119 @@ public ActionForward esporta(ActionMapping mapping, ActionForm form,
}
if (idBatch != null) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+ LinkableTagUtils.addError(request, new ActionMessage(
"errors.prenotazione.ok", idBatch));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
} else {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
+ LinkableTagUtils.addError(request, new ActionMessage(
"errors.prenotazione.failed"));
- this.saveErrors(request, errors);
+
return mapping.getInputForward();
}
}
+ private EsportaVO preparaParametriExport(ActionMapping mapping, ActionForm form,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ Navigation navi = Navigation.getInstance(request);
+ UserVO utente = navi.getUtente();
+ EsportaForm currentForm = (EsportaForm) form;
+ EsportaVO esportaVO = currentForm.getEsporta().copy();
+ esportaVO.setCodPolo(utente.getCodPolo());
+ esportaVO.setCodBib(utente.getCodBib());
+ esportaVO.setUser(utente.getUserId());
+
+ esportaVO.setCodAttivita(CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040);
+
+ if (currentForm.isUnimarc() ) {
+ esportaVO.validate();
+ //almaviva5_20130226 imposta etichette da esportate
+ ExportUnimarcBatch.impostaEtichetteDaEsportare(esportaVO);
+ }
+
+ // se ho selezionato tutti i materiali é più efficente
+ // eliminare il filtro
+ String[] materiali = esportaVO.getMateriali();
+ if (ValidazioneDati.size(materiali) == EsportaVO.MATERIALI.length)
+ esportaVO.setMateriali(null);
+ else
+ // le collane hanno il tipo materiale a spazio, devo includerlo nel
+ // filtro
+ if (ValidazioneDati.isFilled(materiali)) {
+ if (Arrays.asList(esportaVO.getNature()).contains("C")) {
+ List tmp = new ArrayList(Arrays.asList(materiali));
+ tmp.add(" "); // aggiungo mat. fittizio
+ esportaVO.setMateriali(tmp.toArray(materiali));
+ }
+ }
+
+ String basePath = this.servlet.getServletContext().getRealPath(File.separator);
+ esportaVO.setBasePath(basePath);
+ String downloadPath = StampeUtil.getBatchFilesPath();
+ esportaVO.setDownloadPath(downloadPath);
+ esportaVO.setDownloadLinkPath("/"); // eliminato
+
+ esportaVO.setTicket(utente.getTicket());
+
+ if (currentForm.isUnimarc() ) {
+ TipoEstrazioneUnimarc type = getTipoEstrazione(mapping, form, request, response);
+ if (type == null)
+ return ESPORTA_ERROR;
+ esportaVO.setTipoEstrazione(type);
+ if (!ValidazioneDati.in(type,
+ TipoEstrazioneUnimarc.ARCHIVIO,
+ TipoEstrazioneUnimarc.FILE)) {
+ if (ValidazioneDati.equals(currentForm.getCodAttivita(), CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040)
+ && ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1) {
+
+ LinkableTagUtils.addError(request, new ActionMessage("errors.esporta.selezionare.bib"));
+
+ request.setAttribute("currentForm", currentForm);
+ return ESPORTA_ERROR;
+ }
+ //esporta per collocazioni
+ if (type == TipoEstrazioneUnimarc.COLLOCAZIONI) {
+ if (currentForm.getCodPoloSez() == null && currentForm.getCodBibSez() == null){
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico.premereTastoSezione"));
+
+ request.setAttribute("currentForm", currentForm);
+ return ESPORTA_ERROR;
+ }
+ currentForm.setFolder("Collocazione");
+
+ super.validaInputCollocazioni(mapping, request, currentForm);
+ currentForm.setTipoOperazione("S");
+ esportaVO.setCodPoloSez(utente.getCodPolo());
+ esportaVO.setCodBibSez(utente.getCodBib());
+ esportaVO.setPossCodSez(currentForm.getSezione());
+ esportaVO.setPossDallaCollocazione(currentForm.getDallaCollocazione());
+ esportaVO.setPossAllaCollocazione(currentForm.getAllaCollocazione());
+ esportaVO.setPossSpecificazioneCollDa(currentForm.getDallaSpecificazione());
+ esportaVO.setPossSpecificazioneCollA(currentForm.getAllaSpecificazione());
+ esportaVO.setTipoCollocazione(currentForm.getTipoColloc());
+ if (ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1){
+ throw new ValidationException(SbnErrorTypes.UNI_TROPPE_BIBLIOTECHE_PER_RANGE);
+ }
+ currentForm.setFolder(null);
+ }else{
+ super.validaInputRangeInventari(mapping, request, currentForm);
+ currentForm.setTipoOperazione("R");
+ esportaVO.setPossSerie(currentForm.getSerie());
+ esportaVO.setPossDalNumero(currentForm.getStartInventario());
+ esportaVO.setPossAlNumero(currentForm.getEndInventario());
+ currentForm.setFolder(null);
+ if (ValidazioneDati.size(currentForm.getEsporta().getListaBib()) != 1){
+ throw new ValidationException(SbnErrorTypes.UNI_TROPPE_BIBLIOTECHE_PER_RANGE);
+ }
+ }
+ }
+ }
+
+ return esportaVO;
+ }
+
private TipoEstrazioneUnimarc getTipoEstrazione(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
@@ -929,6 +958,9 @@ public ActionForward caricaFile(ActionMapping mapping, ActionForm form,
return caricaFileBid(mapping, form, request);
case INV:
return caricaFileInventari(mapping, form, request);
+ default:
+ LinkableTagUtils.addError(request, new ActionMessage("error.documentofisico.contenutoFileNonValido"));
+ break;
}
return mapping.getInputForward();
@@ -1060,9 +1092,9 @@ public ActionForward listaSupportoBib(ActionMapping mapping,
return biblio.getSIFListaBibliotechePolo(richiesta);
} catch (Exception e) { // altri tipi di errore
- ActionMessages errors = new ActionMessages();
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.errore." + e.getMessage()));
- this.saveErrors(request, errors);
+
+ LinkableTagUtils.addError(request, new ActionMessage("errors.errore." + e.getMessage()));
+
return mapping.getInputForward();
}
}
@@ -1157,10 +1189,10 @@ public ActionForward listaSupportoBib(ActionMapping mapping,
// return mapping.getInputForward();
// }
- private List getListaSerie(String codPolo, String codBib, String ticket)
+ private List getListaSerie(String codPolo, String codBib, String ticket)
throws Exception {
FactoryEJBDelegate factory = FactoryEJBDelegate.getInstance();
- List serie = factory.getGestioneDocumentoFisico().getListaSerie(codPolo, codBib, ticket);
+ List serie = factory.getGestioneDocumentoFisico().getListaSerie(codPolo, codBib, ticket);
if (!ValidazioneDati.isFilled(serie))
return null;
@@ -1169,14 +1201,16 @@ private List getListaSerie(String codPolo, String codBib, String ticket)
public boolean checkAttivita(HttpServletRequest request, ActionForm form,
String idCheck) {
-
EsportaForm currentForm = (EsportaForm) form;
if (currentForm.isUnimarc()) {
// filtri su possesso solo se seleziono una singola bib.
if (ValidazioneDati.equals(idCheck, "COUNT_BIBLIOTECHE"))
return (ValidazioneDati.size(currentForm.getEsporta().getListaBib()) == 1);
+ if (ValidazioneDati.equals(idCheck, "TEMPLATE"))
+ try {
+ return Boolean.parseBoolean(CommonConfiguration.getProperty(Configuration.EXPORT_UNIMARC_SAVE_TEMPLATE, "false"));
+ } catch (Exception e) { return false; }
}
-
return true;
}
@@ -1246,15 +1280,11 @@ private void caricaSoggettariClassificazioni(ActionForm form, String ticket) thr
currentForm.getEsporta().setCodSistemaClassificazione("");
}
-
-
-
public ActionForward cartiglioListaBib(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
EsportaForm currentForm = (EsportaForm) form;
try {
-
FactoryEJBDelegate factory = FactoryEJBDelegate.getInstance();
BibliotecaDelegate biblio = new BibliotecaDelegate(factory, request);
SIFListaBibliotecheAffiliatePerAttivitaVO richiesta = new SIFListaBibliotecheAffiliatePerAttivitaVO(
@@ -1270,6 +1300,53 @@ public ActionForward cartiglioListaBib(ActionMapping mapping, ActionForm form,
}
}
+ public ActionForward downloadConfigTemplate(ActionMapping mapping, ActionForm form,
+ HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+
+ try {
+ EsportaVO esportaVO = this.preparaParametriExport(mapping, form, request, response);
+ if (esportaVO == ESPORTA_ERROR)
+ return mapping.getInputForward();
+
+ String json = this.toJson(esportaVO);
+ String fileName = "esporta-conf-" + (new SimpleDateFormat("yyyyMMdd-HHmmss")).format(DaoManager.now()) + ".json";
+ return SbnDownloadAction.downloadFile(request, fileName, json.getBytes("UTF-8"));
+ } catch (Exception e) {
+ return mapping.getInputForward();
+ }
+ }
+
+ private String toJson(EsportaVO esportaVO) {
+ final GsonBuilder gsonBuilder = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() {
+ public boolean shouldSkipField(FieldAttributes f) {
+ Class> clazz = f.getDeclaringClass();
+ return clazz == UniqueIdentifiableVO.class
+ && ValidazioneDati.in(f.getName(), "uniqueId", "creationTime");
+ }
+
+ public boolean shouldSkipClass(Class> c) {
+ return false;
+ }
+ }).registerTypeAdapter(BibliotecaVO.class, new TypeAdapter() {
+ @Override
+ public BibliotecaVO read(JsonReader reader) throws IOException {
+ throw new NotImplementedException("non implementato");
+ }
+
+ @Override
+ public void write(JsonWriter writer, BibliotecaVO bib) throws IOException {
+ writer.beginObject();
+ writer.name("cod_polo");
+ writer.value(bib.getCod_polo());
+ writer.name("cod_bib");
+ writer.value(bib.getCod_bib());
+ writer.endObject();
+ }
+ });
+
+ return gsonBuilder.create().toJson(esportaVO);
+ }
}
diff --git a/SBNWeb/WebContent/WEB-INF/jsp/pages/elaborazioniDifferite/esporta/esporta.jsp b/SBNWeb/WebContent/WEB-INF/jsp/pages/elaborazioniDifferite/esporta/esporta.jsp
index 8d9f563..565e78b 100644
--- a/SBNWeb/WebContent/WEB-INF/jsp/pages/elaborazioniDifferite/esporta/esporta.jsp
+++ b/SBNWeb/WebContent/WEB-INF/jsp/pages/elaborazioniDifferite/esporta/esporta.jsp
@@ -717,6 +717,11 @@
|
+
+
+
+ |
+
diff --git a/SBNWeb/config/web/it/iccu/sbn/web/resources/EsportaLabels.properties b/SBNWeb/config/web/it/iccu/sbn/web/resources/EsportaLabels.properties
index 8fd060c..cf85e75 100644
--- a/SBNWeb/config/web/it/iccu/sbn/web/resources/EsportaLabels.properties
+++ b/SBNWeb/config/web/it/iccu/sbn/web/resources/EsportaLabels.properties
@@ -23,6 +23,7 @@ button.cercaspecificazioneA=Specificazione a
button.cercasezione=Sezione
button.cercabiblioteche=CercaBiblioteche
button.tutteLeBiblio=Tutte le biblioteche
+button.scarica.template.conf=Scarica template conf.
#intestazione schede
label.schedalistadocarchivio=Prepara lista documenti da Archivio
diff --git a/SbnWebCommon/src/vo/it/iccu/sbn/util/cloning/dozer-custom-mappings.xml b/SbnWebCommon/src/vo/it/iccu/sbn/util/cloning/dozer-custom-mappings.xml
index 9b41d58..a9e509e 100644
--- a/SbnWebCommon/src/vo/it/iccu/sbn/util/cloning/dozer-custom-mappings.xml
+++ b/SbnWebCommon/src/vo/it/iccu/sbn/util/cloning/dozer-custom-mappings.xml
@@ -55,6 +55,12 @@
java.io.Serializable
+
+
+ it.iccu.sbn.batch.unimarc.ExportSchedulableBatchVO
+ java.io.Serializable
+
+
it.iccu.sbn.ejb.vo.servizi.sale.StatoPrenotazionePosto
diff --git a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/Configuration.java b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/Configuration.java
index cc29f44..b1c25da 100644
--- a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/Configuration.java
+++ b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/Configuration.java
@@ -100,6 +100,7 @@ public class Configuration {
public static final String SBNWEB_EXPORT_CONFIG_FILE = "SBNWEB_EXPORT_CONFIG_FILE";
public static final String SBNWEB_EXPORT_IGNORE_FILE = "SBNWEB_EXPORT_IGNORE_FILE";
public static final String EXPORT_UNIMARC_FILE_ACCESSORI = "EXPORT_UNIMARC_FILE_ACCESSORI";
+ public static final String EXPORT_UNIMARC_SAVE_TEMPLATE = "EXPORT_UNIMARC_SAVE_TEMPLATE";
public static final String WS_MAX_CONCURRENT_CLIENTS = "WS_MAX_CONCURRENT_CLIENTS";
diff --git a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf
index 12fbcbb..0f3d598 100644
--- a/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf
+++ b/SbnWebCommon/src/vo/it/iccu/sbn/util/config/sbnweb.conf
@@ -87,6 +87,8 @@ EXPORT_UNIMARC_FILE_ACCESSORI=BID-Classificazioni_SBW.txt;CategorieDiFruizione_S
#file che contiene il nr. richiesta dell'ultimo export elaborato
EXPORT_UNIMARC_FILE_ULTIMO_ID=ultimo_exp.txt
+EXPORT_UNIMARC_SAVE_TEMPLATE=false
+
#webservice max clients
WS_MAX_CONCURRENT_CLIENTS=10
diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportSchedulableBatchVO.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportSchedulableBatchVO.java
new file mode 100644
index 0000000..b87f755
--- /dev/null
+++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportSchedulableBatchVO.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (C) 2019 ICCU - Istituto Centrale per il Catalogo Unico
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ ******************************************************************************/
+package it.iccu.sbn.batch.unimarc;
+
+import it.iccu.sbn.ejb.utils.ValidazioneDati;
+import it.iccu.sbn.ejb.vo.common.CodiciType;
+import it.iccu.sbn.ejb.vo.common.CodiciType.CodiciRicercaType;
+import it.iccu.sbn.ejb.vo.common.TB_CODICI;
+import it.iccu.sbn.ejb.vo.elaborazioniDifferite.esporta.EsportaVO;
+import it.iccu.sbn.servizi.batch.SchedulableBatchVO;
+import it.iccu.sbn.servizi.codici.CodiciProvider;
+import it.iccu.sbn.util.cloning.ClonePool;
+import it.iccu.sbn.util.file.FileUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
+
+public class ExportSchedulableBatchVO extends SchedulableBatchVO {
+
+ private static final long serialVersionUID = -2883771863550034442L;
+
+ public ExportSchedulableBatchVO(SchedulableBatchVO sb) {
+ super(sb.getConfig());
+ }
+
+ public String getTipoScarico() throws Exception {
+ String cd_flg11 = trimOrEmpty(config.getCd_flg11());
+ String[] tokens = cd_flg11.split("\\|");
+ //il flag11 contiene sia il cod.scarico che l'elenco delle biblioteche, viene gestito il codice solo in prima
+ //posizione
+ if (tokens.length > 2)
+ return null;
+
+ String tipoScarico = tokens[0].trim().toUpperCase();
+ TB_CODICI cod = CodiciProvider.cercaCodice(tipoScarico, CodiciType.CODICE_TIPO_ESTRAZIONE_UNIMARC,
+ CodiciRicercaType.RICERCA_CODICE_SBN, true);
+
+ return (cod != null) ? tipoScarico : null;
+ }
+
+ public List getBiblioteche() throws Exception {
+ Set biblioteche = new HashSet();
+ String cd_flg11 = trimOrEmpty(config.getCd_flg11());
+
+ //il flag11 contiene sia il cod.scarico che l'elenco delle biblioteche,
+ //le biblioteche sono gestite solo in seconda posizione
+ if (isFilled(getTipoScarico()) ) {
+ String[] tokens = cd_flg11.split("\\|");
+ if (tokens.length != 2) //non ci sono biblioteche
+ return Collections.emptyList();
+
+ cd_flg11 = tokens[1]; //biblioteche nel secondo blocco
+ } else
+ //almaviva5_20170712 #6439 eliminazione delimitatore
+ cd_flg11 = StringUtils.stripStart(cd_flg11, "|");
+
+ for (String token : cd_flg11.split(",|;")) {
+ token = token.trim();
+ if (token.length() != 2) //cod.bib senza spazio
+ continue;
+
+ biblioteche.add(ValidazioneDati.fillLeft(token.toUpperCase(), ' ', 3));
+ }
+
+ return new ArrayList(biblioteche);
+ }
+
+ public EsportaVO getTemplate() {
+ EsportaVO esportaVO = null;
+ String cd_flg11 = trimOrEmpty(config.getCd_flg11());
+ if (cd_flg11.startsWith("template=")) {
+ final String filename = cd_flg11.substring("template=".length());
+ File f = new File(filename);
+ if (f.exists()) {
+ try {
+ String template = FileUtil.streamToString(new FileInputStream(f));
+ esportaVO = ClonePool.fromJson(template, EsportaVO.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ return esportaVO;
+ }
+
+}
diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportUnimarcBatch.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportUnimarcBatch.java
index 2431339..d7da6a1 100644
--- a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportUnimarcBatch.java
+++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/batch/unimarc/ExportUnimarcBatch.java
@@ -80,6 +80,7 @@ public class ExportUnimarcBatch extends ExternalBatchExecutor implements Schedul
private static final String TAGS_FILE = "tagsToExport.txt";
protected static final String PROPS_FILE = "db_extract.properties";
+ protected static final String LATEST_EXPORT_ID_FILE = "export.latest";
private AmministrazioneBiblioteca amministrazioneBiblioteca;
@@ -108,7 +109,7 @@ private AmministrazioneGestioneCodici getCodici() throws Exception {
protected AtomicBoolean status_ok = new AtomicBoolean(false);
protected Logger _log;
- private Timestamp tsLastDBExtraction;
+ private Timestamp tsExportStart;
private UserTransaction tx;
public static final long getDbLastExtractionTime() {
@@ -151,6 +152,9 @@ public ElaborazioniDifferiteOutputVo execute(String prefissoOutput,
if (ValidazioneDati.isFilled(richiesta.getAteneo()))
status_ok.set( impostaFiltroAteneo(richiesta) );
+ //almaviva5_20130326 evolutive LO1
+ this.tsExportStart = DaoManager.now();
+
// estrazione totale del DB
//almaviva5_20111027 estrazione db solo per unimarc
if (isEsporta && status_ok.get() && richiesta.isExportDB()) {
@@ -270,6 +274,7 @@ public ElaborazioniDifferiteOutputVo execute(String prefissoOutput,
if (status_ok.get())
output.addDownload(zipFile, mrcPath + File.separator + zipFile);
+
}
if (status_ok.get()) {
@@ -469,12 +474,9 @@ protected int execFase1_estrazioneDB(BatchLogWriter log) throws Exception {
try {
_log.debug("execFase1_estrazioneDB()");
- long startTime = 0;//System.currentTimeMillis();
+ long startTime = 0;
status_ok.set(false);
- //almaviva5_20130326 evolutive LO1
- tsLastDBExtraction = DaoManager.now();
-
String exportHome = getExportHome();
int exit = exec(log, exportHome, exportHome + File.separator + "export.sh");
@@ -553,12 +555,20 @@ public static void main (String[] args) {
}
public ParametriRichiestaElaborazioneDifferitaVO buildActivationParameters(
- SchedulableBatchVO params, Serializable... otherParams)
+ SchedulableBatchVO sb, Serializable... otherParams)
throws Exception {
_log = Logger.getLogger(ExportUnimarcBatch.class);
- EsportaVO esporta = new EsportaVO();
+ ExportSchedulableBatchVO params = new ExportSchedulableBatchVO(sb);
+
+ EsportaVO template = params.getTemplate();
+ boolean withTemplate = (template != null);
+ if (withTemplate) {
+ _log.debug("export json template: " + sb.getConfig().getCd_flg11());
+ }
+
+ EsportaVO esporta = withTemplate ? template : new EsportaVO();
esporta.setPayload(params);
String userId = params.getUser();
@@ -570,42 +580,42 @@ public ParametriRichiestaElaborazioneDifferitaVO buildActivationParameters(
esporta.setCodPolo(codPolo);
esporta.setCodBib(codBib);
esporta.setUser(user);
- String ticket = SbnSIP2Ticket.getUtenteTicket(codPolo, codBib, user, InetAddress.getLocalHost());
- esporta.setTicket(ticket);
+ esporta.setTicket(SbnSIP2Ticket.getUtenteTicket(codPolo, codBib, user, InetAddress.getLocalHost()));
- esporta.setCodAttivita(CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040);
-
- esporta.setExportDB(true);
- //almaviva5_20131106 segnalazione RML: eliminato filtro su tipo materiale
- //esporta.setMateriali(EsportaVO.MATERIALI);
- esporta.setMateriali(null);
- esporta.setNature(EsportaVO.NATURE);
- esporta.setTipoEstrazione(TipoEstrazioneUnimarc.ARCHIVIO);
-
- //almaviva5_20160322 tipo scarico da tabella
- String tipoScarico = ValidazioneDati.coalesce(params.getTipoScarico(), "ALL");
- _log.debug("tipo scarico unimarc: " + tipoScarico);
- esporta.setCodScaricoSelez(tipoScarico);
- impostaEtichetteDaEsportare(esporta);
-
- String downloadPath = StampeUtil.getBatchFilesPath();
- esporta.setDownloadPath(downloadPath);
+ esporta.setDownloadPath(StampeUtil.getBatchFilesPath());
esporta.setDownloadLinkPath("/"); // eliminato
- //almaviva5_20160308 prepara filtro biblioteche
- List biblioteche = params.getBiblioteche();
- if (ValidazioneDati.isFilled(biblioteche)) {
- _log.debug("preparazione filtro per biblioteca: " + biblioteche);
- List listaBib = new ArrayList();
- for (String cdBib : biblioteche) {
- BibliotecaVO bib = DomainEJBFactory.getInstance().getBiblioteca().getBiblioteca(codPolo, cdBib);
- if (bib != null)
- listaBib.add(bib);
+ esporta.setCodAttivita(CodiciAttivita.getIstance().ESPORTA_DOCUMENTI_1040);
+
+ if (!withTemplate) {
+ //template mancante: impostazione filtri di default
+ esporta.setExportDB(true);
+ //almaviva5_20131106 segnalazione RML: eliminato filtro su tipo materiale
+ //esporta.setMateriali(EsportaVO.MATERIALI);
+ esporta.setMateriali(null);
+ esporta.setNature(EsportaVO.NATURE);
+ esporta.setTipoEstrazione(TipoEstrazioneUnimarc.ARCHIVIO);
+
+ //almaviva5_20160322 tipo scarico da tabella
+ String tipoScarico = ValidazioneDati.coalesce(params.getTipoScarico(), "ALL");
+ _log.debug("tipo scarico unimarc: " + tipoScarico);
+ esporta.setCodScaricoSelez(tipoScarico);
+ impostaEtichetteDaEsportare(esporta);
+
+ //almaviva5_20160308 prepara filtro biblioteche
+ List biblioteche = params.getBiblioteche();
+ if (ValidazioneDati.isFilled(biblioteche)) {
+ _log.debug("preparazione filtro per biblioteca: " + biblioteche);
+ List listaBib = new ArrayList();
+ for (String cdBib : biblioteche) {
+ BibliotecaVO bib = DomainEJBFactory.getInstance().getBiblioteca().getBiblioteca(codPolo, cdBib);
+ if (bib != null)
+ listaBib.add(bib);
+ }
+ esporta.setListaBib(listaBib);
+ //preparaFileFiltroBiblioteca(esporta);
}
- esporta.setListaBib(listaBib);
- //preparaFileFiltroBiblioteca(esporta);
}
-
return esporta;
}
@@ -641,7 +651,7 @@ public void setEnd(ParametriRichiestaElaborazioneDifferitaVO params, Elaborazion
if (!ValidazioneDati.equals(stato, ConstantsJMS.STATO_OK))
return;
- sb.setLatestSuccessfulEnd(tsLastDBExtraction);
+ sb.setLatestSuccessfulEnd(tsExportStart);
getCodici().salvaTabellaCodici(sb.getConfig(), false);
}
diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/batch/SchedulableBatchVO.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/batch/SchedulableBatchVO.java
index eed95f1..070460a 100644
--- a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/batch/SchedulableBatchVO.java
+++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/batch/SchedulableBatchVO.java
@@ -20,20 +20,11 @@
import it.iccu.sbn.ejb.utils.ValidazioneDati;
import it.iccu.sbn.ejb.vo.UniqueIdentifiableVO;
import it.iccu.sbn.ejb.vo.common.CodiciType;
-import it.iccu.sbn.ejb.vo.common.CodiciType.CodiciRicercaType;
import it.iccu.sbn.ejb.vo.common.TB_CODICI;
-import it.iccu.sbn.servizi.codici.CodiciProvider;
import java.io.Serializable;
import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.lang.StringUtils;
/*
* cd_tabella job_name.
@@ -56,7 +47,7 @@
public class SchedulableBatchVO extends UniqueIdentifiableVO {
private static final long serialVersionUID = -7803792221970476948L;
- private final TB_CODICI config;
+ protected final TB_CODICI config;
public enum ScheduleType {
TIME,
@@ -148,48 +139,6 @@ public void setParams(String params) {
config.setCd_flg10(params);
}
- public String getTipoScarico() throws Exception {
- String cd_flg11 = trimOrEmpty(config.getCd_flg11());
- String[] tokens = cd_flg11.split("\\|");
- //il flag11 contiene sia il cod.scarico che l'elenco delle biblioteche, viene gestito il codice solo in prima
- //posizione
- if (tokens.length > 2)
- return null;
-
- String tipoScarico = tokens[0].trim().toUpperCase();
- TB_CODICI cod = CodiciProvider.cercaCodice(tipoScarico, CodiciType.CODICE_TIPO_ESTRAZIONE_UNIMARC,
- CodiciRicercaType.RICERCA_CODICE_SBN, true);
-
- return (cod != null) ? tipoScarico : null;
- }
-
- public List getBiblioteche() throws Exception {
- Set biblioteche = new HashSet();
- String cd_flg11 = trimOrEmpty(config.getCd_flg11());
-
- //il flag11 contiene sia il cod.scarico che l'elenco delle biblioteche,
- //le biblioteche sono gestite solo in seconda posizione
- if (isFilled(getTipoScarico()) ) {
- String[] tokens = cd_flg11.split("\\|");
- if (tokens.length != 2) //non ci sono biblioteche
- return Collections.emptyList();
-
- cd_flg11 = tokens[1]; //biblioteche nel secondo blocco
- } else
- //almaviva5_20170712 #6439 eliminazione delimitatore
- cd_flg11 = StringUtils.stripStart(cd_flg11, "|");
-
- for (String token : cd_flg11.split(",|;")) {
- token = token.trim();
- if (token.length() != 2) //cod.bib senza spazio
- continue;
-
- biblioteche.add(ValidazioneDati.fillLeft(token.toUpperCase(), ' ', 3));
- }
-
- return new ArrayList(biblioteche);
- }
-
public boolean isActive() {
Date fineValidita = config.getDt_fine_validita();
return (fineValidita == null || fineValidita.after(creationTime));
diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/sip2/SbnSIP2Listener.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/sip2/SbnSIP2Listener.java
index 6d01bc8..c23396b 100644
--- a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/sip2/SbnSIP2Listener.java
+++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/servizi/sip2/SbnSIP2Listener.java
@@ -130,6 +130,7 @@ public Server(int listenPort) throws IOException {
super("SbnSIP2Listener@Server");
socket = new ServerSocket(listenPort);
socket.setSoTimeout(1000);
+ socket.setReuseAddress(true);
}
public Server(int listenPort, String codPolo, String codBiblio) throws IOException {
diff --git a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/file/FileUtil.java b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/file/FileUtil.java
index 4e9ff0f..a394756 100644
--- a/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/file/FileUtil.java
+++ b/SbnWebDomainEjb/ejbModule/it/iccu/sbn/util/file/FileUtil.java
@@ -177,4 +177,14 @@ public static boolean writeStringToFile(String fileName, String content, String
return transfer(new ByteArrayInputStream(content.getBytes(encoding)), new FileOutputStream(fileName));
}
+ public static void delete(String fileName) {
+ try {
+ File f = new File(fileName);
+ if (f.exists())
+ f.delete();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
}