DriverRegistroServiziDB_documentiLIB.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.registry.driver.db;
import static org.openspcoop2.core.constants.CostantiDB.CREATE;
import static org.openspcoop2.core.constants.CostantiDB.DELETE;
import static org.openspcoop2.core.constants.CostantiDB.UPDATE;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.openspcoop2.core.commons.DBUtils;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.registry.Documento;
import org.openspcoop2.core.registry.constants.ProprietariDocumento;
import org.openspcoop2.core.registry.driver.BeanUtilities;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.utils.jdbc.IJDBCAdapter;
import org.openspcoop2.utils.jdbc.JDBCAdapterFactory;
import org.openspcoop2.utils.jdbc.JDBCUtilities;
import org.openspcoop2.utils.sql.ISQLQueryObject;
import org.openspcoop2.utils.sql.SQLObjectFactory;
/**
* Classe utilizzata per effettuare query ad un registro dei servizi openspcoop
* formato db.
*
*
* @author Sandra Giangrandi (sandra@link.it)
* @author Stefano Corallo (corallo@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class DriverRegistroServiziDB_documentiLIB {
public static void CRUDDocumento(int type, List<Documento> documenti, long idProprietario,
ProprietariDocumento tipologiaProprietarioDocumento, Connection connection,
String tipoDatabase) throws DriverRegistroServiziException {
// NOTA: l'update dei documenti, essendo mega di documenti non puo' essere implementata come delete + create
PreparedStatement stm = null;
ResultSet rs=null;
String sqlQuery;
if(idProprietario <= 0 )
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] id proprietario non definito");
IJDBCAdapter jdbcAdapter = null;
try {
jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(tipoDatabase);
switch (type) {
case CREATE:
if((documenti == null))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] L'oggetto documenti non puo essere null");
for(int i=0; i<documenti.size(); i++){
Documento doc = documenti.get(i);
if(doc.getFile()==null || "".equals(doc.getFile()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Nome non definito per documento ["+i+"]");
if(doc.getRuolo()==null || "".equals(doc.getRuolo()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Ruolo non definito per documento ["+doc.getFile()+"]");
if(doc.getTipo()==null || "".equals(doc.getTipo()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Tipo non definito per documento ["+doc.getFile()+"]");
if(doc.getByteContenuto()==null || doc.getByteContenuto().length<=0)
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Contenuto non definito per documento ["+doc.getFile()+"]");
BeanUtilities.validateTipoRuolo(doc.getTipo(),doc.getRuolo());
byte[] contenuto = doc.getByteContenuto();
if(contenuto.length<3){
String test = new String(contenuto);
if("".equals(test.trim().replaceAll("\n", ""))){
// eliminare \n\n
contenuto = null;
}
}
// create
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addInsertField("ruolo", "?");
sqlQueryObject.addInsertField("tipo", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("id_proprietario", "?");
sqlQueryObject.addInsertField("tipo_proprietario", "?");
if(contenuto!=null)
sqlQueryObject.addInsertField("contenuto", "?");
if(doc.getOraRegistrazione()!=null)
sqlQueryObject.addInsertField("ora_registrazione", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = connection.prepareStatement(sqlQuery);
stm.setString(1, doc.getRuolo());
stm.setString(2, doc.getTipo());
stm.setString(3, doc.getFile());
stm.setLong(4, idProprietario);
stm.setString(5, tipologiaProprietarioDocumento.toString());
int index = 6;
if(contenuto!=null){
jdbcAdapter.setBinaryData(stm,index,contenuto);
index++;
}
if(doc.getOraRegistrazione()!=null){
stm.setTimestamp(index, new Timestamp(doc.getOraRegistrazione().getTime()));
index++;
}
DriverRegistroServiziDB_LIB.log.debug("CRUDConnettore CREATE : \n" + DBUtils.formatSQLString(sqlQuery, doc.getRuolo(), doc.getTipo(), doc.getFile(), idProprietario, tipologiaProprietarioDocumento.toString()));
int n = stm.executeUpdate();
stm.close();
DriverRegistroServiziDB_LIB.log.debug("Inserted " + n + " row(s)");
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addSelectField("ora_registrazione");
sqlQueryObject.addWhereCondition("ruolo = ?");
sqlQueryObject.addWhereCondition("tipo = ?");
sqlQueryObject.addWhereCondition("nome = ?");
sqlQueryObject.addWhereCondition("id_proprietario = ?");
sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = connection.prepareStatement(sqlQuery);
stm.setString(1, doc.getRuolo());
stm.setString(2, doc.getTipo());
stm.setString(3, doc.getFile());
stm.setLong(4, idProprietario);
stm.setString(5, tipologiaProprietarioDocumento.toString());
DriverRegistroServiziDB_LIB.log.debug("Recupero idConnettore e oraRegistrazione inserito : \n" + DBUtils.formatSQLString(sqlQuery,doc.getRuolo(), doc.getTipo(), doc.getFile(), idProprietario, tipologiaProprietarioDocumento.toString()));
rs = stm.executeQuery();
if (rs.next()) {
documenti.get(i).setId(rs.getLong("id"));
documenti.get(i).setOraRegistrazione(rs.getTimestamp("ora_registrazione"));
} else {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDConnettore] Errore tentanto di effettuare la select dopo una create, non riesco a recuperare l'id!");
}
rs.close();
stm.close();
}
break;
case UPDATE:
if((documenti == null))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] L'oggetto documenti non puo essere null");
// Prelevo vecchia lista
List<Documento> oldLista = null;
try{
oldLista = DriverRegistroServiziDB_documentiLIB.getListaDocumenti(idProprietario,tipologiaProprietarioDocumento, false, connection, tipoDatabase);
}catch(DriverRegistroServiziNotFound dNotFound){
oldLista = new ArrayList<Documento>();
}
// Gestico la nuova immagine
for(int i=0; i<documenti.size(); i++){
Documento doc = documenti.get(i);
if(doc.getFile()==null || "".equals(doc.getFile()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Nome non definito per documento ["+i+"]");
if(doc.getRuolo()==null || "".equals(doc.getRuolo()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Ruolo non definito per documento ["+doc.getFile()+"]");
if(doc.getTipo()==null || "".equals(doc.getTipo()))
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Tipo non definito per documento ["+doc.getFile()+"]");
BeanUtilities.validateTipoRuolo(doc.getTipo(),doc.getRuolo());
//if(doc.getId()<=0){
// Rileggo sempre id, puo' essere diverso (es. importato tramite sincronizzazioni)
String tipologiaProprietarioDocumentoString = null;
if(tipologiaProprietarioDocumento!=null){
tipologiaProprietarioDocumentoString = tipologiaProprietarioDocumento.toString();
}
doc.setId(DBUtils.getIdDocumento(doc.getFile(), doc.getTipo(), doc.getRuolo(), idProprietario, connection,
DriverRegistroServiziDB_LIB.tipoDB, tipologiaProprietarioDocumentoString));
//}
// L'ora di registrazione deve essere impostata solo se non presente, in tale caso siamo in un caso di creazione del nuovo documento
if(doc.getOraRegistrazione()==null){
doc.setOraRegistrazione(new Date());
}
// Assegno corretto idProprietario se id e' diverso (es. importato tramite sincronizzazioni)
doc.setIdProprietarioDocumento(idProprietario);
boolean documentoGiaPresente = false;
boolean documentoDaAggiornare = false;
if(doc.getId()>0){
for(int j=0; j<oldLista.size(); j++){
Documento old = oldLista.get(j);
/*System.out.println("OLD["+old.getRuolo()+"]==ATTUALE["+doc.getRuolo()+"] ("+doc.getRuolo().equals(old.getRuolo())+")");
System.out.println("OLD["+old.getTipo()+"]==ATTUALE["+doc.getTipo()+"] ("+doc.getTipo().equals(old.getTipo())+")");
System.out.println("OLD["+old.getFile()+"]==ATTUALE["+doc.getFile()+"] ("+doc.getFile().equals(old.getFile())+")");
System.out.println("OLD["+old.getIdProprietarioDocumento().longValue()+"]==ATTUALE["+doc.getIdProprietarioDocumento().longValue()+"] ("+(doc.getIdProprietarioDocumento().longValue() == old.getIdProprietarioDocumento().longValue())+")");
System.out.println("OLD["+old.getTipoProprietarioDocumento()+"]==ATTUALE["+tipologiaProprietarioDocumento+"] ("+tipologiaProprietarioDocumento.equals(old.getTipoProprietarioDocumento())+")");
if(doc.getRuolo().equals(old.getRuolo()) &&
doc.getTipo().equals(old.getTipo()) &&
doc.getFile().equals(old.getFile()) &&
( (doc.getIdProprietarioDocumento().longValue()) == (old.getIdProprietarioDocumento().longValue()) ) &&
tipologiaProprietarioDocumento.equals(old.getTipoProprietarioDocumento()) ){*/
//System.out.println("OLD["+old.getId().longValue()+"]==ATTUALE["+doc.getId().longValue()+"] ("+((doc.getId().longValue() == old.getId().longValue()))+")");
if(doc.getId().longValue() == old.getId().longValue()){
documentoGiaPresente = true; // non devo fare una insert, ma una update...
if(doc.getOraRegistrazione()==null)
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] OraRegistrazione non definita per documento, precedentemente gia inserito, ["+doc.getFile()+"] ["+doc.getTipo()+"] ["+tipologiaProprietarioDocumento+"] ["+idProprietario+"]");
// rimuovo la vecchia immagine del documento dalla lista dei doc vecchi
oldLista.remove(j);
// Il documento e' lo stesso, rimane da verificare che sia un documento successivo di modifica.
if(doc.getOraRegistrazione().after(old.getOraRegistrazione())){
documentoDaAggiornare = true;
}
}
}
}
byte[] contenuto = null;
if( (documentoGiaPresente == false) || (documentoDaAggiornare) ){
// Il contenuto ci deve essere
if(doc.getByteContenuto()==null || doc.getByteContenuto().length<=0)
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Contenuto non definito per documento ["+doc.getFile()+"] ["+doc.getTipo()+"] ["+tipologiaProprietarioDocumento+"] ["+idProprietario+"]");
contenuto = doc.getByteContenuto();
if(contenuto.length<3){
String test = new String(contenuto);
if("".equals(test.trim().replaceAll("\n", ""))){
// eliminare \n\n
contenuto = null;
}
}
}
if(documentoGiaPresente){
if(documentoDaAggiornare){
// update
long idDocumento = doc.getId();
if(idDocumento<=0){
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] ID non definito per documento da aggiorare ["+doc.getFile()+"] ["+doc.getTipo()+"] ["+tipologiaProprietarioDocumento+"] ["+idProprietario+"]");
}
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addUpdateTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addUpdateField("tipo", "?");
sqlQueryObject.addUpdateField("nome", "?");
sqlQueryObject.addUpdateField("contenuto", "?");
sqlQueryObject.addUpdateField("ora_registrazione", "?");
sqlQueryObject.addWhereCondition("id=?");
sqlQuery = sqlQueryObject.createSQLUpdate();
stm = connection.prepareStatement(sqlQuery);
stm.setString(1, doc.getTipo());
stm.setString(2, doc.getFile());
jdbcAdapter.setBinaryData(stm,3,contenuto);
stm.setTimestamp(4, new Timestamp(doc.getOraRegistrazione().getTime()));
stm.setLong(5, idDocumento);
stm.executeUpdate();
stm.close();
}
}else{
// insert
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addInsertField("ruolo", "?");
sqlQueryObject.addInsertField("tipo", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("id_proprietario", "?");
sqlQueryObject.addInsertField("tipo_proprietario", "?");
if(contenuto!=null)
sqlQueryObject.addInsertField("contenuto", "?");
if(doc.getOraRegistrazione()!=null)
sqlQueryObject.addInsertField("ora_registrazione", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = connection.prepareStatement(sqlQuery);
stm.setString(1, doc.getRuolo());
stm.setString(2, doc.getTipo());
stm.setString(3, doc.getFile());
stm.setLong(4, idProprietario);
stm.setString(5, tipologiaProprietarioDocumento.toString());
int index = 6;
if(contenuto!=null){
jdbcAdapter.setBinaryData(stm,index,contenuto);
index++;
}
if(doc.getOraRegistrazione()!=null){
stm.setTimestamp(index, new Timestamp(doc.getOraRegistrazione().getTime()));
index++;
}
DriverRegistroServiziDB_LIB.log.debug("CRUDDocumento UPDATE : \n" + DBUtils.formatSQLString(sqlQuery, doc.getRuolo(), doc.getTipo(), doc.getFile(), idProprietario, tipologiaProprietarioDocumento.toString()));
int n = stm.executeUpdate();
stm.close();
DriverRegistroServiziDB_LIB.log.debug("Inserted " + n + " row(s)");
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("ruolo = ?");
sqlQueryObject.addWhereCondition("tipo = ?");
sqlQueryObject.addWhereCondition("nome = ?");
sqlQueryObject.addWhereCondition("id_proprietario = ?");
sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = connection.prepareStatement(sqlQuery);
stm.setString(1, doc.getRuolo());
stm.setString(2, doc.getTipo());
stm.setString(3, doc.getFile());
stm.setLong(4, idProprietario);
stm.setString(5, tipologiaProprietarioDocumento.toString());
DriverRegistroServiziDB_LIB.log.debug("Recupero idConnettore inserito : \n" + DBUtils.formatSQLString(sqlQuery,doc.getRuolo(), doc.getTipo(), doc.getFile(), idProprietario,tipologiaProprietarioDocumento.toString()));
rs = stm.executeQuery();
if (rs.next()) {
documenti.get(i).setId(rs.getLong("id"));
} else {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDConnettore] Errore tentanto di effettuare la select dopo una create, non riesco a recuperare l'id!");
}
rs.close();
stm.close();
}
}
if(oldLista.size()>0){
// Qualche documento e' stato cancellato.
// Non e' piu' presente.
for(int j=0; j<oldLista.size(); j++){
Documento old = oldLista.get(j);
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addWhereCondition("id=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = connection.prepareStatement(sqlQuery);
stm.setLong(1, old.getId());
stm.executeUpdate();
stm.close();
}
}
break;
case DELETE:
// delete
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addWhereCondition("id_proprietario=?");
sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLDelete();
stm = connection.prepareStatement(sqlQuery);
stm.setLong(1, idProprietario);
stm.setString(2, tipologiaProprietarioDocumento.toString());
stm.executeUpdate();
stm.close();
DriverRegistroServiziDB_LIB.log.debug("CRUDDocumento DELETE : \n" + DBUtils.formatSQLString(sqlQuery, idProprietario));
break;
}
} catch (SQLException se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] SQLException : " + se.getMessage(),se);
}catch (Exception se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDDocumento] Exception : " + se.getMessage(),se);
} finally {
JDBCUtilities.closeResources(rs, stm);
}
}
public static List<Documento> getListaDocumenti(long idProprietario, ProprietariDocumento tipologiaProprietarioDocumento, boolean readBytes,
Connection connection,
String tipoDatabase) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
return DriverRegistroServiziDB_documentiLIB.getListaDocumenti(null,idProprietario,tipologiaProprietarioDocumento,readBytes,connection,tipoDatabase);
}
public static List<Documento> getListaDocumenti(String ruoloDocumenti, long idProprietario,
ProprietariDocumento tipologiaProprietarioDocumento, boolean readBytes, Connection connection,
String tipoDatabase) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
PreparedStatement stm = null;
ResultSet rs=null;
String sqlQuery;
if(idProprietario <= 0 )
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getListaDocumenti] id proprietario non definito");
try {
List<Documento> documenti = new ArrayList<Documento>();
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_proprietario = ?");
sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
sqlQueryObject.setANDLogicOperator(true);
if(ruoloDocumenti!=null)
sqlQueryObject.addWhereCondition("ruolo = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = connection.prepareStatement(sqlQuery);
stm.setLong(1, idProprietario);
stm.setString(2, tipologiaProprietarioDocumento.toString());
if(ruoloDocumenti!=null)
stm.setString(3, ruoloDocumenti);
rs = stm.executeQuery();
while(rs.next()){
Documento doc = DriverRegistroServiziDB_documentiLIB.getDocumento(rs.getLong("id"),readBytes, connection,tipoDatabase);
documenti.add(doc);
}
if(documenti.size()<=0)
throw new DriverRegistroServiziNotFound("Documenti con ruolo["+ruoloDocumenti+"] e idProprietario["+idProprietario+"] non trovati");
return documenti;
} catch (SQLException se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getListaDocumenti] SQLException : " + se.getMessage(),se);
}catch (DriverRegistroServiziNotFound dnf) {
throw dnf;
}catch (Exception se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getListaDocumenti] Exception : " + se.getMessage(),se);
} finally {
JDBCUtilities.closeResources(rs, stm);
}
}
public static Documento getDocumento(long id, boolean readBytes, Connection connection, String tipoDatabase) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
PreparedStatement stm = null;
ResultSet rs=null;
String sqlQuery;
if(id <= 0 )
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getDocumento] id non definito");
try {
IJDBCAdapter jdbcAdapter = null;
if(readBytes){
// jdbcAdapter = org.openspcoop.utils.jdbc.JDBCAdapterFactory.createJDBCAdapter(DriverRegistroServiziDB_LIB.tipoDB);
jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(tipoDatabase);
}
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
sqlQueryObject.addSelectField("ruolo");
sqlQueryObject.addSelectField("tipo");
sqlQueryObject.addSelectField("nome");
sqlQueryObject.addSelectField("id_proprietario");
sqlQueryObject.addSelectField("tipo_proprietario");
sqlQueryObject.addSelectField("ora_registrazione");
sqlQueryObject.addSelectField("id");
if(readBytes)
sqlQueryObject.addSelectField("contenuto");
sqlQueryObject.addWhereCondition("id = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = connection.prepareStatement(sqlQuery);
stm.setLong(1, id);
rs = stm.executeQuery();
Documento doc = null;
if(rs.next()){
doc = new Documento();
doc.setRuolo(rs.getString("ruolo"));
doc.setTipo(rs.getString("tipo"));
doc.setFile(rs.getString("nome"));
doc.setIdProprietarioDocumento(rs.getLong("id_proprietario"));
doc.setTipoProprietarioDocumento(rs.getString("tipo_proprietario"));
doc.setOraRegistrazione(rs.getTimestamp("ora_registrazione"));
doc.setId(rs.getLong("id"));
if(readBytes){
doc.setByteContenuto(jdbcAdapter.getBinaryData(rs,8));
}
}
if(doc==null)
throw new DriverRegistroServiziNotFound("Documento con id["+id+"] non trovato");
return doc;
} catch (SQLException se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getDocumento] SQLException : " + se.getMessage(),se);
}catch (DriverRegistroServiziNotFound dnf) {
throw dnf;
}catch (Exception se) {
throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::getDocumento] Exception : " + se.getMessage(),se);
} finally {
JDBCUtilities.closeResources(rs, stm);
}
}
}