//$Header: /cvsroot-fuse/mec-as2/39/mendelson/comm/as2/partner/PartnerSystemAccessDB.java,v 1.1 2012/04/18 14:10:32 heller Exp $ package de.mendelson.comm.as2.partner; import de.mendelson.comm.as2.notification.Notification; import de.mendelson.comm.as2.server.AS2Server; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.logging.Logger; /* * Copyright (C) mendelson-e-commerce GmbH Berlin Germany * * This software is subject to the license agreement set forth in the license. * Please read and agree to all terms before using this software. * Other product and brand names are trademarks of their respective owners. */ /** * Database access wrapper for partner system information. This is the information that is * collected if the AS2 system connects to an other AS2 system, it will be displayed in the * partner panel * @author S.Heller * @version $Revision: 1.1 $ */ public class PartnerSystemAccessDB { /**Logger to log inforamtion to*/ private Logger logger = Logger.getLogger(AS2Server.SERVER_LOGGER_NAME); /**Connection to the database*/ private Connection configConnection; private Connection runtimeConnection; public PartnerSystemAccessDB(Connection configConnection, Connection runtimeConnection) { this.configConnection = configConnection; this.runtimeConnection = runtimeConnection; } public PartnerSystem getPartnerSystem(Partner partner) { PreparedStatement statement = null; ResultSet result = null; try { statement = this.configConnection.prepareStatement("SELECT * FROM partnersystem WHERE partnerid=?"); statement.setEscapeProcessing(true); statement.setInt(1, partner.getDBId()); result = statement.executeQuery(); if (result.next()) { PartnerSystem system = new PartnerSystem(); system.setPartner(partner); system.setAs2Version(result.getString("as2version")); system.setProductName(result.getString("productname")); system.setCEM(result.getInt("cem") == 1); system.setCompression(result.getInt("compression") == 1); system.setMa(result.getInt("ma") == 1); return (system); } } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.getPartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); return (null); } finally { if (statement != null) { try { statement.close(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.getPartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } } if (result != null) { try { result.close(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.getPartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } } } return (null); } /**Updates a single partnersystem in the db*/ private void updatePartnerSystem(PartnerSystem system) { PreparedStatement statement = null; try { statement = this.configConnection.prepareStatement( "UPDATE partnersystem SET as2version=?,productname=?,compression=?,ma=?,cem=? WHERE partnerid=?"); statement.setEscapeProcessing(true); statement.setString(1, system.getAs2Version()); statement.setString(2, system.getProductName()); statement.setInt(3, system.supportsCompression() ? 1 : 0); statement.setInt(4, system.supportsMA() ? 1 : 0); statement.setInt(5, system.supportsCEM() ? 1 : 0); statement.setInt(6, system.getPartner().getDBId()); statement.execute(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.updatePartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } finally { if (statement != null) { try { statement.close(); } catch (Exception e) { //nop } } } } /**Deletes a single partnersystem from the database */ public void deletePartnerSystem(Partner partner) { PreparedStatement statement = null; try { statement = this.configConnection.prepareStatement("DELETE FROM partnersystem WHERE partnerid=?"); statement.setEscapeProcessing(true); statement.setInt(1, partner.getDBId()); statement.execute(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.deletePartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } finally { if (statement != null) { try { statement.close(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.deletePartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } } } } /**Inserts a new entry into the database or updates an existing one*/ public synchronized void insertOrUpdatePartnerSystem(PartnerSystem partnerSystem) { PartnerSystem system = this.getPartnerSystem(partnerSystem.getPartner()); if (system == null) { this.insertPartnerSystem(partnerSystem); } else { this.updatePartnerSystem(partnerSystem); } } /**Inserts a new partnersystem into the database */ private void insertPartnerSystem(PartnerSystem partnerSystem) { PreparedStatement statement = null; try { statement = this.configConnection.prepareStatement( "INSERT INTO partnersystem(partnerid,as2version,productname,compression,ma,cem)VALUES(?,?,?,?,?,?)"); statement.setEscapeProcessing(true); statement.setInt(1, partnerSystem.getPartner().getDBId()); statement.setString(2, partnerSystem.getAs2Version()); statement.setString(3, partnerSystem.getProductName()); statement.setInt(4, partnerSystem.supportsCompression() ? 1 : 0); statement.setInt(5, partnerSystem.supportsMA() ? 1 : 0); statement.setInt(6, partnerSystem.supportsCEM() ? 1 : 0); statement.execute(); } catch (Exception e) { this.logger.severe("PartnerSystemAccessDB.insertPartnerSystem: " + e.getMessage()); Notification.systemFailure(this.configConnection, this.runtimeConnection, e); } finally { if (statement != null) { try { statement.close(); } catch (Exception e) { //nop } } } } }