/* * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * * This file is part of jAPS software. * jAPS is a free software; * you can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * */ package com.agiletec.aps.system.services.keygenerator; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import com.agiletec.aps.system.common.AbstractDAO; /** * Data Access Object per la generazione di chiavi univoche. * @author S.Didaci - E.Santoboni */ public class KeyGeneratorDAO extends AbstractDAO implements IKeyGeneratorDAO { /** * Estrae la chiave presente nel db. * Il metodo viene chiamato solo in fase di inizializzazione. * @return La chiave estratta. */ public int getUniqueKey() { Connection conn = null; int currentKey = 0; Statement stat = null; ResultSet res = null; try { conn = this.getConnection(); stat = conn.createStatement(); res = stat.executeQuery(EXTRACT_KEY); if (res.next()) { currentKey = res.getInt(1); } } catch (Throwable e) { processDaoException(e, "Error while getting the unique key", "getUniqueKey"); } finally { closeDaoResources(res, stat, conn); } return currentKey; } /** * Aggiorna la chiave univoca nel db. * @param currentKey Il valore della chiave corrente. */ public synchronized void updateKey(int currentKey) { Connection conn = null; PreparedStatement stat = null; try { conn = this.getConnection(); conn.setAutoCommit(false); stat = conn.prepareStatement(UPDATE_KEY); stat.setInt(1, currentKey); stat.executeUpdate(); conn.commit(); } catch (Throwable e) { this.executeRollback(conn); processDaoException(e, "Error while updating a key", "getUpdateKey"); } finally { closeDaoResources(null, stat, conn); } } private final String EXTRACT_KEY = "SELECT keyvalue FROM uniquekeys"; private final String UPDATE_KEY = "UPDATE uniquekeys SET keyvalue = ? "; }