import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.text.DateFormat; import java.text.Normalizer; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.StringTokenizer; import java.util.Vector; import java.util.regex.Pattern; import lotus.domino.AgentContext; import lotus.domino.Database; import lotus.domino.Document; import lotus.domino.DocumentCollection; import lotus.domino.EmbeddedObject; import lotus.domino.Item; import lotus.domino.NotesException; import lotus.domino.RichTextItem; import lotus.domino.Session; import lotus.domino.View; import lotus.domino.ViewEntry; import lotus.domino.ViewEntryCollection; import lotus.domino.ViewNavigator; import javax.activation.DataHandler; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.apache.axis2.Constants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.databinding.ADBException; import org.apache.axis2.transport.http.HTTPConstants; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.io.filefilter.WildcardFileFilter; import org.apache.commons.lang.StringUtils; import org.xml.sax.SAXException; import it.kibernetes.www.ws.progettoenteconservazione.*; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AggiuntaAllegatiInfo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ArrayOfFascicolo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ArrayOfFile; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ArrayOfFileBase; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Attributi; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiAffissione; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiContratto; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiDelibera; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiDetermina; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiDocumentoGenerico; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiFatturaPassiva; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiProtocollo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.AttributiRegistroProtocollo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Base64Binary; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Chiave; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Conserva; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ConservaAllegati; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ConservaAllegatiResponse; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ConservaResponse; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ConservationInfo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Elimina; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.EliminaResponse; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Esibisci; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.EsibisciArgs; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.EsibisciResponse; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.EsibitionResponseInfo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.EsibitionResponseInfoTipoStatusFile; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Fascicolo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.File; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.FileBase; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.FileFlags; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.FileFlags_type0; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.ResponseStatusCode; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.Rettifica; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.RettificaInfo; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.RettificaResponse; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.TipoOggetto; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.LoginManager; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.MimeType; import it.kibernetes.www.ws.progettoenteconservazione.ConservaStub.TipoSoftware; import com.lowagie.text.Font; import com.lowagie.text.FontFactory; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfPageEvent; import com.lowagie.text.pdf.PdfWriter; import com.redturtle.pdf.IntestazioneBase; public class PeConserva { private static final float MARGIN_LEFT = 36; private static final float MARGIN_RIGHT = 36; private static final float MARGIN_TOP = 86; private static final float MARGIN_BOTTOM = 36; static String isModuloAIAcquistato = ""; public static String TEMP = ""; static String nomeFileLog = "LogPeConserva.log"; Vector vctRegistriGenerati = new Vector(); private static boolean DEBUG = false; private static boolean DEBUGALLEGATI = false; private static boolean DEBUGTIMESTAMPS = false; private static boolean DEBUGESIBISCI = false; // Per i test su funzioni: impostare a *true* e richiamare all'interno del blocco la funzione da testare private static boolean MOCKFUNCTIONS = false; private static boolean DEBUG_PRESENZA_ALLEGATI = false; // Parametri di servizio private static boolean enableMemoryMonitor = true; private static boolean enablePrintProfile = false; // MODIFICA private static Utils u; static Utility ut = null; private static lotus.domino.Database database = null; // Servizio domino private PrintWriter pw; private static AgentContext ac; private Database db,dbTarget; private static Session session; // Parametri di ritorno private static String ret = "NOCALL"; private static String retVal = ""; private static String errorStatus = "ERR"; // URL webservice private static String url = ""; // Variabili passate nella request private static String user; private static String profile; private static String operation; private static String token; private static String md5Impronta = ""; private static String md5ImprontaRettificata = ""; ConservaStub stub = null; LoginManager lm = null; Conserva conserva = null; Esibisci esibisci = null; Vector vctTokens = new Vector(); Vector vctImpronte = new Vector(); Vector vctImpronteDaAnnullare = new Vector(); Vector vctImpronteDaRimpiazzare = new Vector(); static String log = ""; Document theDoc = null; private static String[] listExtensions; private boolean conservato = false; private boolean giaConservato = false; private boolean rettificato = false; int totAllegati = 0; String[] listCSExclusions = null; static // Array multidimensionale per lo storage delle informazioni degli allegati (ID, impronta ecc.) ArrayList outerArr = new ArrayList(); DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); Date date = new Date(); Calendar dataConservazione = Calendar.getInstance(); String pathConservazione = ""; ArrayList listGiornaliero = new ArrayList(); Map element = new HashMap(); ArrayList modificatoDa = new ArrayList(); // Flag che viene alzato nel momento in cui si verifica un qualche tipo di errore "grave": tipicamente exception Java public boolean erroreGlobale = false; public boolean erroreTimeout = false; public boolean erroreRettifica = false; // Flag per l'esistenza di protocolli public boolean esistonoProtocolli = false; public boolean creatoRegistro = false; public boolean hasDocumentoCollegato = false; Document globalDocumentoCollegato = null; String theToken = ""; String tokenCS = ""; public static Font BOLD; public static Font NORMAL; protected static BaseFont timesbd; public PeConserva (Session s, PrintWriter pwr, AgentContext agentContext) throws NotesException { // Costruttore di default session = s; pw = pwr; ac = agentContext; u = new Utils(session, db, pw); ut = new Utility(session, ac, pw); db = session.getCurrentDatabase(); Vector vctc = ut.getKey("PORTALE", "SERVER", "TEMP"); TEMP = ((Vector) vctc.elementAt(0)).elementAt(0).toString(); } public PeConserva(Session s, PrintWriter pwr, Database database, AgentContext agentContext) throws NotesException, IOException { session = s; pw = pwr; db = database; ac = agentContext; stub = new ConservaStub(); lm = new LoginManager(); u = new Utils(session,db); ut = new Utility(session, ac, pw); EndpointReference ep = stub._getServiceClient().getOptions().getTo(); //System.out.println("CONNESSIONE A......" + ep.getAddress()); HttpURLConnection connection = (HttpURLConnection) new URL(ep.getAddress()).openConnection(); int responseCode = connection.getResponseCode(); if (responseCode == 302) { if (DEBUG) System.out.println("REDIRECT TO...."+connection.getHeaderField("Location")); stub = new ConservaStub(connection.getHeaderField("Location")); stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(Long.parseLong(u.getParam("CS_TimeoutEsibizione"))); // Senza implementazione MTOM final Options opt = stub._getServiceClient().getOptions(); opt.setProperty( HTTPConstants.CHUNKED, Boolean.FALSE ); opt.setProperty( HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_11 ); opt.setProperty( Constants.Configuration.ENABLE_MTOM, Constants.VALUE_FALSE); opt.setProperty( Constants.Configuration.CHARACTER_SET_ENCODING,"UTF-8"); // MTOM /* final Options opt = stub._getServiceClient().getOptions(); opt.setProperty( HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10 ); opt.setProperty( HTTPConstants.CHUNKED, Boolean.FALSE ); opt.setProperty( Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); opt.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,"UTF-8"); opt.setProperty(org.apache.axis2.transport.http.HTTPConstants.SO_TIMEOUT,new Integer(u.getParam("CS_TimeoutEsibizione"))); opt.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(u.getParam("CS_TimeoutEsibizione"))); //opt.setProperty( HTTPConstants.MC_ACCEPT_GZIP, Boolean.TRUE ); //stub._getServiceClient().setOptions(opt); */ } Vector vctc = ut.getKey("PORTALE", "SERVER", "TEMP"); TEMP = ((Vector) vctc.elementAt(0)).elementAt(0).toString(); //setLog(TEMP,"************* Agente di Conservazione Digitale", "[INFO]"); } public void serviceLogin() throws NotesException { // Bisogna prendere dalla chiave ISTAT su admin Vector vctc = ut.getKey("PORTALE", "CODICEISTAT", "ISTAT"); String ISTAT = ((Vector) vctc.elementAt(0)).elementAt(0).toString(); lm.setISTAT(ISTAT); //lm.setISTAT(u.getParam("CS_ISTAT")); lm.setUtente(u.getParam("CS_Utente")); lm.setPassword(u.getParam("CS_Password")); lm.setSoftware(TipoSoftware.ProtocolloAtti); } public void setLoginManagerConserva() { conserva = new Conserva(); conserva.setInfoLogin(lm); } public void setLoginManagerEsibisci() { esibisci = new Esibisci(); esibisci.setInfoLogin(lm); } public String getLog() throws IOException { String content = ""; FileInputStream inputStream = new FileInputStream(TEMP+nomeFileLog); try { content = IOUtils.toString(inputStream); } finally { inputStream.close(); } return content; } public String conserva(String[] extensions) throws Exception { String out = ""; /* View vv = db.getView("ID"); vv.refresh(); // String searchFormula = "(([Form] = \"M4.PR\" AND [readyCS] = \"SI\" AND NOT [Annullato] = \"S\")"; // searchFormula += " OR "; // searchFormula += "([FormName] = \"M2.DO\" AND NOT [Protocollato] = \"SI\" AND [readyCS] = \"SI\")"; // searchFormula += " OR "; // searchFormula += "([FormName] = \"M5.AT\" AND NOT [Protocollato] = \"SI\" AND [readyCS] = \"SI\" AND NOT [Draft] = \"SI\")"; // searchFormula += " OR "; // searchFormula += "([FormName] = \"M7.CO\" AND NOT [Protocollato] = \"SI\" AND [readyCS] = \"SI\")"; // searchFormula += " OR "; // searchFormula += "([FormName] = \"M6.AP\" AND [readyCS] = \"SI\")"; // searchFormula += " OR "; // searchFormula += "([FormName] = \"M3.PR\" AND [readyCS] = \"SI\"))"; // searchFormula += " AND "; // searchFormula += "( NOT [Eliminato] = \"SI\" AND NOT [Cancellato] = \"SI\" AND NOT [Fittizio] = \"SI\" AND NOT [NUMERO] = 0)"; String searchFormula = "([FormName] = \"M2.DO\") AND ( NOT [Eliminato] = \"SI\" AND NOT [Cancellato] = \"SI\" AND NOT [Fittizio] = \"SI\" AND NOT [NUMERO] = 0) "; int matches = vv.FTSearch(searchFormula,0); if (true) { return ""; } */ View v = db.getView("lastModifiedDocuments"); v.refresh(); v.setAutoUpdate(false); ViewEntryCollection vec1 = v.getAllEntries(); ViewNavigator vec = v.createViewNav(); ViewEntry tmpentry = null; ViewEntry entry = vec.getFirst(); int i = 0; if (MOCKFUNCTIONS) { System.out.println("########################### MOCK...."); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); System.out.println("---->" + existsEntryprofile(dateFormatRG.format(cal.getTime()))); //modifyToken("26/08/2015","467"); //System.out.println("ESISTE ENTRY: " + existsEntryprofile("27/08/2015")); eraseEntryProfile(dateFormatRG.format(cal.getTime())); //getProfileDocument(); // PER IGNORARE TUTTI I CALCOLI SUCCESSIVI entry = null; } // if (vec.getCount()==0) { // Calendar cal = Calendar.getInstance(); // // cal.add(Calendar.DATE, -1); // DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); // //System.out.println("CREO IL REGISTRO GIORNALIERO DA SOLO"); // if (!existsEntryprofile(dateFormatRG.format(cal.getTime()))) { // creaRegistroGiornaliero(cal,"storedCS"); // } // } //System.out.println("COUNT:" + vec.getCount()); while (entry != null) { log = ""; boolean conservare = false; conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M4.PR") && (entry.getDocument().getItemValueString("isFattura")==null || !entry.getDocument().getItemValueString("isFattura").equals("SI")) && u.getParam("GAS_PR")!=null && u.getParam("GAS_PR").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M5.AT") && u.getParam("GAS_AT")!=null && u.getParam("GAS_AT").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M5.AT") && (u.getParam("GAS_AT")==null || u.getParam("GAS_AT").equals("N")) && !entry.getDocument().getItemValueString("IdAlboPretorio").equals("") && u.getParam("GAS_AP")!=null && u.getParam("GAS_AP").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M7.CO") && u.getParam("GAS_CO")!=null && u.getParam("GAS_CO").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M2.DO") && u.getParam("GAS_DO")!=null && u.getParam("GAS_DO").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M6.AP") && u.getParam("GAS_AP")!=null && u.getParam("GAS_AP").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M9.AP") && u.getParam("GAS_APP")!=null && u.getParam("GAS_APP").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M3.PR") && u.getParam("GAS_FA")!=null && u.getParam("GAS_FA").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("RegistroGiornalieroCS") && u.getParam("GAS_REG")!=null && u.getParam("GAS_REG").equals("S")?true:conservare); conservare = (entry.getDocument().getItemValueString("FormName").equalsIgnoreCase("M4.PR") && entry.getDocument().getItemValueString("isFattura")!=null && entry.getDocument().getItemValueString("isFattura").equals("SI") && ((entry.getDocument().getItemValueString("fattura_Status")!=null && entry.getDocument().getItemValueString("fattura_Status").trim().equals("10")) || getStatusFattura(entry.getDocument()).equals("10")) && entry.getDocument().getItemValueString("esitofattura")!=null && entry.getDocument().getItemValueString("esitofattura").trim().equals("1") && u.getParam("GAS_FE")!=null && u.getParam("GAS_FE").equals("S")?true:conservare); //System.out.println("CONSERVARE " +entry.getDocument().getUniversalID() +"<>ESITO FATTURA:" + entry.getDocument().getItemValueString("esitofattura")+ "=" + conservare); if (conservare) out = conserva(entry.getDocument().getUniversalID(),extensions); vctTokens = new Vector(); vctImpronte = new Vector(); vctImpronteDaAnnullare = new Vector(); vctImpronteDaRimpiazzare = new Vector(); //tmpentry = vec.getNextEntry(); tmpentry = vec.getNext(); entry.recycle(); entry = tmpentry; i++; conservato = false; giaConservato = false; md5Impronta = ""; } cancellaTemporanei(TEMP); cancellaTemporanei(session.getEnvironmentString("Directory", true)); FileUtils.deleteDirectory(new java.io.File(TEMP + "protocolli")); //FileUtils.deleteDirectory(new java.io.File(TEMP + "conservazione")); if (stub!=null) { stub = null; } return out; } private void cancellaTemporanei(String directoryBase) { try { // Cancello eventuali stub tmp scaricati sulla TEMP directory java.io.File dir = new java.io.File(directoryBase); FileFilter fileFilter = new WildcardFileFilter("*.tmp.lck"); java.io.File[] files = dir.listFiles(fileFilter); for (int kk=0; kk" + ff.getName()); ff.delete(); } } catch (Exception ee) { ee.printStackTrace(); System.out.println("Errore cancellazione file temporanei"); } } /* * idDocumento: l'ID del documento Domino */ public String conserva(String idDocumento, String[] extensions) throws Exception { Vector vctc = ut.getKey("PORTALE", "MODULIACQUISTATI", "AI"); isModuloAIAcquistato = ((Vector) vctc.elementAt(0)).elementAt(0).toString(); if (isModuloAIAcquistato.equals("SI")) { Vector vct = ut.getKey("PORTALE", "DB", "MI"); String server = ((Vector) vct.elementAt(0)).elementAt(0).toString(); String pathDB = ((Vector) vct.elementAt(1)).elementAt(0).toString(); dbTarget = session.getDatabase(server, pathDB); } else { dbTarget = db; } if (!dbTarget.isOpen()) { dbTarget.open(); } vctc = ut.getKey("PORTALE", "SERVER", "TEMP"); TEMP = ((Vector) vctc.elementAt(0)).elementAt(0).toString(); String id = ""; listExtensions = extensions; // NB: // per tutti a parte il protocollo, indagare la vista "IDPadre" di aed-immagini.nsf con l'ID del documento // Se c'è il documento, significa che hanno allegato delle cose via scanner // Per il protocollo indagare la vista "AllegatiProtocollo" con l'ID del documento, li ci sono gli allegati // Se c'è il modulo acquistato, andare su immagini, altrimenti su protocollo // Con l'ID del documento domino, vado a recuperare tutti i suoi allegati View view = db.getView("ID"); int nAllegati = 0; if (view != null) { lotus.domino.Document doc = view.getDocumentByKey(idDocumento, true); if (doc != null) { theDoc = doc; //System.out.println("docGiaConservato--->" + docGiaConservato(theDoc)); if (DEBUG) System.out.println("TOTALE ALLEGATI ALL'ENTRATA " + totAllegati); Vector vctModificatoDa = session.evaluate("@Subset($Updatedby;-1)",doc); String strModificatoDa = (String)vctModificatoDa.elementAt(0); if (StringUtils.containsIgnoreCase(strModificatoDa, "CN=")) { lotus.domino.Name nam = session.createName(strModificatoDa); strModificatoDa = nam.getCommon(); } modificatoDa.add(strModificatoDa); pathConservazione = getPathConservazione(doc,dataConservazione); // Diversificare in caso di protocollo, bisogna andare sul db immagini piuttosto che su documenti listCSExclusions = StringUtils.splitByWholeSeparator(theDoc.getItemValueString("ListaAllegatiCS"), "|"); // LA DATA DI ULTIMA MODIFICA Date ddMod = theDoc.getLastModified().toJavaDate(); //Date ddMod = theDoc.getCreated().toJavaDate(); Calendar calMod = Calendar.getInstance(); calMod.setTime(ddMod); DateFormat dfMod = new SimpleDateFormat("dd/MM/yyyy"); Calendar yesterday = Calendar.getInstance(); yesterday.add(Calendar.DATE, -1); /*if (dfMod.format(calMod.getTime()).equals(dfMod.format(yesterday.getTime()))) { System.out.println("LO CONSERVO"); } else { System.out.println("** NON LO CONSERVO"); }*/ // Quello che c'è già originariamente tokenCS = theDoc.getItemValueString("tokenCS"); if (tokenCS!=null && !tokenCS.equals("")) { RichTextItem rt = (RichTextItem)theDoc.getFirstItem("ImpronteConservazione"); if (rt != null) { String impronte = rt.getUnformattedText(); String[] aa = StringUtils.splitByWholeSeparator(impronte, "§§"); vctImpronteDaAnnullare = new Vector(Arrays.asList(aa)); if (DEBUG) System.out.println("vctImpronteOriginal:" + vctImpronteDaAnnullare + "<>" + vctImpronteDaAnnullare.size() ); } } // SCOMMENTARE PER FORZARE LA CONSERVAZIONE DEI PROTOCOLLI IL GIORNO STESSO if (doc.getItemValueString("FormName").equals("M4.PR")) { //if (doc.getItemValueString("FormName").equals("M4.PR") && dfMod.format(calMod.getTime()).equals(dfMod.format(yesterday.getTime()))) { // Per i protocolli esistonoProtocolli = true; // if (doc.getItemValueString("Annullato")!=null && doc.getItemValueString("Annullato").equals("S") && doc.getItemValueString("tokenCS")!=null && !doc.getItemValueString("tokenCS").equals("")) { // // System.out.println("ELIMINAZIONE DEL DOCUMENTO CON TOKEN:" + doc.getItemValueString("tokenCS")); // eliminaDocumento(doc.getItemValueString("tokenCS")); // // } else { // Se è un protocollo collegato ad un documento, contratto o atto, devo conservare ciò che si trova in essi String idDocumentoCollegato = doc.getItemValueString("IdDocumento"); lotus.domino.Document documentoCollegato = view.getDocumentByKey(idDocumentoCollegato, true); if (documentoCollegato != null) { if (documentoCollegato.getItemValueString("Form") != null && ( documentoCollegato.getItemValueString("Form").equals("M2.DO") || documentoCollegato.getItemValueString("Form").equals("M7.CO") || documentoCollegato.getItemValueString("Form").equals("M5.AT") || documentoCollegato.getItemValueString("Form").equals("M9.AP") ) ) { // ##DEBUG## //System.out.println("PER IL DOC COLLEGATO"); hasDocumentoCollegato = true; globalDocumentoCollegato = documentoCollegato; id = conservaDocumenti(documentoCollegato,idDocumentoCollegato,view); } } View vistaImg = dbTarget.getView("AllegatiProtocollo"); if (vistaImg != null) { lotus.domino.Document docImg = vistaImg.getDocumentByKey(idDocumento, true); if (docImg != null) { listCSExclusions = StringUtils.splitByWholeSeparator(docImg.getItemValueString("ListaAllegatiCS"), "|"); id = getAllegati(docImg,totAllegati,id); } else { // CI si riprova nel caso prima non fosse abilitata l'acquisizione, poi si dbTarget = db; vistaImg = dbTarget.getView("AllegatiProtocollo"); docImg = vistaImg.getDocumentByKey(idDocumento, true); if (docImg != null) { listCSExclusions = StringUtils.splitByWholeSeparator(docImg.getItemValueString("ListaAllegatiCS"), "|"); id = getAllegati(docImg,totAllegati,id); } } } // Annessi del protocollo (accettazione e consegna pec) if (doc.getItemValueString("TipoInvio")!=null && doc.getItemValueString("TipoInvio").equals("PEC")) { String anno = ""+doc.getItemValueInteger("AnnoProtocollo"); String numero = ""+doc.getItemValueInteger("Numero"); numero = org.apache.commons.lang.StringUtils.leftPad(numero,7,"0"); Vector vcmail = ut.getKey("PORTALE", "DB", "POSTA"); String server = ((Vector) vcmail.elementAt(0)).elementAt(0).toString(); String pathDB = ((Vector) vcmail.elementAt(1)).elementAt(0).toString(); pathDB = (doc.getItemValueString("MailDBRef")!=null && !doc.getItemValueString("MailDBRef").equals("")?doc.getItemValueString("MailDBRef"):pathDB); lotus.domino.Database dbPosta = session.getDatabase(server, pathDB); if (dbPosta!=null) { if (!dbPosta.isOpen()) { dbPosta.open(); } View vCorrelati = dbPosta.getView("ProtocolloFiltroPerAnnoENumeroAIPA"); if (vCorrelati!=null) { lotus.domino.DocumentCollection dc = vCorrelati.getAllDocumentsByKey(anno+numero,true); lotus.domino.Document documento = dc.getFirstDocument(); while (documento != null) { if (documento.getItemValueString("Subject")!=null && (documento.getItemValueString("Subject").indexOf("ACCETTAZIONE:")!=-1 || documento.getItemValueString("Subject").indexOf("CONSEGNA:")!=-1)) { id = getAllegati(documento,totAllegati,id); } lotus.domino.Document tmpRecycle = null; tmpRecycle = documento; documento = dc.getNextDocument(documento); tmpRecycle.recycle(); } } } } // Gestione della relata di pubblicazione come annesso View vAffissioniProtocollo = db.getView("key-AlboPretorio-Affissioni-Protocollo"); lotus.domino.Document affissioneProtocollo = vAffissioniProtocollo.getDocumentByKey(doc.getUniversalID(), true); if (affissioneProtocollo != null) { View vRelate = db.getView("key-STRL"); String anno = ""+affissioneProtocollo.getItemValueInteger("Anno"); String numero = ""+affissioneProtocollo.getItemValueInteger("Numero"); lotus.domino.Document relata = vRelate.getDocumentByKey(anno+"#"+numero, true); if (relata != null) { if ((relata.getItemValueString("Firmato")!=null && relata.getItemValueString("Firmato").equals("SI")) || (relata.getItemValueString("Evasa")!=null && relata.getItemValueString("Evasa").equals("SI"))) { String idDocumentoRelata = null; idDocumentoRelata = (relata.getItemValueString("WordDocID3")!=null && !relata.getItemValueString("WordDocID3").equals("")?relata.getItemValueString("WordDocID3"):idDocumentoRelata); idDocumentoRelata = (relata.getItemValueString("WordDocID4")!=null && !relata.getItemValueString("WordDocID4").equals("")?relata.getItemValueString("WordDocID4"):idDocumentoRelata); lotus.domino.Document allegatoRelata = view.getDocumentByKey(idDocumentoRelata, true); if (allegatoRelata != null) { id = getAllegati(allegatoRelata,totAllegati,id); } } } } if (DEBUG) System.out.println("Memorizzo sul protocollo-------->" + theToken); // informazione sul civetta if (!theToken.equals("")) { String idCivetta = doc.getItemValueString("IdDocumento"); if (!idCivetta.equals("") && !idCivetta.equals("0")) { try { Document docCivetta = db.getDocumentByUNID(idCivetta); if (docCivetta!=null) { docCivetta.replaceItemValue("tokenCS", theToken); docCivetta.replaceItemValue("storedCS", "SI"); docCivetta.save(true); } } catch (Exception e) {} } } doc.replaceItemValue("tokenCS", theToken); if (!erroreGlobale) { doc.replaceItemValue("readyCS", "NO"); doc.replaceItemValue("storedCS", "SI"); } try { doc.save(true); } catch (Exception err32k) {} //} // Se non è annullato } // Form = M4.PR if (doc.getItemValueString("FormName").equals("M6.AP") && doc.getItemValueString("GenerataRelataPubblicazione")!=null && doc.getItemValueString("GenerataRelataPubblicazione").equals("SI")) { // Albo pretorio - si conserva la sola relata View vRelate = db.getView("key-STRL"); String anno = ""+doc.getItemValueInteger("Anno"); String numero = ""+doc.getItemValueInteger("Numero"); lotus.domino.Document relata = vRelate.getDocumentByKey(anno+"#"+numero, true); if (relata != null) { if ((relata.getItemValueString("Firmato")!=null && relata.getItemValueString("Firmato").equals("SI")) || (relata.getItemValueString("Evasa")!=null && relata.getItemValueString("Evasa").equals("SI"))) { String idDocumentoRelata = null; idDocumentoRelata = (relata.getItemValueString("WordDocID3")!=null && !relata.getItemValueString("WordDocID3").equals("")?relata.getItemValueString("WordDocID3"):idDocumentoRelata); idDocumentoRelata = (relata.getItemValueString("WordDocID4")!=null && !relata.getItemValueString("WordDocID4").equals("")?relata.getItemValueString("WordDocID4"):idDocumentoRelata); lotus.domino.Document allegatoRelata = view.getDocumentByKey(idDocumentoRelata, true); if (allegatoRelata != null) { id = getAllegati(allegatoRelata,totAllegati,id); } } } } if (doc.getItemValueString("FormName").equals("M3.PR")) { // CAPIRE COME IMPOSTARE L'ICONA VERDE theDoc.replaceItemValue("readyCS", "NO"); theDoc.replaceItemValue("storedCS", "SI"); if (!theToken.equals("")) { theDoc.replaceItemValue("tokenCS", theToken); } } // Conservazione della relata di pubblicazione collegata all'atto (ANNESSO) if (doc.getItemValueString("FormName").equals("M5.AT")) { if (doc.getItemValueString("IdAlboPretorio")!=null && !doc.getItemValueString("IdAlboPretorio").equals("")) { lotus.domino.Document affissione = view.getDocumentByKey(doc.getItemValueString("IdAlboPretorio"), true); if (affissione != null) { if (affissione.getItemValueString("GenerataRelataPubblicazione")!=null && affissione.getItemValueString("GenerataRelataPubblicazione").equals("SI")) { View vRelate = db.getView("key-STRL"); String anno = ""+affissione.getItemValueInteger("Anno"); String numero = ""+affissione.getItemValueInteger("Numero"); lotus.domino.Document relata = vRelate.getDocumentByKey(anno+"#"+numero, true); if (relata != null) { if ((relata.getItemValueString("Firmato")!=null && relata.getItemValueString("Firmato").equals("SI")) || (relata.getItemValueString("Evasa")!=null && relata.getItemValueString("Evasa").equals("SI"))) { String idDocumentoRelata = null; idDocumentoRelata = (relata.getItemValueString("WordDocID3")!=null && !relata.getItemValueString("WordDocID3").equals("")?relata.getItemValueString("WordDocID3"):idDocumentoRelata); idDocumentoRelata = (relata.getItemValueString("WordDocID4")!=null && !relata.getItemValueString("WordDocID4").equals("")?relata.getItemValueString("WordDocID4"):idDocumentoRelata); lotus.domino.Document allegatoRelata = view.getDocumentByKey(idDocumentoRelata, true); if (allegatoRelata != null) { id = getAllegati(allegatoRelata,totAllegati,id); } } } } } } // se l'atto è stato generato da una proposta, invio anche a versione più avanzata del testo proposta if (doc.getItemValueString("IdProposta")!=null && !doc.getItemValueString("IdProposta").equals("") && !doc.getItemValueString("IdProposta").equals("0")) { lotus.domino.Document proposta = view.getDocumentByKey(doc.getItemValueString("IdProposta"), true); if (DEBUG) System.out.println("*********** ATTO GENERATO DA PROPOSTA *****************"); if (proposta != null) { id = getAllegati(proposta,totAllegati,id); String idDocumentoPrincipale = getIDDocumentoPrincipale(proposta); if (idDocumentoPrincipale != null && !idDocumentoPrincipale.equals("")) { lotus.domino.Document docPrincipale = null; docPrincipale = getDocumentoPrincipale(idDocumentoPrincipale,db); if (docPrincipale != null) { id = getAllegati(docPrincipale,totAllegati,id); docPrincipale.recycle(); } } } View viewPareri = db.getView("key-PR-PA"); if (viewPareri!=null) { lotus.domino.DocumentCollection dc = viewPareri.getAllDocumentsByKey(doc.getItemValueString("IdProposta"),true); lotus.domino.Document documento = dc.getFirstDocument(); while (documento != null) { if (DEBUG) System.out.println("---->GESTIONE PARERI"); if (documento.getItemValueString("WordDocID4")!=null && !documento.getItemValueString("WordDocID4").equals("")) { Document fase = view.getDocumentByKey(documento.getItemValueString("WordDocID4"), true); if (fase!=null) { id = getAllegati(fase,totAllegati,id,""+documento.getItemValueDouble("Numero")); } } else { if (documento.getItemValueString("WordDocID3")!=null && !documento.getItemValueString("WordDocID3").equals("")) { Document fase = view.getDocumentByKey(documento.getItemValueString("WordDocID3"), true); if (fase!=null) { id = getAllegati(fase,totAllegati,id,""+documento.getItemValueDouble("Numero")); } } } lotus.domino.Document tmpRecycle = null; tmpRecycle = documento; documento = dc.getNextDocument(documento); tmpRecycle.recycle(); } } } // Se l'atto ha delle fasi dell'efficacia collegate e che sono firmate digitalmente, conservo anche quelle //se c'è la firma tradizionale, non multifirma View viewFasi = db.getView("key-AT-FF-ForTab"); if (viewFasi!=null) { lotus.domino.DocumentCollection dc = viewFasi.getAllDocumentsByKey(doc.getUniversalID(),true); lotus.domino.Document documento = dc.getFirstDocument(); while (documento != null) { if (DEBUG) System.out.println("---->GESTIONE FASI"); if (documento.getItemValueString("WordDocID4")!=null && !documento.getItemValueString("WordDocID4").equals("")) { Document fase = view.getDocumentByKey(documento.getItemValueString("WordDocID4"), true); if (fase!=null) { id = getAllegati(fase,totAllegati,id,""+documento.getItemValueDouble("Numero")); } } else { if (documento.getItemValueString("WordDocID3")!=null && !documento.getItemValueString("WordDocID3").equals("")) { Document fase = view.getDocumentByKey(documento.getItemValueString("WordDocID3"), true); if (fase!=null) { id = getAllegati(fase,totAllegati,id,""+documento.getItemValueDouble("Numero")); } } } lotus.domino.Document tmpRecycle = null; tmpRecycle = documento; documento = dc.getNextDocument(documento); tmpRecycle.recycle(); } } } // M5.AT // Update del registro protocollo già conservato nel caso di modifica/annullamento di un protocollo //if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS") && doc.getItemValueString("Firmato").equals("SI")) { if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS")) { // String dataGG = doc.getItemValueString("dataGG"); // String dataMM = doc.getItemValueString("dataMM"); // String dataAA = doc.getItemValueString("dataAA"); // int iDataGG = Integer.parseInt(dataGG); // int iDataMM = Integer.parseInt(dataMM)-1; // int iDataAA = Integer.parseInt(dataAA); String dataProtocollo[] = StringUtils.splitByWholeSeparator(doc.getItemValueString("DataRif"), "/"); String dataGG = dataProtocollo[0]; String dataMM = dataProtocollo[1]; String dataAA = dataProtocollo[2]; int iDataGG = Integer.parseInt(dataGG); int iDataMM = Integer.parseInt(dataMM)-1; int iDataAA = Integer.parseInt(dataAA); // System.out.println(dataGG+"/"+dataMM+"/"+dataAA); // ****************** ATTENZIONE: IN PRODUZIONE SCOMMENTARE IL CALCOLO CON IL +1 *************************** //Calendar calPlusOne = new GregorianCalendar(iDataAA,iDataMM,iDataGG+1); //Calendar calPlusOne = new GregorianCalendar(iDataAA,iDataMM,iDataGG); Calendar calPlusOne = new GregorianCalendar(iDataAA,iDataMM,iDataGG); DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); // Prima annullo il vecchio registro....recupero il token di conservazione dal documento profilo Map mapToken = getHashMapTokens(); if (mapToken!=null) { String newToken = (String) mapToken.get(dateFormatRG.format(calPlusOne.getTime())); if (DEBUGALLEGATI) System.out.println("NEW TOKEN DA ELIMINARE---->:" + newToken + ":provo con " + dateFormatRG.format(calPlusOne.getTime())); if (newToken!=null) { if (rettificaDocumento(newToken,doc)) { modifyToken(dateFormatRG.format(calPlusOne.getTime()),StringUtils.splitByWholeSeparator(newToken, "@@")[0]+"@@"+md5ImprontaRettificata); } rettificato = true; } } } // Tutto ciò che non sono protocolli o affissioni o fascicoli o registri if (!doc.getItemValueString("FormName").equals("M4.PR") && !doc.getItemValueString("FormName").equals("M3.PR") && !rettificato) { id = conservaDocumenti(doc,idDocumento,view); } // NUOVA GESTIONE //System.out.println("1:THEDOC_" + theDoc.getItemValueString("FormName")); String idRegistro = ""; // if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS")) { // idRegistro = conservaDocumenti(doc,idDocumento,view); // } // NUOVA GESTIONE /* String idRegistro = ""; if ( u.esiste("CS") && u.getParam("GestioneArchiviazioneSostitutiva")!=null && u.getParam("GestioneArchiviazioneSostitutiva").equals("S") && u.getParam("GAS_REG")!=null && u.getParam("GAS_REG").equals("S")) { if (esistonoProtocolli && !creatoRegistro && !erroreGlobale && !rettificato) { // REGISTRO GIORNALIERO Calendar cal = Calendar.getInstance(); //System.out.println("1 - theDOc" + theDoc); cal.add(Calendar.DATE, -1); //if (!existsEntryprofile(dateFormatRG.format(cal.getTime()))) { idRegistro = creaRegistroGiornaliero(cal,"storedCS"); //System.out.println("2 - theDOc" + theDoc); if (DEBUG) System.out.println("TOKEN del registro giornaliero:" + idRegistro); //} } } else { System.out.println("il registro non viene creato, il flag non è attivato!"); }*/ // POSIZIONE // Update del registro protocoll0 già conservato nel caso di modifica/annullamento di un protocollo if (doc.getItemValueString("FormName").equals("M4.PR") && u.getParam("GAS_REG")!=null && u.getParam("GAS_REG").equals("S")) { String dataGG = doc.getItemValueString("dataGG"); String dataMM = doc.getItemValueString("dataMM"); String dataAA = doc.getItemValueString("dataAA"); dataGG = (dataGG.length()==1?"0"+dataGG:dataGG); dataMM = (dataMM.length()==1?"0"+dataMM:dataMM); int iDataGG = Integer.parseInt(dataGG); int iDataMM = Integer.parseInt(dataMM)-1; int iDataAA = Integer.parseInt(dataAA); // ****************** ATTENZIONE: IN PRODUZIONE SCOMMENTARE IL CALCOLO CON IL +1 *************************** //Calendar calPlusOne = new GregorianCalendar(iDataAA,iDataMM,iDataGG+1); Calendar calPlusOne = new GregorianCalendar(iDataAA,iDataMM,iDataGG); // System.out.println(dataGG+"/"+dataMM+"/"+dataAA); DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); // Prima annullo il vecchio registro....recupero il token di conservazione dal documento profilo Map mapToken = getHashMapTokens(); //System.out.println(dateFormatRG.format(calPlusOne.getTime())); String newToken = (String) mapToken.get(dateFormatRG.format(calPlusOne.getTime())); //System.out.println("NEW TOKEN DA rettificare:" + newToken + ":provo con " + dateFormatRG.format(calPlusOne.getTime())); if (newToken!=null) { //if (rettificaDocumento(newToken.split("@@")[0],theDoc)) { // ...poi conservo il nuovo registro if (!vctRegistriGenerati.contains(dateFormatRG.format(calPlusOne.getTime()))) { Calendar cal = new GregorianCalendar(iDataAA,iDataMM,iDataGG); id = creaRegistroGiornaliero(cal,"storedCS"); // .. poi modifico il profile document con il nuovo id modifyToken(dateFormatRG.format(calPlusOne.getTime()),newToken); vctRegistriGenerati.add(dateFormatRG.format(calPlusOne.getTime())); //} } } } if (log.equals("") && !erroreGlobale) { // ho conservato solo i metadati, quindi non avrei nulla da scrivere. Forzo qualcosa if (log.equals("")) { log += "Documento conservato (solo metadati)"; theDoc.replaceItemValue("readyCS", "NO"); theDoc.replaceItemValue("storedCS", "SI"); } else { log += "Documento conservato"; } } Document affissioneAtto = null; if (theDoc.getItemValueString("FormName").equalsIgnoreCase("M5.AT") && (u.getParam("GAS_AT")==null || u.getParam("GAS_AT").equals("N")) && !theDoc.getItemValueString("IdAlboPretorio").equals("") && !theDoc.getItemValueString("IdAlboPretorio").equals("0") && u.getParam("GAS_AP")!=null && u.getParam("GAS_AP").equals("S")) { // Nel caso di affissione di un atto che non deve essere conservato try { affissioneAtto = db.getDocumentByUNID(theDoc.getItemValueString("IdAlboPretorio")); affissioneAtto.replaceItemValue("OpTraccia",log); u.gestioneTracciaCS(affissioneAtto, "opTraccia", "Processo di conservazione automatica"); affissioneAtto.save(true); } catch (Exception ee) {ee.printStackTrace();} } else { theDoc.replaceItemValue("OpTraccia",log); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } // ANNULLAMENTO if (!vctImpronteDaRimpiazzare.isEmpty()) { if (DEBUG) System.out.println("IMPRONTE DA RIMPIAZZARE"); lotus.domino.Item rtdelete = (Item) theDoc.getFirstItem("ImpronteConservazione"); if (rtdelete!=null) { rtdelete.remove(); } RichTextItem rt = theDoc.createRichTextItem("ImpronteConservazione"); //System.out.println("vctImpronte:" + vctImpronte); // if (DEBUG) // System.out.println("--->VETTORI MERGIATI:" + u.mergeVectors(vctImpronteDaRimpiazzare,vctImpronte)); vctImpronteDaRimpiazzare = u.mergeVectors(vctImpronteDaRimpiazzare,vctImpronte); for (int k=0;k" + (String) vctImpronteDaAnnullare.elementAt(k)); String nomeAllegatoAnnullato = StringUtils.splitByWholeSeparator((String) vctImpronteDaAnnullare.elementAt(k) , " #$# ")[0]; theDoc.replaceItemValue("OpTraccia","Annullato allegato " + nomeAllegatoAnnullato + " con motivazione: \"" + theDoc.getItemValueString("MotivazioneCS")+"\""); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); //annullaAllegato(theDoc,tokenCS,nomeAllegatoAnnullato,(String) vctImpronteDaAnnullare.elementAt(k),theDoc.getItemValueString("MotivazioneCS")); eliminaAllegato(theDoc,tokenCS,nomeAllegatoAnnullato,(String) vctImpronteDaAnnullare.elementAt(k),theDoc.getItemValueString("MotivazioneCS")); } } } if (DEBUG) System.out.println("totallegati:" +totAllegati ); // Nel caso in cui cancelli tutti gli allegati e prima ne avevo, devo annullarli tutti if (totAllegati==0 && vctImpronteDaAnnullare.size()>0) { lotus.domino.Item rtdelete = (Item) theDoc.getFirstItem("ImpronteConservazione"); if (rtdelete!=null) { rtdelete.remove(); } RichTextItem rt = theDoc.createRichTextItem("ImpronteConservazione"); if (!tokenCS.equals("")) { if (DEBUG) { System.out.println("ANNULLO CON TOKEN" + tokenCS + "<>" + vctImpronteDaAnnullare); System.out.println("MOTIVAZIONE:" + theDoc.getItemValueString("MotivazioneCS")); } // [TBD] // ********************************************************************** // ********************************************************************** for (int k=0;k" + (String) vctImpronteDaAnnullare.elementAt(k)); String nomeAllegatoAnnullato = StringUtils.splitByWholeSeparator((String) vctImpronteDaAnnullare.elementAt(k) , " #$# ")[0]; theDoc.replaceItemValue("OpTraccia","Annullato allegato " + nomeAllegatoAnnullato + " con motivazione: \"" + theDoc.getItemValueString("MotivazioneCS")+"\""); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); //annullaAllegato(theDoc,tokenCS,nomeAllegatoAnnullato,(String) vctImpronteDaAnnullare.elementAt(k),theDoc.getItemValueString("MotivazioneCS")); eliminaAllegato(theDoc,tokenCS,nomeAllegatoAnnullato,(String) vctImpronteDaAnnullare.elementAt(k),theDoc.getItemValueString("MotivazioneCS")); } } } //System.out.println("CONSERVATO?" + conservato + ">>>>" + vctTokens); if (conservato) { updateTimestamps(theDoc,vctTokens); updateImpronte(theDoc,vctImpronte); } if ((hasDocumentoCollegato && globalDocumentoCollegato!=null) && conservato) { updateTimestamps(globalDocumentoCollegato,vctTokens); updateImpronte(globalDocumentoCollegato,vctImpronte); globalDocumentoCollegato.replaceItemValue("readyCS", "NO"); globalDocumentoCollegato.replaceItemValue("storedCS", "SI"); if (!theToken.equals("")) { globalDocumentoCollegato.replaceItemValue("tokenCS", theToken); } globalDocumentoCollegato.save(true); } if (!idRegistro.equals("")) { theToken = ""; } if (DEBUG) System.out.println("erroreGlobale:" + erroreGlobale + "<>giaConservato:" + giaConservato); // Rimesso il controllo "conservato" altrimenti non toglie il documento nel caso non conservi nulla (perchè già presente) if (/*conservato &&*/ !erroreGlobale || giaConservato) { // theDoc.replaceItemValue("readyCS", "NO"); // theDoc.replaceItemValue("storedCS", "SI"); if (!theToken.equals("") && theDoc.getItemValueString("tokenCS")!=null && theDoc.getItemValueString("tokenCS").equals("") ) { if (DEBUG) System.out.println("MEMORIZZAZIONE TOKEN SUL DOCUMENTO:" + theToken + " SUL DOCUMENTO " + theDoc.getUniversalID() ); theDoc.replaceItemValue("readyCS", "NO"); theDoc.replaceItemValue("storedCS", "SI"); theDoc.replaceItemValue("tokenCS", theToken); if (doc.getItemValueString("FormName").equals("M5.AT") && doc.getItemValueString("IDAlboPretorio")!=null && !doc.getItemValueString("IDAlboPretorio").equals("") && !doc.getItemValueString("IDAlboPretorio").equals("0")) { Document affissione = view.getDocumentByKey(doc.getItemValueString("IDAlboPretorio"), true); if (affissione!=null) { affissione.replaceItemValue("readyCS", "NO"); affissione.replaceItemValue("storedCS", "SI"); affissione.replaceItemValue("tokenCS", theToken); updateTimestamps(affissione,vctTokens); affissione.replaceItemValue("OpTraccia",log); u.gestioneTracciaCS(affissione, "opTraccia", "Processo di conservazione automatica"); affissione.save(true); } } } else { if (giaConservato) { theDoc.replaceItemValue("readyCS", "NO"); theDoc.replaceItemValue("storedCS", "SI"); } } } //if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS") && doc.getItemValueString("Firmato").equals("SI") && erroreRettifica) { if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS") && erroreRettifica) { theDoc.replaceItemValue("readyCS", "SI"); theDoc.replaceItemValue("storedCS", "NO"); } // AZZERAMENTO DELLE MOTIVAZIONI theDoc.replaceItemValue("MotivazioneCS", ""); try { theDoc.save(false); } catch (Exception err32k) {} // Se l'atto è collegato ad una pubblicazione, quando viene salvato bisogna che si dica all'affissione che è conservata if (doc.getItemValueString("FormName").equals("M5.AT") && doc.getItemValueString("IDAlboPretorio")!=null && !doc.getItemValueString("IDAlboPretorio").equals("") && !doc.getItemValueString("IDAlboPretorio").equals("0")) { lotus.domino.Document affissione = view.getDocumentByKey(doc.getItemValueString("IdAlboPretorio"), true); if (affissione != null) { affissione.replaceItemValue("storedCS", "SI"); affissione.save(true); } } // Se il protocollo è collegato ad una pubblicazione, quando viene salvato bisogna che si dica all'affissione che è conservata if (doc.getItemValueString("FormName").equals("M4.PR")) { View viewProtocolliAffissioni = db.getView("key-AlboPretorio-Affissioni-Protocollo"); if (viewProtocolliAffissioni!=null) { lotus.domino.Document affissione = viewProtocolliAffissioni.getDocumentByKey(doc.getUniversalID(), true); if (affissione != null) { affissione.replaceItemValue("storedCS", "SI"); affissione.save(true); } } } // Qui si può provare ad eliminare il documento registroCS!!!!!!!!!!!!!!! //if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS") && doc.getItemValueString("Firmato").equals("SI") && !erroreRettifica) { //if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS") && !erroreRettifica && !erroreGlobale) { if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS")) { try { if (!erroreTimeout) { boolean rimossoDoc = doc.removePermanently(true); if (DEBUG) System.out.println("RIMOSSO DOCUMENTO:" + rimossoDoc); } } catch (Exception eee) {} } hasDocumentoCollegato = false; globalDocumentoCollegato = null; rettificato = false; erroreRettifica = false; //System.out.println("AZZERO THE TOKEN!!!!!!!!!!!!"); theToken = ""; tokenCS = ""; nAllegati = 0; idRegistro = ""; } // doc != null } // view != null String out = ""; for (int k=0;k" + outList[i]); } } private boolean docGiaConservato(Document doc) throws NotesException { // TODO Auto-generated method stub boolean ret = false; if (doc != null) { RichTextItem rt = (RichTextItem)doc.getFirstItem("ImpronteConservazione"); if (rt != null && !rt.getUnformattedText().trim().equals("")) ret = true; } return ret; } public boolean existsEntryprofile(String data) throws NotesException { boolean ret = false; Document newDoc = db.getProfileDocument("RegistroGiornaliero", "CS"); RichTextItem rt = (RichTextItem)newDoc.getFirstItem("DateToken"); if (rt==null) { return ret; } Map mapToken = getHashMapTokens(); if (mapToken.containsKey(data)) { ret = true; } return ret; } public void modifyToken(String data, String newToken) throws NotesException { Document newDoc = db.getProfileDocument("RegistroGiornaliero", "CS"); // Gestione del documento di registro protocollo RichTextItem rt = (RichTextItem)newDoc.getFirstItem("DateToken"); if (DEBUG) { //System.out.println("---->" + rt.getUnformattedText()); System.out.println("DATA DA SOSTITUIRE---->" + data + " e token " + newToken); } Map mapToken = getHashMapTokens(); if (mapToken.containsKey(data)) { mapToken.put(data,newToken); String outString = ""; Iterator it = mapToken.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = (Map.Entry)it.next(); outString += pair.getKey()+"§#§"+pair.getValue()+ (it.hasNext()?"§§":""); it.remove(); // avoids a ConcurrentModificationException } rt.remove(); rt = newDoc.createRichTextItem("DateToken"); rt.appendText(outString); rt.compact(); rt.update(); newDoc.save(true,true); } else { System.out.println("Key non trovata!"); } } public void eraseEntryProfile(String data) throws NotesException { // TODO Auto-generated method stub Document newDoc = db.getProfileDocument("RegistroGiornaliero", "CS"); // Gestione del documento di registro protocollo DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar today = Calendar.getInstance(); RichTextItem rt = (RichTextItem)newDoc.getFirstItem("DateToken"); Map mapToken = getHashMapTokens(); if (mapToken.containsKey(data)) { mapToken.remove(data); String outString = ""; Iterator it = mapToken.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = (Map.Entry)it.next(); outString += pair.getKey()+"§#§"+pair.getValue()+ (it.hasNext()?"§§":""); it.remove(); // avoids a ConcurrentModificationException } rt.remove(); rt = newDoc.createRichTextItem("DateToken"); rt.appendText(outString); rt.compact(); rt.update(); newDoc.save(true,true); } else { System.out.println("Key non trovata!"); } System.out.println("NUOVO PROFILE---->" + rt.getUnformattedText()); } private void eliminaAllegato(Document doc,String tokenCS, String nomeAllegatoAnnullato, String element, String motivazione) throws NotesException, IOException { Elimina elimina = new Elimina(); EsibisciArgs ea = null; ea = new EsibisciArgs(); if (DEBUG) System.out.println("tokenCS Elimina" + tokenCS); ea.setTokenID(Integer.parseInt(tokenCS)); String hash = StringUtils.splitByWholeSeparator(element," #$# ")[1].trim(); if (DEBUG) System.out.println("HASH Elimina" + hash); ea.setHash(hash); FileFlags flags = new FileFlags(); FileFlags_type0[] flag = new FileFlags_type0[1]; flag[0] = FileFlags_type0.AllZip; flags.setFileFlags_type0(flag); ea.setReturnFlags(flags); elimina.setEsibisciInfo(ea); elimina.setInfoLogin(lm); EliminaResponse response = null; String errorMessage =""; try { response = stub.Elimina(elimina); } catch (Exception eee) { errorMessage = eee.getMessage(); eee.printStackTrace(); } if (response != null) { ResponseStatusCode status = response.getEliminaResult().getStatus(); if (DEBUG) System.out.println("STATUS ELIMINAZIONE: " + status); if (status.getValue().toLowerCase().equals("errore")) { if (response.getEliminaResult().getDescrizione().indexOf("presente")!=-1) { setLog(TEMP,response.getEliminaResult().getDescrizione(), "[INFO EliminaAllegato" + theDoc.getUniversalID()+ " ]"); } else { setLog(TEMP,response.getEliminaResult().getDescrizione(), "[ERROR EliminaAllegato " + theDoc.getUniversalID()+ "]"); } theDoc.replaceItemValue("OpTraccia",response.getEliminaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - errore eliminazione"); } else { theDoc.replaceItemValue("OpTraccia",response.getEliminaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - eliminazione avvenuta"); } } else { erroreGlobale = true; setLog(TEMP,errorMessage, "[ERROR]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - eliminazione"); } } private void annullaAllegato(Document doc,String tokenCS, String nomeAllegatoAnnullato, String element, String motivazione) throws NotesException, IOException { // EmbeddedObject eo = doc.getAttachment(nomeAllegatoAnnullato); // if (eo != null && eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { if (DEBUG) System.out.println("***************** GESTIONE ANNULLAMENTO ALLEGATI **************************" + element + "con motivazione: " + motivazione + " e token" + tokenCS); Rettifica rettifica = new Rettifica(); rettifica.setInfoLogin(lm); RettificaInfo ri = null; ri = new RettificaInfo(); if (DEBUG) System.out.println("SALTO LA PARTE DEL FILE, LAVORO SOLO CON HASH " + StringUtils.splitByWholeSeparator(element," #$# ")[1]); File file = null; file = new File(); // // InputStreamDataSource ids = new InputStreamDataSource(eo.getInputStream()); // DataHandler dh = new DataHandler(ids); // // file.setBuffer(setMTOMEncoding(dh)); String hash = StringUtils.splitByWholeSeparator(element," #$# ")[1].trim(); if (DEBUG) { System.out.println("RETTIFICA - PASSO LA HASH " + hash + " nella cartella /" + pathConservazione ); System.out.println("RETTIFICA - MimeType " + getMimeType(nomeAllegatoAnnullato)); System.out.println("RETTIFICA - nomeAllegatoAnnullato " + strip(nomeAllegatoAnnullato)); } file.setCartella("/"+pathConservazione); //file.setHash(StringUtils.splitByWholeSeparator(element," #$# ")[1]); file.setHash(hash); file.setMime(getMimeType(nomeAllegatoAnnullato)); file.setNomeFile(strip(nomeAllegatoAnnullato)); ri.setFile(file ); ri.setTokenID(Integer.parseInt(tokenCS)); ri.setHash(hash); rettifica.setConservationInfo(ri); // eo.recycle(); RettificaResponse response = null; String errorMessage =""; String id = ""; try { response = stub.Rettifica(rettifica); } catch (Exception eee) { errorMessage = eee.getMessage(); eee.printStackTrace(); } if (response != null) { ResponseStatusCode status = response.getRettificaResult().getStatus(); if (status.getValue().toLowerCase().equals("errore")) { if (response.getRettificaResult().getDescrizione().indexOf("presente")!=-1) { setLog(TEMP,response.getRettificaResult().getDescrizione(), "[INFO Rettifica" + theDoc.getUniversalID()+ "]"); } else { setLog(TEMP,response.getRettificaResult().getDescrizione(), "[ERROR Rettifica " + theDoc.getUniversalID()+ "]"); } theDoc.replaceItemValue("OpTraccia",response.getRettificaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } else { id = ""+response.getRettificaResult().getTokenID(); } // theToken = id; // if (DEBUGALLEGATI) // System.out.println("NOME ALLEGATO CONSERVATO:" + strip(nomeAllegatoAnnullato) + " LUNGHEZZA:" + strip(nomeAllegatoAnnullato).length()+"<>CON TOKEN:" + theToken); } else { erroreGlobale = true; setLog(TEMP,errorMessage, "[ERROR]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } // } } public void eliminaDocumento(String tokenCS, Document doc) throws NotesException, IOException { theDoc = doc; eliminaDocumento(tokenCS); } private boolean eliminaDocumento(String tokenCS) throws NotesException, IOException { boolean ret = false; Elimina elimina = new Elimina(); EsibisciArgs ea = null; ea = new EsibisciArgs(); if (DEBUG) System.out.println("tokenCS Elimina" + tokenCS); ea.setTokenID(Integer.parseInt(tokenCS)); FileFlags flags = new FileFlags(); FileFlags_type0[] flag = new FileFlags_type0[1]; flag[0] = FileFlags_type0.AllZip; flags.setFileFlags_type0(flag); ea.setReturnFlags(flags); elimina.setEsibisciInfo(ea); elimina.setInfoLogin(lm); EliminaResponse response = null; String errorMessage =""; try { response = stub.Elimina(elimina); } catch (Exception eee) { errorMessage = eee.getMessage(); eee.printStackTrace(); } if (response != null) { ResponseStatusCode status = response.getEliminaResult().getStatus(); if (DEBUG) System.out.println("STATUS ELIMINAZIONE: " + status); if (status.getValue().toLowerCase().equals("errore")) { if (response.getEliminaResult().getDescrizione().indexOf("presente")!=-1) { setLog(TEMP,response.getEliminaResult().getDescrizione(), "[INFO Elimina " + theDoc.getUniversalID()+ "]"); } else { setLog(TEMP,response.getEliminaResult().getDescrizione(), "[ERROR EliminaDocumento " + theDoc.getUniversalID()+ "]"); } theDoc.replaceItemValue("OpTraccia",response.getEliminaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - errore eliminazione"); } else { theDoc.replaceItemValue("OpTraccia",response.getEliminaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - eliminazione avvenuta"); ret = true; } } else { erroreGlobale = true; setLog(TEMP,errorMessage, "[ERROR]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica - eliminazione"); } return ret; } public boolean rettificaDocumento(String tokenCS, Document doc) throws Exception { boolean ret = false; Rettifica rettifica = new Rettifica(); rettifica.setInfoLogin(lm); RettificaInfo ri = null; ri = new RettificaInfo(); File file = null; file = new File(); //System.out.println(doc.getItemValueString("FormName")); Vector vctNomeAllegato = session.evaluate("@attachmentNames",doc); String nomeAllegatoRettifica = (String)vctNomeAllegato.elementAt(0); String toSplit = tokenCS; if (DEBUG) System.out.println("toSplit:" + toSplit); tokenCS = StringUtils.splitByWholeSeparator(toSplit, "@@")[0]; if (DEBUGALLEGATI) { System.out.println("NOME ALLEGATO RETTIFICA:" + nomeAllegatoRettifica); System.out.println("TOKENCS:" + tokenCS); } EmbeddedObject eo = doc.getAttachment(nomeAllegatoRettifica); if (DEBUG) { if (eo != null) { System.out.println("RETTIFICA: L'EO:" + eo.getName()); } else { System.out.println("RETTIFICA: L'EO E' NULLO"); } } if (eo != null && eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { InputStreamDataSource ids = new InputStreamDataSource(eo.getInputStream()); DataHandler dh = new DataHandler(ids); file.setBuffer(setMTOMEncoding(dh)); file.setCartella("/"+pathConservazione); file.setMime(getMimeType(nomeAllegatoRettifica)); //System.out.println("NOME ALLE RETTIFICA:" + nomeAllegatoRettifica + "<>STRIPPATO: " + strip(nomeAllegatoRettifica)); SimpleDateFormat sdfNow = new SimpleDateFormat("HHmmss"); Calendar calNow = Calendar.getInstance(); //file.setNomeFile(strip(nomeAllegatoRettifica).split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime())+".pdf.p7m"); file.setNomeFile(strip(nomeAllegatoRettifica).split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime())+".pdf" + (nomeAllegatoRettifica.indexOf(".p7m")!=-1?".p7m":"")); md5ImprontaRettificata = calcolaImprontaInformatica(eo.getInputStream()); file.setHash(md5ImprontaRettificata); ri.setFile(file ); ri.setTokenID(Integer.parseInt(tokenCS)); Attributi attributi = null; if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS")) { if (DEBUG) System.out.println("IMPOSTO ATTRIBUTI PER REGISTRO GIORNALIERO"); try { attributi = getAttributiRegistroProtocollo(theDoc); ri.setAttributiSpecifici(attributi); } catch (Exception e) { erroreGlobale = true; } } String hash = StringUtils.splitByWholeSeparator(toSplit, "@@")[1]; if (DEBUG) System.out.println("############ LA HASH CON CUI RETTIFICO::" + hash); ri.setHash(hash); rettifica.setConservationInfo(ri); RettificaResponse response = null; String errorMessage =""; String id = ""; try { response = stub.Rettifica(rettifica); } catch (Exception eee) { errorMessage = eee.getMessage(); eee.printStackTrace(); } if (response != null) { ResponseStatusCode status = response.getRettificaResult().getStatus(); if (DEBUG) System.out.println("STATUS RETTIFICA*****************: " + status); if (status.getValue().toLowerCase().equals("errore")) { ret = false; if (response.getRettificaResult().getDescrizione().indexOf("presente")!=-1) { setLog(TEMP,response.getRettificaResult().getDescrizione(), "[INFO RettificaDocumento " + theDoc.getUniversalID()+ "]"); } else { setLog(TEMP,response.getRettificaResult().getDescrizione(), "[ERROR RettificaDocumento " + theDoc.getUniversalID()+ "]"); } theDoc.replaceItemValue("OpTraccia",response.getRettificaResult().getDescrizione()); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); erroreRettifica = true; } else { id = ""+response.getRettificaResult().getTokenID(); ret = true; } // theToken = id; // if (DEBUGALLEGATI) // System.out.println("NOME ALLEGATO CONSERVATO:" + strip(nomeAllegatoAnnullato) + " LUNGHEZZA:" + strip(nomeAllegatoAnnullato).length()+"<>CON TOKEN:" + theToken); } else { ret = false; erroreRettifica = true; setLog(TEMP,errorMessage, "[ERROR]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } eo.recycle(); } return ret; } private void updateTimestamps(Document doc, Vector vctTokens) throws NotesException { RichTextItem rt = (RichTextItem)doc.getFirstItem("Timestamps"); if (rt == null) { rt = doc.createRichTextItem("Timestamps"); } for (int k=0;k" + data_da_doc.toString() + "<>" + data_a_doc.toString()); event.setTitle("Registro protocollo - Anno "+yearInString); event.setMidleTitle("Ordinati per numero"); String comune = u.getParam("Comune"); String comune1 = u.getParam("ComuneSegnatura1"); String comune2 = u.getParam("ComuneSegnatura2"); comune = (comune1.equals("") && comune2.equals("")?comune:comune1+" - " + comune2); event.setCity(comune); newPDF.add(tmpPDF.generateTable(yearInString, data_da_doc, data_a_doc, "","",field)); // Finish newPDF.close(); writer.close(); FileInputStream ins = new FileInputStream(TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf"); InputStream is = new FileInputStream(TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf"); //String impronta = calcolaImprontaInformatica(is); md5Impronta = calcolaImprontaInformatica(is); if (!hasImpronta(theDoc,"Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf" + " #$# " + md5Impronta)) { setLog(TEMP,"File \"" + "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf" + "\" generato.", "[INFO]"); View vRegistri = db.getView("lastModifiedDocuments"); //System.out.println("1 - VADO CON LA DATA " + dateFormatRG.format(cal.getTime()) ); Document registro = vRegistri.getDocumentByKey(dateFormatRG.format(cal.getTime()), true); if (registro != null) { // System.out.println("RIMUOVO PERMANENTEMENTE 1"); //registro.removePermanently(true); if (u.getParam("GAS_FIRMA_REG")!=null && u.getParam("GAS_FIRMA_REG").equals("S")) { registro.replaceItemValue("ReadyCS","NO"); } else { registro.replaceItemValue("ReadyCS","SI"); } Vector evv = session.evaluate("@attachmentNames", registro); for(int k=0; k < evv.size(); k++) { //System.out.println("-->" + evv.get(k).toString().trim()); EmbeddedObject eo = registro.getAttachment(evv.get(k).toString().trim()); if (eo !=null && eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { eo.remove(); registro.removeItem("AeDAttachmentField"); registro.save(true); } } RichTextItem file = null; if(registro.hasItem("AeDAttachmentField")) { file = (RichTextItem)registro.getFirstItem("AeDAttachmentField"); } else { file = registro.createRichTextItem("AeDAttachmentField"); } file.embedObject(EmbeddedObject.EMBED_ATTACHMENT,"", TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf", "registro"); registro.replaceItemValue("primoNumero",""+tmpPDF.gPrimoNumero); registro.replaceItemValue("ultimoNumero",""+tmpPDF.gUltimoNumero); registro.save(true,true); } else { lotus.domino.Document newdoc = db.createDocument(); if (DEBUG) System.out.println("****************** CREO IL DOCUMENTO REGISTRO!!!!!"); newdoc.replaceItemValue("Form","RegistroGiornalieroCS"); newdoc.replaceItemValue("FormName","RegistroGiornalieroCS"); if (u.getParam("GAS_FIRMA_REG")!=null && u.getParam("GAS_FIRMA_REG").equals("S")) { newdoc.replaceItemValue("ReadyCS","NO"); } else { newdoc.replaceItemValue("ReadyCS","SI"); } newdoc.replaceItemValue("Eliminato","NO"); newdoc.replaceItemValue("Cancellato","NO"); newdoc.replaceItemValue("Fittizio","NO"); newdoc.replaceItemValue("Firmato","NO"); Calendar calendar = Calendar.getInstance(); Date date = dateFormatRG.parse(dateFormatRG.format(cal.getTime())); calendar.setTime(date); // System.out.println("******* GIORNO" + date.getDay()+"<>MESE:"+date.getMonth()+"<>MESE-1:" + (date.getMonth()-1)+"<>ANNO:" + date.getYear()); int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); // System.out.println("DAY OF YEAR:" + dayOfYear); newdoc.replaceItemValue("Numero",new Integer(dayOfYear)); newdoc.replaceItemValue("DataRif", dateFormatRG.format(cal.getTime())); Calendar oggi = Calendar.getInstance(); newdoc.replaceItemValue("DataStampa", dateFormatRG.format(oggi.getTime())); if (DEBUG) { System.out.println("MEMORIZZO IMPRONTA " + md5Impronta + " SUL REGISTRO GIORNALIERO"); } newdoc.replaceItemValue("Hash", md5Impronta); RichTextItem body = newdoc.createRichTextItem("AeDAttachmentField"); body.embedObject(EmbeddedObject.EMBED_ATTACHMENT,"", TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf", "registro"); Vector dAuthors = new Vector(); dAuthors.addElement("[AutoriNoSec]"); //imposta gli authors Item authorsItem = newdoc.replaceItemValue("DocAuthors",null); authorsItem.setValues(dAuthors); authorsItem.setAuthors(true); Vector dReaders = newdoc.getItemValue("DocReaders"); Item readersItem = newdoc.replaceItemValue("DocReaders", ""); readersItem.setValues(dReaders); newdoc.replaceItemValue("primoNumero",""+Registro.gPrimoNumero); newdoc.replaceItemValue("ultimoNumero",""+Registro.gUltimoNumero); newdoc.save(true,true); } } ins.close(); is.close(); return ret; } private int globalPrimoNumero; private int globalUltimoNumero; public String creaRegistroGiornalieroOneShot(Calendar cal, String field) throws Exception { String ret = ""; DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); View v = db.getView("search-ProtocolloAnno"); String query = "NOT [Cancellato] = \"SI\" AND NOT [Eliminato] = \"SI\" AND NOT [InviatoM2] = \"SI\" AND NOT [Fittizio] = \"SI\""; query += " AND NOT [Numero] = 0"; query += " AND [DataDisplay] = " +dateFormatRG.format(cal.getTime()); int matches = v.FTSearch(query,0); if (matches==0) { System.out.println("NESSUN PROTOCOLLO per la data " + dateFormatRG.format(cal.getTime())); return ret; } java.io.File dir = new java.io.File(TEMP +"protocolli"); if(!dir.exists()) dir.mkdirs(); com.lowagie.text.Document newPDF = new com.lowagie.text.Document(com.lowagie.text.PageSize.A4.rotate()); Registro tmpPDF = new Registro(session); int year = cal.get(Calendar.YEAR); String yearInString = String.valueOf(year); PdfWriter writer = com.lowagie.text.pdf.PdfWriter.getInstance(newPDF, new FileOutputStream(TEMP +"protocolli" + java.io.File.separator + "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf")); //writer.setPdfVersion(PdfWriter.PDF_VERSION_1_4); //writer.setTagged(); // You need to set this flag.iText does lots of work when this flag is set. //writer.setPDFXConformance(PdfWriter.PDFA1A); // FontFactory.register(TEMP+"Helvetica.afm", "my_bold_font"); // Font myBoldFont = FontFactory.getFont("my_bold_font"); // BaseFont bf = myBoldFont.getBaseFont(); //writer.setPDFXConformance(PdfWriter.PDFA1A); //writer.createXmpMetadata(); IntestazioneBase event = new RegistroIntestazione(); writer.setPageEvent((PdfPageEvent) event); newPDF.setMargins(MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MARGIN_BOTTOM); //Open document and write The Contents To the PDF newPDF.open(); Font font = FontFactory.getFont(TEMP+"Helvetica.afm", BaseFont.CP1252, BaseFont.EMBEDDED); SimpleDateFormat dateForm = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); // la data di ieri!!!!! //System.out.println("GENERO PER " + dateFormatRG.format(cal.getTime())); Date data_da_doc = (Date)dateForm.parse(dateFormatRG.format(cal.getTime()) + " 00:00:00"); Date data_a_doc = (Date)dateForm.parse(dateFormatRG.format(cal.getTime()) + " 24:00:00"); //System.out.println("-->" + data_da_doc.toString() + "<>" + data_a_doc.toString()); event.setTitle("Registro protocollo - Anno "+yearInString); event.setMidleTitle("Ordinati per numero"); String comune = u.getParam("Comune"); String comune1 = u.getParam("ComuneSegnatura1"); String comune2 = u.getParam("ComuneSegnatura2"); comune = (comune1.equals("") && comune2.equals("")?comune:comune1+" - " + comune2); event.setCity(comune); newPDF.add(tmpPDF.generateTable(yearInString, data_da_doc, data_a_doc, "","",field)); globalPrimoNumero = tmpPDF.gPrimoNumero; globalUltimoNumero = tmpPDF.gUltimoNumero; // Finish newPDF.close(); writer.close(); FileInputStream ins = new FileInputStream(TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf"); InputStream is = new FileInputStream(TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf"); //String impronta = calcolaImprontaInformatica(is); md5Impronta = calcolaImprontaInformatica(is); setLog(TEMP,"File \"" + "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf" + "\" generato.", "[INFO]"); creaDocumentoRegistro(cal); ins.close(); is.close(); return ret; } private void creaDocumentoRegistro(Calendar cal) throws NotesException, ParseException { DateFormat dateFormatRG = new SimpleDateFormat("dd/MM/yyyy"); // TODO Auto-generated method stub View vRegistri = db.getView("lastModifiedDocuments"); if (DEBUG) System.out.println("VADO CON LA DATA " + dateFormatRG.format(cal.getTime()) ); Document registro = vRegistri.getDocumentByKey(dateFormatRG.format(cal.getTime()), true); if (registro != null) { //registro.removePermanently(true); if (DEBUG) System.out.println("SOSTITUISCO IL REGISTRO GIA' PRESENTE"); Vector evv = session.evaluate("@attachmentNames", registro); for(int k=0; k < evv.size(); k++) { //System.out.println("-->" + evv.get(k).toString().trim()); EmbeddedObject eo = registro.getAttachment(evv.get(k).toString().trim()); if (eo !=null && eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { eo.remove(); registro.removeItem("AeDAttachmentField"); registro.save(true); } } RichTextItem file = null; if(registro.hasItem("AeDAttachmentField")) { file = (RichTextItem)registro.getFirstItem("AeDAttachmentField"); } else { file = registro.createRichTextItem("AeDAttachmentField"); } file.embedObject(EmbeddedObject.EMBED_ATTACHMENT,"", TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf", "registro"); registro.replaceItemValue("primoNumero",""+globalPrimoNumero); registro.replaceItemValue("ultimoNumero",""+globalUltimoNumero); registro.save(true,true); } else { lotus.domino.Document newdoc = db.createDocument(); if (DEBUG) System.out.println("****************** CREO IL DOCUMENTO REGISTRO!!!!!"); newdoc.replaceItemValue("Form","RegistroGiornalieroCS"); newdoc.replaceItemValue("FormName","RegistroGiornalieroCS"); if (u.getParam("GAS_FIRMA_REG")!=null && u.getParam("GAS_FIRMA_REG").equals("S")) { newdoc.replaceItemValue("ReadyCS","NO"); } else { newdoc.replaceItemValue("ReadyCS","SI"); } newdoc.replaceItemValue("Eliminato","NO"); newdoc.replaceItemValue("Cancellato","NO"); newdoc.replaceItemValue("Fittizio","NO"); newdoc.replaceItemValue("Firmato","NO"); Calendar calendar = Calendar.getInstance(); // 0004271: Conservazione a Poviglio - verifiche per numero di registro giornaliero inviato // System.out.println("++++++" + dateFormatRG.format(cal.getTime())); Date date = dateFormatRG.parse(dateFormatRG.format(cal.getTime())); calendar.setTime(date); System.out.println("2******* GIORNO" + date.getDay()+"<>MESE:"+date.getMonth()+"<>MESE-1:" + (date.getMonth()-1)+"<>ANNO:" + date.getYear()); // FINE 0004271: Conservazione a Poviglio - verifiche per numero di registro giornaliero inviato int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("2 DAY OF YEAR:" + dayOfYear); newdoc.replaceItemValue("Numero",new Integer(dayOfYear)); newdoc.replaceItemValue("DataRif", dateFormatRG.format(cal.getTime())); Calendar oggi = Calendar.getInstance(); newdoc.replaceItemValue("DataStampa", dateFormatRG.format(oggi.getTime())); if (DEBUG) { System.out.println("MEMORIZZO IMPRONTA " + md5Impronta + " SUL REGISTRO GIORNALIERO"); } newdoc.replaceItemValue("Hash", md5Impronta); newdoc.replaceItemValue("primoNumero",""+globalPrimoNumero); newdoc.replaceItemValue("ultimoNumero",""+globalUltimoNumero); RichTextItem body = newdoc.createRichTextItem("AeDAttachmentField"); body.embedObject(EmbeddedObject.EMBED_ATTACHMENT,"", TEMP +"protocolli" + java.io.File.separator+ "Registro_giornaliero_"+ StringUtils.replace(dateFormatRG.format(cal.getTime()),"/","-",-1) +".pdf", "registro"); Vector dAuthors = new Vector(); dAuthors.addElement("[AutoriNoSec]"); //imposta gli authors Item authorsItem = newdoc.replaceItemValue("DocAuthors",null); authorsItem.setValues(dAuthors); authorsItem.setAuthors(true); Vector dReaders = newdoc.getItemValue("DocReaders"); Item readersItem = newdoc.replaceItemValue("DocReaders", ""); readersItem.setValues(dReaders); newdoc.save(true,true); } } // Controlla se un'impronta è contenuta nella lista delle impronte salvate sul documento private boolean hasImpronta(Document docImpronta, String impronta) throws NotesException { boolean ret = false; if (docImpronta==null) { return ret; } try { //System.out.println("thedoc:" + theDoc.getUniversalID()); RichTextItem rt = (RichTextItem)docImpronta.getFirstItem("ImpronteConservazione"); if (rt == null) return false; String impronte = rt.getUnformattedText(); //System.out.println(impronta + "<>IMPRONTE PER VERIFICA:" + impronte); String[] vctTmpImpronte = StringUtils.splitByWholeSeparator(impronte, "§§"); if (Arrays.asList(vctTmpImpronte).contains(impronta)) { ret = true; } // if (vctImpronte.contains(impronta)) { // ret = true; // } } catch (Exception e) {System.out.println("ERRORE IMPRONTA");} return ret; } private String conservaDocumenti(Document doc, String idDocumento, View view) throws NotesException, IOException { String id = ""; // Per gli altri tipi di documenti View vistaImg = dbTarget.getView("IDPadre"); // ##DEBUG## //System.out.println("IN CONSERVA DOCUMENTI" + idDocumento + "..view:" + view.getName() ); if (vistaImg != null) { // PER LA PARTE IMMAGINI lotus.domino.DocumentCollection dc = vistaImg.getAllDocumentsByKey(idDocumento, true); lotus.domino.Document documento = dc.getFirstDocument(); while (documento != null) { id = getAllegati(documento,totAllegati,id); lotus.domino.Document tmpRecycle = null; tmpRecycle = documento; documento = dc.getNextDocument(documento); tmpRecycle.recycle(); } } lotus.domino.DocumentCollection dc = view.getAllDocumentsByKey(idDocumento, true); lotus.domino.Document documento = dc.getFirstDocument(); while (documento != null) { //id = getAllegati(documento,totAllegati,id); // Documento principale nella forma p7m String idDocumentoPrincipale = getIDDocumentoPrincipale(documento); if (idDocumentoPrincipale != null && !idDocumentoPrincipale.equals("")) { lotus.domino.Document docPrincipale = null; docPrincipale = getDocumentoPrincipale(idDocumentoPrincipale,db); if (docPrincipale != null) { id = getAllegati(docPrincipale,totAllegati,id); docPrincipale.recycle(); } } // Allegati "sfoglia" id = getAllegati(documento,totAllegati,id); lotus.domino.Document tmpRecycle = null; tmpRecycle = documento; documento = dc.getNextDocument(documento); //tmpRecycle.recycle(); } //} return id; } private String getIDDocumentoPrincipale(Document documento) throws NotesException { String ret = ""; if (documento.getItemValueString("FormName") != null && ( documento.getItemValueString("FormName").equals("M2.DO") || documento.getItemValueString("FormName").equals("M7.CO") || documento.getItemValueString("FormName").equals("M5.AT") )) { ret = (documento.getItemValueString("WordDocID")!=null && !documento.getItemValueString("WordDocID").equals("")?documento.getItemValueString("WordDocID"):ret); ret = (documento.getItemValueString("WordDocID2")!=null && !documento.getItemValueString("WordDocID2").equals("")?documento.getItemValueString("WordDocID2"):ret); ret = (documento.getItemValueString("WordDocID3")!=null && !documento.getItemValueString("WordDocID3").equals("")?documento.getItemValueString("WordDocID3"):ret); ret = (documento.getItemValueString("WordDocID4")!=null && !documento.getItemValueString("WordDocID4").equals("")?documento.getItemValueString("WordDocID4"):ret); } //if (documento.getItemValueString("FormName") != null && documento.getItemValueString("FormName").equals("M3.PR")) { // [TBD] PER I FASCICOLI - probabilmente non serve //} return ret; } String numeroFasePerNomeAllegato = ""; private String getAllegati(Document fase, int totAllegati, String id, String numeroFase) throws NotesException, IOException { numeroFasePerNomeAllegato = numeroFase; id = getAllegati(fase,totAllegati,id); numeroFasePerNomeAllegato = ""; return id; } private String getAllegati(Document doc, int totAllegati1, String id) throws IOException, NotesException { // TODO Auto-generated method stub String ret = ""; Vector ev = session.evaluate("@attachmentNames", doc); for(int j=0; j < ev.size(); j++) { //totAllegati++; String nomeAllegato = ev.get(j).toString().trim(); if (DEBUG) System.out.println("INCREMENTO LA TOT ALLEGATI:" + totAllegati + " con NOME: " + nomeAllegato + "<"); EmbeddedObject eo = doc.getAttachment(nomeAllegato); if (eo != null && eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { try { totAllegati++; // Solo allegati firmati digitalmente, altrimenti il conservatore li rifiuta String fileExt = FilenameUtils.getExtension(nomeAllegato); fileExt = fileExt.toLowerCase(); // if (DEBUG) // System.out.println("------>ESTENSIONE" + fileExt); // Conservo se fa parte delle estensioni abilitate e se non è stato spuntato per l'esclusione dalla CS // if(DEBUGALLEGATI) // System.out.println("NOME ALLEGATO:" + nomeAllegato.replace(" - ", " - ") +"<>"+ listCSExclusions); // FORCE ERROR //listExtensions=null; nomeAllegato = (doc.getItemValueString("FormName").equals("M4.PR")?nomeAllegato:nomeAllegato.replace(" - ", " - ")); nomeAllegato = (numeroFasePerNomeAllegato.equals("")?nomeAllegato:numeroFasePerNomeAllegato+" - "+nomeAllegato); //if (Arrays.asList(listExtensions).contains(fileExt) && !Arrays.asList(listCSExclusions).contains(nomeAllegato.replace(" - ", " - ")) ) { if (Arrays.asList(listExtensions).contains(fileExt) && !Arrays.asList(listCSExclusions).contains(nomeAllegato) ) { ret += conserva(eo,totAllegati,nomeAllegato,id,doc); } eo.recycle(); } catch (Exception ee) { erroreGlobale = true; setLog(TEMP,"Errore nella conservazione del file \"" + nomeAllegato + "\"", "[ERROR(1) ConservazioneDocumento " + theDoc.getUniversalID()+ "]"); if (DEBUG) System.out.println("Errore nella conservazione del file " + nomeAllegato);ee.printStackTrace(); } } nomeAllegato = ""; } return ret; } private lotus.domino.Document getDocumentoPrincipale(String idDocumentoPrincipale, Database db) throws NotesException { lotus.domino.Document docPrincipale = null; View v = db.getView("ID"); if (v != null) { docPrincipale = v.getDocumentByKey(idDocumentoPrincipale, true); } return docPrincipale; } private String conserva(EmbeddedObject eo, int totAllegati, String nomeAllegato, String id, Document doc) throws NotesException, Exception { //String impronta = calcolaImprontaInformatica(eo.getInputStream()); md5Impronta = calcolaImprontaInformatica(eo.getInputStream()); if (DEBUG) System.out.println("IN CONSERVAZIONE: valuto l'allegato:" + nomeAllegato); if (!hasImpronta(theDoc,nomeAllegato+ " #$# " + md5Impronta)) { // if (DEBUG) // System.out.println("-------->eo.getInputStream():" +eo.getFileSize()+"<>" + eo.getName()); String idCons = doConserva(nomeAllegato,eo.getInputStream(),doc); eo.recycle(); if (!idCons.equals("")) { String[] tmpstr = {idCons,md5Impronta}; outerArr.add(tmpstr); String[] outString = {nomeAllegato,idCons,md5Impronta}; listGiornaliero.add(outString); setLog(TEMP,"File \"" + nomeAllegato + "\" conservato. Token: " + idCons + " - Impronta: " + md5Impronta, "[INFO]"); log += (log.equals("")?"File inviati in conservazione digitale: ":", ")+"\"" + nomeAllegato + "\""; conservato = true; //id = (totAllegati>1?"§§":"") + idCons; //vctTokens.addElement(nomeAllegato + " - " + idCons) //System.out.println("TIMESTAMP:" + nomeAllegato + " #$# " + idCons + "§ddd§" + dateFormat.format(date)); //vctTokens.addElement(nomeAllegato + " #$# " + idCons + "§ddd§" + dateFormat.format(date)); if (!vctTokens.contains("PacchettoVersato.zip" + " #$# " + idCons + "§ddd§" + dateFormat.format(date))) { vctTokens.addElement("PacchettoVersato.zip" + " #$# " + idCons + "§ddd§" + dateFormat.format(date)); } //System.out.println("AGGIUNGO IMPROTA DOCUMENTO"+ nomeAllegato + " #$# " + impronta); vctImpronte.addElement(nomeAllegato + " #$# " + md5Impronta); if (vctImpronteDaAnnullare!=null && !vctImpronteDaAnnullare.contains(nomeAllegato + " #$# " + md5Impronta)) { //System.out.println("RIMUOVO DAGLI ORIGINALI---->" + (nomeAllegato + " #$# " + impronta)); vctImpronteDaAnnullare.removeElement(nomeAllegato + " #$# " + md5Impronta); } if (vctImpronteDaRimpiazzare!=null && !vctImpronteDaRimpiazzare.contains(nomeAllegato + " #$# " + md5Impronta)) { vctImpronteDaRimpiazzare.addElement(nomeAllegato + " #$# " + md5Impronta); } id = "§§" + idCons; } } else { if (DEBUG) System.out.println("ALLEGATO " + nomeAllegato + " GIA' PRESENTE"); if (vctImpronteDaAnnullare!=null && vctImpronteDaAnnullare.contains(nomeAllegato + " #$# " + md5Impronta)) { //System.out.println("RIMUOVO DAGLI ORIGINALI---->" + (nomeAllegato + " #$# " + impronta)); vctImpronteDaAnnullare.removeElement(nomeAllegato + " #$# " + md5Impronta); } if (vctImpronteDaRimpiazzare!=null && !vctImpronteDaRimpiazzare.contains(nomeAllegato + " #$# " + md5Impronta)) { vctImpronteDaRimpiazzare.addElement(nomeAllegato + " #$# " + md5Impronta); } // ATTENZIONE A QUESTO CONSERVATO giaConservato = true; } return id; } public String esibisci(String token, boolean stop) throws IOException, ADBException, XMLStreamException, ParserConfigurationException, SAXException { EsibisciArgs ea = null; ea = new EsibisciArgs(); ea.setTokenID(Integer.parseInt(token)); FileFlags flags = new FileFlags(); FileFlags_type0[] flag = new FileFlags_type0[1]; flag[0] = FileFlags_type0.AllZip; flags.setFileFlags_type0(flag); ea.setReturnFlags(flags); esibisci.setEsibisciInfo(ea); String errorMessage =""; EsibisciResponse response = null; try { response = stub.Esibisci(esibisci); } catch (Exception e) { errorMessage = e.getMessage(); } String out = ""; if (response!=null) { EsibitionResponseInfo res = response.getEsibisciResult(); ResponseStatusCode status = res.getStatus(); EsibitionResponseInfoTipoStatusFile sf = res.getStatusFiles(); if (DEBUG) { System.out.println("STATUS ESIBIZIONE::::" + res.getStatusFiles().getValue()); System.out.println("--->::::" + status.getValue().toLowerCase()); } if (status.getValue().toLowerCase().equals("errore")) { out = ""; setLog(TEMP,res.getDescrizione(), "[ERROR Esibizione]"); } else { out = res.getDescrizione(); java.io.File dir = new java.io.File(TEMP + "conservazione" + java.io.File.separator + token); if(!dir.exists()) dir.mkdirs(); ArrayOfFileBase afb = res.getFiles(); FileBase[] fb = afb.getFileBase(); if (DEBUGESIBISCI) System.out.println("Numero File:"+fb.length); for (int i=0;iINPUTSTEAM:" + is.available()); if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { Calendar calNow = Calendar.getInstance(); SimpleDateFormat sdfNow = new SimpleDateFormat("HHmmss"); if (DEBUG) System.out.println("METTO NELLA CARTELLA:" + "/"+pathConservazione+"/" + "REGISTROGIORNALIERO_" + nomeAllegato.split("_")[2].split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime()) ); //f.setNomeFile(strip(nomeAllegato).split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime())+".pdf.p7m"); f.setNomeFile(strip(nomeAllegato).split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime())+".pdf" + (nomeAllegato.indexOf(".p7m")!=-1?".p7m":"")); f.setCartella("/" + "REGISTROGIORNALIERO_" + nomeAllegato.split("_")[2].split(".pdf")[0] + "_" + sdfNow.format(calNow.getTime()) ); } else { f.setCartella("/"+pathConservazione); } if (DEBUGALLEGATI) System.out.println("MIMETYPE:" + getMimeType(nomeAllegato) +" per l'allegato " + nomeAllegato); f.setMime(getMimeType(nomeAllegato)); InputStreamDataSource ids = new InputStreamDataSource(is); //System.out.println("IDS:" + ids.getInputStream().available()); // //f.setHash("AAAAAAA"); DataHandler dh = new DataHandler(ids); f.setBuffer(setMTOMEncoding(dh)); //f.setBuffer(dh); ci.setData(dataConservazione); //f.setHash(calcolaImprontaInformatica(is)); if (DEBUG) { System.out.println("CONSERVAZIONE DI " + nomeAllegato + "--------------------------------------->setHash(): md5Impronta---->"+md5Impronta); System.out.println(".... MA LA HASH SUL DOCUMENTO E'" + doc.getItemValueString("Hash")); } f.setHash(md5Impronta); ArrayOfFile arrayFiles = null; arrayFiles = new ArrayOfFile(); arrayFiles.addFile(f); ci.setFiles(arrayFiles); Attributi attributi = null; if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { attributi = getAttributiRegistroProtocollo(theDoc); } else { attributi = getAttributi(theDoc); } ci.setAttributiSpecifici(attributi); if (!getTipologia(theDoc).equals(TipoOggetto.Generico)) { // Anno numero solo se non è documento generico Chiave indiceRegistro = null; indiceRegistro = new Chiave(); if (getTipologia(theDoc).equals(TipoOggetto.RegistroProtocollo)) { indiceRegistro.setAnno(Integer.parseInt(theDoc.getItemValueString("DataRif").split("/")[2])); } else { indiceRegistro.setAnno(theDoc.getItemValueString("FormName").equals("M4.PR")?theDoc.getItemValueInteger("AnnoProtocollo"):theDoc.getItemValueInteger("Anno")); } indiceRegistro.setNumero(""+theDoc.getItemValueInteger("Numero")); ci.setIndiceRegistro(indiceRegistro); } if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { ci.setOggetto(nomeAllegato); } else { String oggetto = strip(theDoc.getItemValueString("Oggetto")); if (DEBUG) System.out.println("IMPOSTO OGGETTO:" + oggetto); ci.setOggetto(oggetto); } if (getTipologia(theDoc)!=null) { // System.out.println("getTipologia(theDoc):" + getTipologia(theDoc)); if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { ci.setTipologia(TipoOggetto.RegistroProtocollo); } else { ci.setTipologia(getTipologia(theDoc)); } } conserva.setConservationInfo(ci); if (!tokenCS.equals("")) { theToken = tokenCS; } // PER FORZARE LA CONSERVAZIONE DEL REGISTRO PROTOCOLLO PER CONTO SUO if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { theToken = ""; } //System.out.println("theToken****************" + theToken); String errorMessage =""; if (theToken.equals("")) { if (DEBUG) System.out.println("STO CONSERVANDO LA PRIMA VOLTA......(METODO CONSERVA)"); ConservaResponse response = null; try { response = stub.Conserva(conserva); } catch (Exception eee) { errorMessage = eee.getMessage(); eee.printStackTrace(); } if (response != null) { ResponseStatusCode status = response.getConservaResult().getStatus(); if (status.getValue().toLowerCase().equals("errore")) { id = ""; String descrizioneErrore = response.getConservaResult().getDescrizione(); if (descrizioneErrore.indexOf("presente")!=-1) { setLog(TEMP,response.getConservaResult().getDescrizione(), "[INFO(1) Conservazione " + theDoc.getUniversalID()+ "]"); } else { if (descrizioneErrore.indexOf("LD_DF006")!=-1) { setLog(TEMP,descrizioneErrore, "[INFO(2) Conservazione " + theDoc.getUniversalID()+ "]"); } else { if (descrizioneErrore.toLowerCase().indexOf("registro_giornaliero_")==-1) { erroreGlobale = true; } if (descrizioneErrore.indexOf("LD_FD101")!=-1) { setLog(TEMP,descrizioneErrore, "[INFO(6) Conservazione " + theDoc.getUniversalID()+ "]"); erroreGlobale = false; } else { if (descrizioneErrore.toLowerCase().indexOf("timed out")!=-1 || descrizioneErrore.toLowerCase().indexOf("internal server error")!=-1) { erroreTimeout = true; } setLog(TEMP,descrizioneErrore + (descrizioneErrore.indexOf("LD_AR001")!=-1?" IMPRONTA:" + md5Impronta:""), "[ERROR(2) Conservazione " + theDoc.getUniversalID()+ "]"); } } } theDoc.replaceItemValue("OpTraccia",descrizioneErrore); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); // ATTENZIONE: RIPRISTINATO ERRORE!!!! erroreGlobale = true; //setLog(TEMP,response.getConservaResult().getDescrizione(), "[ERROR]"); } else { id = ""+response.getConservaResult().getTokenID(); theToken = id; if (DEBUGALLEGATI) System.out.println("NOME ALLEGATO CONSERVATO:" + strip(nomeAllegato) + " LUNGHEZZA:" + strip(nomeAllegato).length()+"<>CON TOKEN:" + theToken); if (nomeAllegato.toLowerCase().startsWith("registro_giornaliero_")) { if (DEBUG) { System.out.println("***************************** STO CONSERVANDO IL REGISTRO GIORNALIERO *********************"); } Document newDoc = db.getProfileDocument("RegistroGiornaliero", "CS"); // Gestione del documento di registro protocollo DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar today = Calendar.getInstance(); today.add(Calendar.DATE, -1); RichTextItem rt = (RichTextItem)newDoc.getFirstItem("DateToken"); if (rt == null) { rt = newDoc.createRichTextItem("DateToken"); } //String date = df.format(today.getTime()); String date = theDoc.getItemValueString("DataRif"); if (existsEntryprofile(date)) { if (DEBUG) System.out.println("LA DATA " + date + " C'E' GIA'!!!"); modifyToken(date, theToken + "@@" + md5Impronta); } else { if (DEBUG) System.out.println("LA DATA " + date + " NON E' PRESENTE, SI INSERISCE EX-NOVO!!!!"); rt.appendText((rt.getUnformattedText().equals("")?"":"§§")+date + "§#§" + theToken + "@@" + md5Impronta); rt.update(); rt.compact(); newDoc.save(true); } } } } else { erroreGlobale = true; if (errorMessage.toLowerCase().indexOf("timed out")!=-1 || errorMessage.toLowerCase().indexOf("internal server error")!=-1) { erroreTimeout = true; } setLog(TEMP,errorMessage, "[ERROR(3) Conservazione " + theDoc.getUniversalID()+ "]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } } else { if (DEBUG) System.out.println("STO ANDANDO IN APPEND (METODO CONSERVA-ALLEGATI)......AGGIUNGO ALLEGATI**************** CON TOKEN:" + theToken); ConservaAllegati conservaAllegati = new ConservaAllegati(); conservaAllegati.setInfoLogin(lm); AggiuntaAllegatiInfo aggiuntaAllegatiInfo = null; aggiuntaAllegatiInfo = new AggiuntaAllegatiInfo(); aggiuntaAllegatiInfo.setTokenID(Integer.parseInt(theToken)); //System.out.println("VADO PER IL FILE:" + f.getNomeFile()); aggiuntaAllegatiInfo.setFile(f); attributi = getAttributi(theDoc); aggiuntaAllegatiInfo.setAttributiSpecifici(attributi); conservaAllegati.setConservationInfo(aggiuntaAllegatiInfo ); ConservaAllegatiResponse response = null; try { response = stub.ConservaAllegati(conservaAllegati); } catch (Exception e){ e.printStackTrace(); errorMessage = e.getMessage(); } if (response!=null) { ResponseStatusCode status = response.getConservaAllegatiResult().getStatus(); if (DEBUG) { System.out.println("STATUS APPEND:" + status.getValue() + "<>" + response.getConservaAllegatiResult().getDescrizione()); } if (status.getValue().toLowerCase().equals("errore")) { String descrizioneErrore = response.getConservaAllegatiResult().getDescrizione(); id = ""; if (descrizioneErrore.indexOf("LD_FD101")!=-1) { setLog(TEMP,descrizioneErrore, "[INFO(3) Conservazione " + theDoc.getUniversalID()+ "]"); erroreGlobale = false; } else if (descrizioneErrore.indexOf("presente")!=-1) { setLog(TEMP,descrizioneErrore, "[INFO(4) Conservazione " + theDoc.getUniversalID()+ "]"); } else { if (descrizioneErrore.indexOf("LD_DF006")!=-1) { // mime-type non presente nella policy // System.out.println("INFO: " + descrizioneErrore); setLog(TEMP,descrizioneErrore, "[INFO(5) Conservazione " + theDoc.getUniversalID()+ "]"); } else { if (descrizioneErrore.toLowerCase().indexOf("registro_giornaliero_")==-1) { System.out.println("ERRORE GLOBALE!"); erroreGlobale = true; } } setLog(TEMP,descrizioneErrore, "[ERROR(4) Conservazione " + theDoc.getUniversalID()+ "]"); } theDoc.replaceItemValue("OpTraccia",descrizioneErrore); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } else { if (DEBUGALLEGATI) System.out.println("NOME ALLEGATO CONSERVATO IN AGGIUNTA:" + strip(nomeAllegato) + " LUNGHEZZA:" + strip(nomeAllegato).length()); id = ""+response.getConservaAllegatiResult().getTokenID(); //System.out.println("TOKEN RESTITUITO DOPO AGGIUNTA ALLEGATI:" + id); } } else { // ERRORE GLOBALE JAVA erroreGlobale = true; setLog(TEMP,errorMessage, "[ERROR]"); theDoc.replaceItemValue("OpTraccia",errorMessage); u.gestioneTracciaCS(theDoc, "opTraccia", "Processo di conservazione automatica"); } } // CHIUDO IS is.close(); return id.trim(); } catch (Exception ee) { erroreGlobale = true; ee.printStackTrace(); System.out.println("ECCEZIONE"); // (400) Bad Request. - Code 'LD_FD101' - Description 'Esiste almeno un documento con lo stesso nome nella cartella' /*if (ee.getMessage()!=null && ee.getMessage().indexOf("Autenticazione Fallita")!=-1) { erroreGlobale = true; setLog(TEMP,ee.getMessage(), "[ERROR]"); } if (ee.getMessage()!=null && ee.getMessage().indexOf("LD_FD101")!=-1 && DEBUG_PRESENZA_ALLEGATI) { System.out.println("---->" + ee.getMessage()); }*/ if (ee.getMessage()!=null) { //ee.printStackTrace(); setLog(TEMP,ee.getMessage(), "[ERROR]"); } is.close(); return ""; } } private Attributi getAttributiRegistroProtocollo(Document doc) throws NotesException, ParseException { if (DEBUG) System.out.println("Attributi per registro protocollo............."); AttributiRegistroProtocollo attributiRegistro = null; attributiRegistro = new AttributiRegistroProtocollo(); attributiRegistro.setAnno(Integer.parseInt(doc.getItemValueString("DataRif").split("/")[2])); attributiRegistro.setCodiceFiscaleDestinatario(" "); attributiRegistro.setCodiceFiscaleResponsabile(" "); attributiRegistro.setCodiceFiscaleSoggettoproduttore(" "); attributiRegistro.setCodiceFiscaleSoggettoProduttore2(" "); attributiRegistro.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); attributiRegistro.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); attributiRegistro.setCodiceIdentificativoRegistro(doc.getUniversalID()); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar data = Calendar.getInstance(); data.setTime(df.parse(doc.getItemValueString("DataStampa"))); attributiRegistro.setDataDocumento(data); //View v = db.getView("search-ProtocolloAnno"); View v = db.getView("ProtocolliDiIeri"); if (v==null) { v = db.getView("search-ProtocolloAnno"); } String query = "[FormName] = \"M4.PR\" AND NOT [Cancellato] = \"SI\" AND NOT [Eliminato] = \"SI\" AND NOT [InviatoM2] = \"SI\" AND NOT [Fittizio] = \"SI\""; query += " AND NOT [Numero] = 0"; query += " AND [DataDisplay] = " +doc.getItemValueString("DataRif"); int matches = v.FTSearch(query,0); Document tempDoc = v.getFirstDocument(); Document lastDoc = v.getFirstDocument(); Document firstDoc = v.getLastDocument(); DateFormat dfhms = null; if (firstDoc.getItemValue("DataDisplay").elementAt(0).toString().trim().indexOf(":")!=-1) { dfhms = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); } if (firstDoc.getItemValue("DataDisplay").elementAt(0).toString().trim().indexOf(".")!=-1) { dfhms = new SimpleDateFormat("dd/MM/yyyy HH.mm.ss"); } if (matches>0) { // System.out.println("DATA PRIMA SERGISTRAZIONE:" + firstDoc.getItemValue("DataDisplay").elementAt(0).toString().trim().replaceAll("CEDT", "").replaceAll("AM","").replaceAll("PM", "").replaceAll("CET", "") ); data.setTime(dfhms.parse(firstDoc.getItemValue("DataDisplay").elementAt(0).toString().replaceAll("CEDT", "").replaceAll("AM","").replaceAll("PM", "").replaceAll("CET", "").trim())); attributiRegistro.setDataPrimaRegistrazione(data); // System.out.println("DATA ultima SERGISTRAZIONE:" + lastDoc.getItemValue("DataDisplay").elementAt(0).toString().trim().replaceAll("CEDT", "").replaceAll("AM","").replaceAll("PM", "") ); data.setTime(dfhms.parse(lastDoc.getItemValue("DataDisplay").elementAt(0).toString().replaceAll("CEDT", "").replaceAll("AM","").replaceAll("PM", "").replaceAll("CET", "").trim())); attributiRegistro.setDataUltimaRegistrazione(data); } attributiRegistro.setDenominazioneAmministrazione(" "+u.getParam("UOProtocollo")); attributiRegistro.setDestinatario(" "); attributiRegistro.setFascicoli(getRiferimentiFascicolo("RegistroGiornalieroCS",doc.getItemValueString("IdAltriFascicoli"))); attributiRegistro.setIDUnivocoDocumento(doc.getUniversalID()); attributiRegistro.setIndiceDiClassificazione(" "); attributiRegistro.setNote(" "); //int primoNumero = firstDoc.getItemValueInteger("Numero"); /* int primoNumero = 999999999; int ultimoNumero = 0; while (tempDoc != null) { primoNumero = (tempDoc.getItemValueInteger("Numero")ultimoNumero?tempDoc.getItemValueInteger("Numero"):ultimoNumero); Document tmpRecycle = tempDoc; tempDoc = v.getNextDocument(tempDoc); tmpRecycle.recycle(); }*/ // System.out.println("primoNumero:" + primoNumero); // System.out.println("UTIMO:" + ultimoNumero); if (matches>0) { //attributiRegistro.setNumeroUltimaRegistrazione(lastDoc.getItemValueInteger("Numero")); // attributiRegistro.setNumeroPrimaRegistrazione(primoNumero); // attributiRegistro.setNumeroUltimaRegistrazione(ultimoNumero); // System.out.println("PRIMO" + doc.getItemValueString("primoNumero") + "<>ULTIMO" + doc.getItemValueString("ultimoNumero")); if (doc.getItemValueString("primoNumero")==null || doc.getItemValueString("primoNumero").trim().equals("")) { attributiRegistro.setNumeroPrimaRegistrazione(0); } else { attributiRegistro.setNumeroPrimaRegistrazione(Integer.parseInt(doc.getItemValueString("primoNumero"))); } if (doc.getItemValueString("ultimoNumero")==null || doc.getItemValueString("ultimoNumero").trim().equals("")) { attributiRegistro.setNumeroUltimaRegistrazione(0); } else { attributiRegistro.setNumeroUltimaRegistrazione(Integer.parseInt(doc.getItemValueString("ultimoNumero"))); } } else { attributiRegistro.setNumeroPrimaRegistrazione(0); attributiRegistro.setNumeroUltimaRegistrazione(0); } // System.out.println("il numero che passo" + doc.getItemValueInteger("Numero")); attributiRegistro.setNumeroProgressivoDelRegistro(new Integer(doc.getItemValueInteger("Numero"))); attributiRegistro.setOggetto("Registro giornaliero di protocollo n. [" +doc.getItemValueString("primoNumero")+ "] al n. [" + doc.getItemValueString("ultimoNumero") + "] del " + doc.getItemValueString("DataRif")); if (u.getParam("ResponsabileGestioneDocumentale")==null || u.getParam("ResponsabileGestioneDocumentale").trim().equals("")) { attributiRegistro.setResponsabile(" "+u.getParam("Comune")); } else { attributiRegistro.setResponsabile(" "+u.getParam("ResponsabileGestioneDocumentale")); } attributiRegistro.setSoggettoProduttore(" "+u.getParam("Comune")); attributiRegistro.setSoggettoProduttore2(" "); Attributi attributi = null; attributi = attributiRegistro; return attributi; } private Attributi getAttributi(Document doc) throws NotesException, ParseException, XPathExpressionException, ParserConfigurationException, SAXException, IOException { Attributi attributi = null; DateFormat dfAdv = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); if (doc != null) { String form = doc.getItemValueString("FormName"); if (form.equals("M4.PR") && (doc.getItemValueString("isFattura")==null || !doc.getItemValueString("isFattura").trim().equalsIgnoreCase("si") || (doc.getItemValueString("isFattura").trim().equalsIgnoreCase("si") && doc.getItemValueString("esitoFattura")!=null && doc.getItemValueString("esitoFattura").trim().equals("0") )) ) { AttributiProtocollo attributiProtocollo = null; attributiProtocollo = new AttributiProtocollo(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar data = Calendar.getInstance(); String dataOrigGG = doc.getItemValueString("DataOrigGG")!=null && !doc.getItemValueString("DataOrigGG").trim().equals("")?doc.getItemValueString("DataOrigGG"):doc.getItemValueString("DataGG"); String dataOrigMM = doc.getItemValueString("DataOrigMM")!=null && !doc.getItemValueString("DataOrigMM").trim().equals("")?doc.getItemValueString("DataOrigMM"):doc.getItemValueString("DataMM"); String dataOrigAA = doc.getItemValueString("DataOrigAA")!=null && !doc.getItemValueString("DataOrigAA").trim().equals("")?doc.getItemValueString("DataOrigAA"):doc.getItemValueString("DataAA"); data.setTime(df.parse((dataOrigGG.length()==1?"0"+dataOrigGG:dataOrigGG)+"/"+(dataOrigMM.length()==1?"0"+dataOrigMM:dataOrigMM)+"/"+dataOrigAA)); attributiProtocollo.setDataArrivo(data); attributiProtocollo.setDataDocumento(data); attributiProtocollo.setDescrizioneDocumento(strip(doc.getItemValueString("Classificazione"))); // ********** DA VERIFICARE *************** attributiProtocollo.setDestinatario(doc.getItemValueString("EntrataUscita").equals("E")?" " + getDestinatari(doc.getItemValueString("Destinatari"),doc.getItemValueString("UO")):doc.getItemValueString("EntrataUscita").equals("U")?doc.getItemValueString("Intestatario1"):getDestinatari(doc.getItemValueString("Destinatari"),doc.getItemValueString("UO"))); attributiProtocollo.setIDUnivocoDocumento(doc.getUniversalID()); attributiProtocollo.setIndiceDiClassificazione(getIndiceClassificazione(doc)); attributiProtocollo.setMittente(doc.getItemValueString("EntrataUscita").equals("E")?" "+doc.getItemValueString("Intestatario1"):doc.getItemValueString("EntrataUscita").equals("U")?" "+u.getParam("Comune"):doc.getItemValueString("UO") + " - "+ doc.getItemValueString("Responsabile1")) ; attributiProtocollo.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); attributiProtocollo.setTipoProtocollo(doc.getItemValueString("EntrataUscita")); attributiProtocollo.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); attributiProtocollo.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); //data.setTime(dfAdv.parse((doc.getItemValueString("DataGG").length()==1?"0"+doc.getItemValueString("DataGG"):doc.getItemValueString("DataGG"))+"/"+(doc.getItemValueString("DataMM").length()==1?"0"+doc.getItemValueString("DataMM"):doc.getItemValueString("DataMM"))+"/"+doc.getItemValueString("DataAA")+ " " + doc.getItemValueString("Ore") +":"+doc.getItemValueString("Minuti")+":"+doc.getItemValueString("Secondi"))); data.setTime(df.parse((doc.getItemValueString("DataGG").length()==1?"0"+doc.getItemValueString("DataGG"):doc.getItemValueString("DataGG"))+"/"+(doc.getItemValueString("DataMM").length()==1?"0"+doc.getItemValueString("DataMM"):doc.getItemValueString("DataMM"))+"/"+doc.getItemValueString("DataAA"))); //attributiProtocollo.setDataDocumentoMittente(data); //attributiProtocollo.setDestinatari(getDestinatari(doc.getItemValueString("Destinatari"),doc.getItemValueString("UO"))); attributiProtocollo.setFirmatarioDocumento(""); //attributiProtocollo.setMittenti(doc.getItemValueString("Intestatario1") + ", " + getIntestatari(doc.getItemValueString("Intestatari"))); attributiProtocollo.setModalitaTrasmissione(doc.getItemValueString("TipoSpedizione")); //attributiProtocollo.setMovimento(doc.getItemValueString("EntrataUscita")); attributiProtocollo.setNote(doc.getItemValueString("Note")); attributiProtocollo.setNumeroDocumentoMittente(""+doc.getItemValueInteger("Numero")); attributiProtocollo.setProtocolloRiservato(doc.getItemValueString("ProtRiservato")); attributiProtocollo.setResponsabile((doc.getItemValueString("EntrataUscita").equals("E")?doc.getItemValueString("Responsabile"):doc.getItemValueString("Responsabile1"))); attributiProtocollo.setStrutturaAssegnataria(doc.getItemValueString("UO")); attributiProtocollo.setStrutturaProtocollante(""); attributiProtocollo.setAntecedente(doc.getItemValueString("Antecedente")); data = Calendar.getInstance(); try { data.setTime(df.parse((doc.getItemValueString("DataOrigGG").length()==1?"0"+doc.getItemValueString("DataOrigGG"):doc.getItemValueString("DataOrigGG"))+"/"+(doc.getItemValueString("DataOrigMM").length()==1?"0"+doc.getItemValueString("DataOrigMM"):doc.getItemValueString("DataOrigMM"))+"/"+doc.getItemValueString("DataOrigAA"))); } catch (Exception eee) { data.setTime(df.parse((doc.getItemValueString("DataGG").length()==1?"0"+doc.getItemValueString("DataGG"):doc.getItemValueString("DataGG"))+"/"+(doc.getItemValueString("DataMM").length()==1?"0"+doc.getItemValueString("DataMM"):doc.getItemValueString("DataMM"))+"/"+doc.getItemValueString("DataAA"))); } attributiProtocollo.setDataArrivo(data); attributiProtocollo.setRiferimentiAlboPretorio(getRiferimentiAlboPretorio(doc,"key-AlboPretorio-Affissioni-Protocollo",doc.getUniversalID())); attributiProtocollo.setSusseguente(doc.getItemValueString("Susseguente")); //attributiProtocollo.setTitolario(doc.getItemValueString("CodiceCategoria")+"/"+doc.getItemValueString("CodiceClasse")+"/"+doc.getItemValueString("CodiceFascicolo1")); attributiProtocollo.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributi = attributiProtocollo; } // Fatture passive //IsFattura = "SI" //esitofattura="1" //fattura_Status="10" if (form.equals("M4.PR") && doc.getItemValueString("isFattura")!=null && doc.getItemValueString("isFattura").trim().equalsIgnoreCase("si") && doc.getItemValueString("esitofattura")!=null && doc.getItemValueString("esitofattura").trim().equals("1") ) { // 0004322: Conservazione: implementare il controllo "fattura_Status" sui civetta String fatturaStatus = ""; fatturaStatus = (doc.getItemValueString("fattura_Status")!=null && doc.getItemValueString("fattura_Status").trim().equals("10")?"10":""); if (fatturaStatus.equals("")) { try { fatturaStatus = getStatusFattura(doc); // Document documentoCollegato = db.getDocumentByUNID(doc.getItemValueString("IdDocumento")); // fatturaStatus = documentoCollegato.getItemValueString("fattura_Status").trim(); } catch (Exception e) {} } if (fatturaStatus.equals("10")) { AttributiFatturaPassiva attributiFatturaPassiva = null; attributiFatturaPassiva = new AttributiFatturaPassiva(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar dtProtocollo = Calendar.getInstance(); Calendar dtDocumento = Calendar.getInstance(); String dataOrigGG = doc.getItemValueString("DataOrigGG")!=null?doc.getItemValueString("DataOrigGG"):doc.getItemValueString("DataGG"); String dataOrigMM = doc.getItemValueString("DataOrigMM")!=null?doc.getItemValueString("DataOrigMM"):doc.getItemValueString("DataMM"); String dataOrigAA = doc.getItemValueString("DataOrigAA")!=null?doc.getItemValueString("DataOrigAA"):doc.getItemValueString("DataAA"); dtProtocollo.setTime(df.parse((dataOrigGG.length()==1?"0"+dataOrigGG:dataOrigGG)+"/"+(dataOrigMM.length()==1?"0"+dataOrigMM:dataOrigMM)+"/"+dataOrigAA)); Database dbFatture = null; if (doc.getItemValueString("AllegatiImmagini")!=null && !doc.getItemValueString("AllegatiImmagini").trim().equals("")) { dbFatture = dbTarget; } else { dbFatture = db; } View vistaImmagini = dbTarget.getView("AllegatiProtocollo"); vistaImmagini.refresh(); //System.out.println("IDPADRE--->" + idPadre); Document docImmagine = vistaImmagini.getDocumentByKey(doc.getUniversalID(),true); if (docImmagine != null) { String cig = getCigFattura(doc,docImmagine); if (!cig.trim().equals("")) { attributiFatturaPassiva.setCIG(cig); } String cup = getCupFattura(doc,docImmagine); if (!cup.trim().equals("")) { attributiFatturaPassiva.setCUP(cup); } // ********************************* OK String codiceFiscaleEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/CodiceFiscale"); if (codiceFiscaleEmittente.trim().equals("")) { codiceFiscaleEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdCodice"); } attributiFatturaPassiva.setCodiceFiscaleEmittente(codiceFiscaleEmittente); // ********************************* OK String codiceFiscale = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/CodiceFiscale"); if (codiceFiscale.trim().equals("")) { codiceFiscale = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/IdFiscaleIVA/IdCodice"); } attributiFatturaPassiva.setCodiceFiscale(codiceFiscale); // OK attributiFatturaPassiva.setCodiceUfficioIPA(getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/DatiTrasmissione/CodiceDestinatario")); String dataDocumento = getNodeValue(doc,docImmagine,"FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Data"); // ParseException: Unparseable date: "22+01:00/12/2015" if (dataDocumento.indexOf(":")!=-1 && dataDocumento.indexOf("+")!=-1) { dtDocumento.setTime(df.parse((dataDocumento.split("-")[2].split("\\+")[0].length()==1?"0"+dataDocumento.split("-")[2].split("\\+")[0]:dataDocumento.split("-")[2].split("\\+")[0])+"/"+(dataDocumento.split("-")[1].length()==1?"0"+dataDocumento.split("-")[1]:dataDocumento.split("-")[1])+"/"+dataDocumento.split("-")[0])); } else { dtDocumento.setTime(df.parse((dataDocumento.split("-")[2].length()==1?"0"+dataDocumento.split("-")[2]:dataDocumento.split("-")[2])+"/"+(dataDocumento.split("-")[1].length()==1?"0"+dataDocumento.split("-")[1]:dataDocumento.split("-")[1])+"/"+dataDocumento.split("-")[0])); } attributiFatturaPassiva.setDataDocumento(dtDocumento); attributiFatturaPassiva.setDataProtocollo(dtProtocollo); // ********************************* OK attributiFatturaPassiva.setDenominazione(getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/Anagrafica/Denominazione")); // ********************************* OK String denominazioneEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione"); if (denominazioneEmittente.trim().equals("")) { denominazioneEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Nome") + " " + getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Cognome"); } attributiFatturaPassiva.setDenominazioneEmittente(denominazioneEmittente); attributiFatturaPassiva.setIndiceDiClassificazione(getIndiceClassificazione(doc)); attributiFatturaPassiva.setNomeFileSOGEI(doc.getItemValueString("Fattura_FileName_MD")); // ********************************* OK attributiFatturaPassiva.setPartitaIVA(getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/IdFiscaleIVA/IdCodice")); // ********************************* OK String pIVAEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdCodice"); if (pIVAEmittente.trim().equals("")) { pIVAEmittente = getNodeValue(doc,docImmagine,"FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/CodiceFiscale"); } attributiFatturaPassiva.setPartitaIVAEmittente(pIVAEmittente); // ********************************* OK attributiFatturaPassiva.setPeriodoDiImposta(Integer.parseInt(dataDocumento.split("-")[0])); if (doc.hasItem("EsitoFattura") && doc.getItemValueString("EsitoFattura")!=null) { String esito = (doc.getItemValueString("EsitoFattura").trim().equals("0")?"Rifiutata":"Accettata"); attributiFatturaPassiva.setStatoDellaFattura(esito); } } else { attributiFatturaPassiva.setCodiceFiscaleEmittente(" "); attributiFatturaPassiva.setCodiceFiscale(" "); attributiFatturaPassiva.setCodiceUfficioIPA(" "); attributiFatturaPassiva.setDataDocumento(null); attributiFatturaPassiva.setDataProtocollo(dtProtocollo); attributiFatturaPassiva.setDenominazione(" "); attributiFatturaPassiva.setDenominazioneEmittente(" "); attributiFatturaPassiva.setIndiceDiClassificazione(" "); attributiFatturaPassiva.setNomeFileSOGEI(" "); attributiFatturaPassiva.setPartitaIVA(" "); attributiFatturaPassiva.setPartitaIVAEmittente(" "); attributiFatturaPassiva.setPeriodoDiImposta(0); attributiFatturaPassiva.setStatoDellaFattura(" "); } attributiFatturaPassiva.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); attributiFatturaPassiva.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); attributiFatturaPassiva.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributiFatturaPassiva.setIDSDI(Integer.parseInt(doc.getItemValueString("Fattura_Identificativo_SDI"))); attributiFatturaPassiva.setNumeroFattura(doc.getItemValueString("Fattura_Numero")); attributiFatturaPassiva.setNumeroProtocollo(doc.getItemValueInteger("Numero")); attributiFatturaPassiva.setOggetto(doc.getItemValueString("Oggetto")); attributiFatturaPassiva.setIDUnivocoDocumento(doc.getUniversalID()); attributi = attributiFatturaPassiva; } } // Documento generico if (form.equals("M2.DO") || form.equals("M9.AP")) { // [TBD] AttributiDocumentoGenerico documentoGenerico = null; documentoGenerico = new AttributiDocumentoGenerico(); documentoGenerico.setCodiceIdentificativoAmministrazione(u.getParam("CodiceAmministrazione")); documentoGenerico.setCodiceIdentificativoAOO(u.getParam("CodiceAOO")); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Calendar data = Calendar.getInstance(); if (doc.getItemValueString("DataRedazGG")!=null && !doc.getItemValueString("DataRedazGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataRedazGG").length()==1?"0"+doc.getItemValueString("DataRedazGG"):doc.getItemValueString("DataRedazGG"))+"/"+(doc.getItemValueString("DataRedazMM").length()==1?"0"+doc.getItemValueString("DataRedazMM"):doc.getItemValueString("DataRedazMM"))+"/"+doc.getItemValueString("DataRedazAA"))); documentoGenerico.setDataDocumento(data); } documentoGenerico.setDestinatario(doc.getItemValueString("Intestatario1") + ", " + getIntestatari(doc.getItemValueString("Intestatari"))); documentoGenerico.setIDUnivocoDocumento(doc.getUniversalID()); documentoGenerico.setIndiceDiClassificazione(getIndiceClassificazione(doc)); documentoGenerico.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); documentoGenerico.setQualificaGenerica(form.equals("M2.DO")?"Documento":"Appunto"); documentoGenerico.setAutore(doc.getItemValueString("Autore")); documentoGenerico.setNote(doc.getItemValueString("Note")); documentoGenerico.setResponsabile(doc.getItemValueString("Responsabile")); documentoGenerico.setUO(doc.getItemValueString("UO")); documentoGenerico.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributi = documentoGenerico; } // Contratto if (form.equals("M7.CO")) { // [TBD] String tipoContratto = ""; tipoContratto = (doc.getItemValueString("TipoContratto")!=null && doc.getItemValueString("TipoContratto").equals("APA")?"Atto pubblico amministrativo":tipoContratto); tipoContratto = (doc.getItemValueString("TipoContratto")!=null && doc.getItemValueString("TipoContratto").equals("SPA")?"Scrittura privata autenticata":tipoContratto); tipoContratto = (doc.getItemValueString("TipoContratto")!=null && doc.getItemValueString("TipoContratto").equals("SPNA")?"Scrittura privata non autenticata":tipoContratto); AttributiContratto contratto = null; contratto = new AttributiContratto(); contratto.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); contratto.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); String contraente = ""; for(int i=0;i<=99;i++) { String idx = (i==0?"":"_"+i); if (doc.getItemValueString("RagioneSociale"+idx)!=null ) { contraente += doc.getItemValueString("RagioneSociale"+idx) + " - "; } } contratto.setContraente(" "+strip(contraente.substring(0, 255))); Calendar data = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); if (doc.getItemValueString("DataGG")!=null && !doc.getItemValueString("DataGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataGG").length()==1?"0"+doc.getItemValueString("DataGG"):doc.getItemValueString("DataGG"))+"/"+(doc.getItemValueString("DataMM").length()==1?"0"+doc.getItemValueString("DataMM"):doc.getItemValueString("DataMM"))+"/"+doc.getItemValueString("DataAA"))); contratto.setDataDocumento(data); } if (doc.getItemValueString("DataRegistrGG")!=null && !doc.getItemValueString("DataRegistrGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataRegistrGG").length()==1?"0"+doc.getItemValueString("DataRegistrGG"):doc.getItemValueString("DataRegistrGG"))+"/"+(doc.getItemValueString("DataRegistrMM").length()==1?"0"+doc.getItemValueString("DataRegistrMM"):doc.getItemValueString("DataRegistrMM"))+"/"+doc.getItemValueString("DataRegistrAA"))); contratto.setDataRegistrazione(data); } if (doc.getItemValueString("DataStipulaGG")!=null && !doc.getItemValueString("DataStipulaGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataStipulaGG").length()==1?"0"+doc.getItemValueString("DataStipulaGG"):doc.getItemValueString("DataStipulaGG"))+"/"+(doc.getItemValueString("DataStipulaMM").length()==1?"0"+doc.getItemValueString("DataStipulaMM"):doc.getItemValueString("DataStipulaMM"))+"/"+doc.getItemValueString("DataStipulaAA"))); contratto.setDataStipula(data); } contratto.setIDUnivocoDocumento(doc.getUniversalID()); if (doc.getItemValueString("ImportoTotale")!=null && !doc.getItemValueString("ImportoTotale").equals("")) { contratto.setImportoRegistrazione(Double.parseDouble(doc.getItemValueString("ImportoTotale"))); } else { System.out.println("IMPORT REGISTRAZIONE 0"); contratto.setImportoRegistrazione(0); } contratto.setIndiceDiClassificazione(getIndiceClassificazione(doc)); contratto.setNumeroDiRepertorio(""+doc.getItemValueInteger("Numero")); Integer iNumeroRegistro = new Integer(doc.getItemValueInteger("NumeroRegistro")); if (doc.getItemValueString("NumeroRegistro")!=null && !iNumeroRegistro.toString().equals("0")) { // if (doc.getItemValueString("NumeroRegistro")!=null) { contratto.setNumeroRegistrazione(" "+doc.getItemValueInteger("NumeroRegistro")); } else { System.out.println("NUMERO REGISTRO VUOTO"); contratto.setNumeroRegistrazione(" "); } contratto.setSerieRegistrazione(" "+doc.getItemValueString("Volume")); contratto.setIdTelematico(doc.getItemValueString("IdentificativoTelematico")); contratto.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); contratto.setTipoContratto(tipoContratto); contratto.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributi = contratto; } // Affissioni if (form.equals("M6.AP")) { AttributiAffissione affissione = null; affissione = new AttributiAffissione(); affissione.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); affissione.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); Calendar data = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); if (doc.getItemValueString("DataGG")!=null && !doc.getItemValueString("DataGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataGG").length()==1?"0"+doc.getItemValueString("DataGG"):doc.getItemValueString("DataGG"))+"/"+(doc.getItemValueString("DataMM").length()==1?"0"+doc.getItemValueString("DataMM"):doc.getItemValueString("DataMM"))+"/"+doc.getItemValueString("DataAA"))); affissione.setDataDocumento(data); } if (doc.getItemValueString("DataAvvioGG")!=null && !doc.getItemValueString("DataAvvioGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataAvvioGG").length()==1?"0"+doc.getItemValueString("DataAvvioGG"):doc.getItemValueString("DataAvvioGG"))+"/"+(doc.getItemValueString("DataAvvioMM").length()==1?"0"+doc.getItemValueString("DataAvvioMM"):doc.getItemValueString("DataAvvioMM"))+"/"+doc.getItemValueString("DataAvvioAA"))); affissione.setDataInizio(data); } if (doc.getItemValueString("DataFineGG")!=null && !doc.getItemValueString("DataFineGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataFineGG").length()==1?"0"+doc.getItemValueString("DataFineGG"):doc.getItemValueString("DataFineGG"))+"/"+(doc.getItemValueString("DataFineMM").length()==1?"0"+doc.getItemValueString("DataFineMM"):doc.getItemValueString("DataFineMM"))+"/"+doc.getItemValueString("DataFineAA"))); affissione.setDataFine(data); } affissione.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); affissione.setIDUnivocoDocumento(doc.getUniversalID()); affissione.setIndiceDiClassificazione(getIndiceClassificazione(doc)); affissione.setIntestatario(doc.getItemValueString("Intestatario")); affissione.setNumeroRegistroParticolare(""+doc.getItemValueInteger("Numero")); affissione.setResponsabile(doc.getItemValueString("Responsabile")); affissione.setNote(doc.getItemValueString("Note")); affissione.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); affissione.setTipoDocumento(doc.getItemValueString("TipoDocumentoCategoria")); attributi = affissione; } if (form.equals("M5.AT")) { //System.out.println("FORM:" + form); if (doc.getItemValueString("AttoMonocratico")!=null && doc.getItemValueString("AttoMonocratico").equals("SI")) { AttributiDetermina attributiDetermina = null; attributiDetermina = new AttributiDetermina(); attributiDetermina.setAutore(doc.getItemValueString("Autore")); Calendar data = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); attributiDetermina.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); attributiDetermina.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); if (doc.getItemValueString("DataRedazGG")!=null && !doc.getItemValueString("DataRedazGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataRedazGG").length()==1?"0"+doc.getItemValueString("DataRedazGG"):doc.getItemValueString("DataRedazGG"))+"/"+(doc.getItemValueString("DataRedazMM").length()==1?"0"+doc.getItemValueString("DataRedazMM"):doc.getItemValueString("DataRedazMM"))+"/"+doc.getItemValueString("DataRedazAA"))); attributiDetermina.setDataDocumento(data); } if (doc.getItemValueString("DataEsecGG")!=null && !doc.getItemValueString("DataEsecGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataEsecGG").length()==1?"0"+doc.getItemValueString("DataEsecGG"):doc.getItemValueString("DataEsecGG"))+"/"+(doc.getItemValueString("DataEsecMM").length()==1?"0"+doc.getItemValueString("DataEsecMM"):doc.getItemValueString("DataEsecMM"))+"/"+doc.getItemValueString("DataEsecAA"))); //System.out.println("data esec: " + data.toString()); attributiDetermina.setDataEsecutivita(data); } if (doc.getItemValueString("DataPredAttoGG")!=null && !doc.getItemValueString("DataPredAttoGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataPredAttoGG").length()==1?"0"+doc.getItemValueString("DataPredAttoGG"):doc.getItemValueString("DataPredAttoGG"))+"/"+(doc.getItemValueString("DataPredAttoMM").length()==1?"0"+doc.getItemValueString("DataPredAttoMM"):doc.getItemValueString("DataPredAttoMM"))+"/"+doc.getItemValueString("DataPredAttoAA"))); //System.out.println("data predispo: " + data.toString()); attributiDetermina.setDataPredisposizione(data); } attributiDetermina.setDirigente(doc.getItemValueString("Responsabile")); attributiDetermina.setIDUnivocoDocumento(doc.getUniversalID()); attributiDetermina.setIndiceDiClassificazione(getIndiceClassificazione(doc)); attributiDetermina.setNumeroDiRepertorio(""+doc.getItemValueInteger("Numero")); attributiDetermina.setNumeroRegistroParticolare((doc.getItemValueInteger("NumeroGenerale")!=0 && !("" + doc.getItemValueInteger("NumeroGenerale")).equals("")?""+doc.getItemValueInteger("NumeroGenerale"):""+doc.getItemValueInteger("Numero"))); attributiDetermina.setDatePareri(getDatePareri(doc)); attributiDetermina.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); attributiDetermina.setTipoAtto(doc.getItemValueString("TipoAtto")); attributiDetermina.setResponsabileProcedimento(doc.getItemValueString("Responsabile")); //System.out.println("getResponsabiliPareri:" + getResponsabiliPareri(doc)); attributiDetermina.setResponsabiliPareri(getResponsabiliPareri(doc)); //System.out.println("rif albo:" + getRiferimentiAlboPretorio(doc,"key-AlboPretorio",doc.getItemValueString("IdAlboPretorio"))); attributiDetermina.setRiferimentiAlboPretorio(getRiferimentiAlboPretorio(doc,"key-AlboPretorio",doc.getItemValueString("IdAlboPretorio"))); attributiDetermina.setUO(doc.getItemValueString("UO")); attributiDetermina.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributi = attributiDetermina; } else { AttributiDelibera attributiDelibera = null; attributiDelibera = new AttributiDelibera(); attributiDelibera.setAutore(doc.getItemValueString("Autore")); Calendar data = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); attributiDelibera.setCodiceIdentificativoAmministrazione(" "+u.getParam("CodiceAmministrazione")); attributiDelibera.setCodiceIdentificativoAOO(" "+u.getParam("CodiceAOO")); if (doc.getItemValueString("DataRedazGG")!=null && !doc.getItemValueString("DataRedazGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataRedazGG").length()==1?"0"+doc.getItemValueString("DataRedazGG"):doc.getItemValueString("DataRedazGG"))+"/"+(doc.getItemValueString("DataRedazMM").length()==1?"0"+doc.getItemValueString("DataRedazMM"):doc.getItemValueString("DataRedazMM"))+"/"+doc.getItemValueString("DataRedazAA"))); attributiDelibera.setDataDocumento(data); } if (doc.getItemValueString("DataEsecGG")!=null && !doc.getItemValueString("DataEsecGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataEsecGG").length()==1?"0"+doc.getItemValueString("DataEsecGG"):doc.getItemValueString("DataEsecGG"))+"/"+(doc.getItemValueString("DataEsecMM").length()==1?"0"+doc.getItemValueString("DataEsecMM"):doc.getItemValueString("DataEsecMM"))+"/"+doc.getItemValueString("DataEsecAA"))); attributiDelibera.setDataEsecutivita(data); } if (doc.getItemValueString("DataPredAttoGG")!=null && !doc.getItemValueString("DataPredAttoGG").equals("")) { data.setTime(df.parse((doc.getItemValueString("DataPredAttoGG").length()==1?"0"+doc.getItemValueString("DataPredAttoGG"):doc.getItemValueString("DataPredAttoGG"))+"/"+(doc.getItemValueString("DataPredAttoMM").length()==1?"0"+doc.getItemValueString("DataPredAttoMM"):doc.getItemValueString("DataPredAttoMM"))+"/"+doc.getItemValueString("DataPredAttoAA"))); attributiDelibera.setDataPredisposizione(data); } attributiDelibera.setIDUnivocoDocumento(doc.getUniversalID()); attributiDelibera.setIndiceDiClassificazione(getIndiceClassificazione(doc)); attributiDelibera.setNumeroDiRepertorio((doc.getItemValueInteger("NumeroGenerale")!=0 && !("" + doc.getItemValueInteger("NumeroGenerale")).equals("")?""+doc.getItemValueInteger("NumeroGenerale"):""+doc.getItemValueInteger("Numero"))); attributiDelibera.setOggetto(" "+strip(doc.getItemValueString("Oggetto"))); attributiDelibera.setOrganoDeliberante(" "+doc.getItemValueString("OC")); attributiDelibera.setTipoAtto(doc.getItemValueString("TipoAtto")); attributiDelibera.setDatePareri(getDatePareri(doc)); attributiDelibera.setResponsabileProcedimento(doc.getItemValueString("Responsabile")); attributiDelibera.setResponsabiliPareri(getResponsabiliPareri(doc)); attributiDelibera.setRiferimentiAlboPretorio(getRiferimentiAlboPretorio(doc,"key-AlboPretorio",doc.getItemValueString("IdAlboPretorio"))); attributiDelibera.setUO(doc.getItemValueString("UO")); attributiDelibera.setFascicoli(getRiferimentiFascicolo(form,doc.getItemValueString("IdAltriFascicoli"))); attributi = attributiDelibera; } } if (form.equals("M3.PR")) { // [TBD] } } return attributi; } private String getStatusFattura(Document doc) throws NotesException { String fatturaStatus = ""; try { Document documentoCollegato = db.getDocumentByUNID(doc.getItemValueString("IdDocumento")); fatturaStatus = documentoCollegato.getItemValueString("fattura_Status").trim(); } catch (Exception DocumentNotFound) {} return fatturaStatus; } private ArrayOfFascicolo getRiferimentiFascicolo(String form, String id) throws NotesException { ArrayOfFascicolo arrayFascicoli = new ArrayOfFascicolo(); if (form.equals("RegistroGiornalieroCS")) { return arrayFascicoli; } View v = db.getView("key-FascicoliHTML"); if (!id.equals("")) { Fascicolo fascicolo = new Fascicolo(); if (form.equalsIgnoreCase("M4.PR")) { String listId[] = StringUtils.splitByWholeSeparator(id, ";"); for (int i=0;i 0){ for (int i=0;i 1){ String[] nome = campi_intestatario[0].trim().split("\\|"); if(nome.length > 1){ String[] campo_nome = nome[1].split("="); String indirizzo = campi_intestatario[1]; if(campo_nome.length > 1) ret += campo_nome[1]+ (indirizzo.replaceAll("INDIRIZZO=", "").equals("")?"":" " + indirizzo.replaceAll("INDIRIZZO=", "").replaceAll("
", " - ")) + ", "; } } } } return ret; } private String getDestinatari(String destinatario, String UO) { String ret = ""; StringTokenizer stConf = new StringTokenizer(destinatario, ";"); String tokConf = ""; String destinatariOUT = ""; int jjj = 0; String tmpUO = ""; while(stConf.hasMoreTokens()) { tokConf = stConf.nextToken().trim(); String dd = tokConf.split("\\|")[0]; if (tokConf.indexOf("UO=")!=-1) { tmpUO = tokConf.split("UO=")[1].replaceAll(u.getPrefix(), ""); if (tmpUO.equals("") && jjj==0) { tmpUO = UO; destinatariOUT += dd +tmpUO+ ", "; } else { destinatariOUT += dd + ", "; } } else { destinatariOUT += dd + ", "; } // BAIO tmpUO = ""; jjj++; } return ret; } private String getPathConservazione(Document doc, Calendar data) throws Exception { String ret = ""; if (doc.getItemValueString("FormName") != null) { if (doc.getItemValueString("FormName").equals("M4.PR")) { ret = "PROTOCOLLI/"+doc.getItemValueInteger("AnnoProtocollo")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("M2.DO")) { ret = "DOCUMENTI/"+doc.getItemValueString("UO")+"/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("M5.AT")) { if (doc.getItemValueString("AttoMonocratico")!=null && doc.getItemValueString("AttoMonocratico").equals("SI")) { ret = "DETERMINE/"+doc.getItemValueString("TipoAtto")+"/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } else { ret = "DELIBERE/"+doc.getItemValueString("TipoAtto")+"/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } } if (doc.getItemValueString("FormName").equals("M6.AP")) { ret = "AFFISSIONI/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("M9.AP")) { ret = "APPUNTI/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("M3.PR")) { ret = "FASCICOLI/"+doc.getItemValueString("UO")+"/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("M7.CO")) { ret = "CONTRATTI/"+doc.getItemValueInteger("Anno")+"/" + doc.getItemValueInteger("Numero"); } if (doc.getItemValueString("FormName").equals("RegistroGiornalieroCS")) { ret = "REGISTROGIORNALIERO"; } } //return (ret.equals("")?""+data.getTimeInMillis():ret); if (ret.equals("")) { setLog(TEMP,"Errore nell'impostazione del percorso di conservazione: impostato a vuoto", "[ERROR]"); erroreGlobale = true; } if (DEBUG) System.out.println("PATH CONSERVAZIONE:" + ret); return ret; } private String getDatiFattura(Document doc) throws NotesException { String ret = ""; return ret; } private String getIndiceClassificazione(Document doc) throws NotesException { String ret = ""; if (doc.getItemValueString("CodiceCategoria")!=null && doc.getItemValueString("CodiceClasse")!=null && doc.getItemValueString("CodiceFascicolo1")!=null) { if (!doc.getItemValueString("CodiceCategoria").equals("")) { ret += doc.getItemValueString("CodiceCategoria"); } if (!doc.getItemValueString("CodiceClasse").equals("")) { ret += "." + doc.getItemValueString("CodiceClasse"); } if (!doc.getItemValueString("CodiceFascicolo1").equals("")) { ret += "." + doc.getItemValueString("CodiceFascicolo1"); } } return ret; } public String strip(String str) { str = str.replaceAll("'", ""); str = str.replaceAll("#", ""); str = str.replaceAll("\"", ""); str = str.replaceAll(":", ""); str = str.replaceAll("[^A-Za-z\\d\\s\\-_\\.']", ""); String fileExt = FilenameUtils.getExtension(str); str = str.replace(fileExt, ""); int extLength = fileExt.length(); try { str = StringUtils.abbreviate(str, 79-extLength); } catch (Exception e) {} str = str+fileExt; String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); return pattern.matcher(nfdNormalizedString).replaceAll(""); } private MimeType getMimeType(String nomeAllegato) { /* * INFOCERT * doc, pdf, xls, xlsx, docx, zip, xml, p7m */ // TODO Auto-generated method stub //String fileExt = FilenameUtils.getExtension(nomeAllegato).toLowerCase(); String fileExt = nomeAllegato.substring(nomeAllegato.indexOf(".")+1,nomeAllegato.length()).toLowerCase(); if (fileExt.trim().equals("7z")) { return MimeType._7Z; } if (fileExt.trim().equals("7z.p7m")) { return MimeType._7Z_P7M; } if (fileExt.trim().equals("bmp")) { return MimeType.BMP; } if (fileExt.trim().equals("csv")) { return MimeType.CSV; } if (fileExt.trim().equals("dib")) { return MimeType.DIB; } if (fileExt.trim().equals("doc")) { return MimeType.DOC; } if (fileExt.trim().equals("doc.p7m")) { return MimeType.DOC_P7M; } if (fileExt.trim().equals("docx")) { return MimeType.DOCX; } if (fileExt.trim().equals("docx.p7m")) { return MimeType.DOCX_P7M; } if (fileExt.trim().equals("dot")) { return MimeType.DOT; } if (fileExt.trim().equals("dot.p7m")) { return MimeType.DOT_P7M; } if (fileExt.trim().equals("eml")) { return MimeType.EML; } if (fileExt.trim().equals("gif")) { return MimeType.GIF; } if (fileExt.trim().equals("gif.p7m")) { return MimeType.GIF_P7M; } if (fileExt.trim().equals("htm")) { return MimeType.HTM; } if (fileExt.trim().equals("html")) { return MimeType.HTML; } if (fileExt.trim().equals("jfi")) { return MimeType.JFI; } if (fileExt.trim().equals("jfi.p7m")) { return MimeType.JFI_P7M; } if (fileExt.trim().equals("jfif")) { return MimeType.JFIF; } if (fileExt.trim().equals("jfif.p7m")) { return MimeType.JFIF_P7M; } if (fileExt.trim().equals("jif")) { return MimeType.JIF; } if (fileExt.trim().equals("jif.p7m")) { return MimeType.JIF_P7M; } if (fileExt.trim().equals("jpe")) { return MimeType.JPE; } if (fileExt.trim().equals("jpe.p7m")) { return MimeType.JPE_P7M; } if (fileExt.trim().equals("jpeg")) { return MimeType.JPEG; } if (fileExt.trim().equals("jpeg.p7m")) { return MimeType.JPEG_P7M; } if (fileExt.trim().equals("jpg")) { return MimeType.JPG; } if (fileExt.trim().equals("jpg.p7m")) { return MimeType.JPG_P7M; } if (fileExt.trim().equals("mdb")) { return MimeType.MDB; } if (fileExt.trim().equals("mde")) { return MimeType.MDE; } if (fileExt.trim().equals("msg")) { return MimeType.MSG; } if (fileExt.trim().equals("odf")) { return MimeType.ODF; } if (fileExt.trim().equals("odp")) { return MimeType.ODP; } if (fileExt.trim().equals("ods")) { return MimeType.ODS; } if (fileExt.trim().equals("ods.p7m")) { return MimeType.ODS_P7M; } if (fileExt.trim().equals("odt")) { return MimeType.ODT; } if (fileExt.trim().equals("odt.p7m")) { return MimeType.ODT_P7M; } if (fileExt.trim().equals("p7m")) { return MimeType.P7M; } if (fileExt.trim().equals("p7s")) { return MimeType.P7S; } if (fileExt.trim().equals("pdf")) { return MimeType.PDF; } if (fileExt.trim().equals("pdf.p7m")) { return MimeType.PDF_P7M; } if (fileExt.trim().equals("png")) { return MimeType.PNG; } if (fileExt.trim().equals("pot")) { return MimeType.POT; } if (fileExt.trim().equals("ppa")) { return MimeType.PPA; } if (fileExt.trim().equals("pps")) { return MimeType.PPS; } if (fileExt.trim().equals("ppsx")) { return MimeType.PPSX; } if (fileExt.trim().equals("ppt")) { return MimeType.PPT; } if (fileExt.trim().equals("pptx")) { return MimeType.PPTX; } if (fileExt.trim().equals("ppz")) { return MimeType.PPZ; } if (fileExt.trim().equals("psd")) { return MimeType.PSD; } if (fileExt.trim().equals("rtf")) { return MimeType.RTF; } if (fileExt.trim().equals("rtf.p7m")) { return MimeType.RTF_P7M; } if (fileExt.trim().equals("thmx")) { return MimeType.THMX; } if (fileExt.trim().equals("tif")) { return MimeType.TIF; } if (fileExt.trim().equals("tif.p7m")) { return MimeType.TIF_P7M; } if (fileExt.trim().equals("tiff")) { return MimeType.TIFF; } if (fileExt.trim().equals("tiff.p7m")) { return MimeType.TIFF_P7M; } if (fileExt.trim().equals("txt")) { return MimeType.TXT; } if (fileExt.trim().equals("txt.p7m")) { return MimeType.TXT_P7M; } if (fileExt.trim().equals("xls")) { return MimeType.XLS; } if (fileExt.trim().equals("xls.p7m")) { return MimeType.XLS_P7M; } if (fileExt.trim().equals("xlsx")) { return MimeType.XLSX; } if (fileExt.trim().equals("xml")) { return MimeType.XML; } if (fileExt.trim().equals("xml.p7m")) { return MimeType.XML_P7M; } if (fileExt.trim().equals("zip")) { return MimeType.ZIP; } return MimeType.PDF; } private DataHandler setMTOMEncoding (DataHandler dh) throws IOException { Base64Binary bb = new Base64Binary(); bb.setBase64Binary( dh ); //System.out.println("CONTENTTYPE:" + dh.getContentType()); return bb.getBase64Binary(); } private String calcolaImprontaInformatica(InputStream ist) throws Exception { DataInputStream fis = new DataInputStream(ist); //System.out.println("ist PRIMA:" + ist.available()); //String impronta = org.apache.commons.codec.digest.DigestUtils.sha256Hex(fis); String impronta = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis); //System.out.println("ist DOPO:" + ist.available()); return impronta; } private static void setLog(String pathLog, String str, String type) throws IOException { try { DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); Date date = new Date(); java.io.File path = new java.io.File(pathLog.replace('/', java.io.File.separator.charAt(0))); if (!path.exists()) { path.mkdirs(); } java.io.File fileLog = new java.io.File(pathLog+java.io.File.separator+nomeFileLog); // Does the file already exist if(!fileLog.exists()) { fileLog.createNewFile(); } /* FileWriter fstream = new FileWriter(pathLog+java.io.File.separator+nomeFileLog,true); BufferedWriter out = new BufferedWriter(fstream); // FORMATTAZIONE PER IL WEB (bold sulla data) //out.write("" + dateFormat.format(date) + " " + type + " " + str+"\n"); // NESSUNA FORMATTAZIONE //out.write(dateFormat.format(date) + " " + type + " " + str+"\r\n"); out.write(dateFormat.format(date) + " " + type + " " + str); out.newLine(); //Close the output stream out.close(); */ FileOutputStream outputStream = new FileOutputStream(pathLog+java.io.File.separator+nomeFileLog,true); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8"); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(dateFormat.format(date) + " " + type + " " + str+"\r\n"); // bufferedWriter.newLine(); bufferedWriter.close(); } catch(Exception e) { e.printStackTrace(); } } /* * USAGE: * removeAndJoin("originalString","§§","string2remove") */ private static String removeAndJoin(String s, String separator, String toRemove) { String ret = ""; String[] aa = StringUtils.splitByWholeSeparator(s, separator); if (Arrays.asList(aa).contains(toRemove)) { ArrayList al = new ArrayList(Arrays.asList(aa)); al.remove(toRemove); ret = StringUtils.join(al, separator); } return ret; } private static void getInfoAllegati() { for(int i=0;i" + myString[j]); } } } private static ArrayList deltaArrays (ArrayList firstList, ArrayList secondList) { secondList.removeAll(firstList); return secondList; } public Map getHashMapTokens() throws NotesException { Document newDoc = db.getProfileDocument("RegistroGiornaliero", "CS"); RichTextItem rt = (RichTextItem)newDoc.getFirstItem("DateToken"); if (rt == null) { return null; } String[] listToken = StringUtils.splitByWholeSeparator(rt.getUnformattedText(),"§§"); Map mapToken = new HashMap(); for (int k=0; k