package com.fitbank.contentsmanager; import com.fitbank.common.Helper; import java.math.BigDecimal; import java.sql.Clob; import java.sql.Timestamp; import java.util.Date; import org.hibernate.SQLQuery; import org.hibernate.ScrollableResults; /** * Clase que permite copiar reglas bpm entre 2 base de datos diferentes. * * @author SoftwareHouse S.A. */ public class BpmRulesCloner { public void copyClobs() { Timestamp expire = Timestamp.valueOf("2999-12-31 00:00:00"); Timestamp now = new Timestamp(new Date().getTime()); try { SQLQuery query = Helper.createSQLQuery(Helper.getAuxiliarSession(), "SELECT CREGLABPM, PSEUDOCODIGO FROM TREGLASBPMDEFINICION WHERE FHASTA=:fhasta"); query.setTimestamp("fhasta", expire); ScrollableResults rs = query.scroll(); while (rs.next()) { try { String creglabpm = ((BigDecimal) rs.get(0)).toPlainString(); Clob pseudocodigo = (Clob) rs.get(1); Integer codeLength = Integer.valueOf(String.valueOf(pseudocodigo.length())); SQLQuery insert = Helper.createSQLQuery(Helper.getSession(), "INSERT INTO TREGLASBPMDEFINICION" + " (CREGLABPM, FHASTA, FDESDE, PSEUDOCODIGO)" + " VALUES(?, ?, ?, ?)"); insert.setString(0, creglabpm); insert.setTimestamp(1, expire); insert.setTimestamp(2, now); insert.setString(3, pseudocodigo.getSubString(1, codeLength)); insert.executeUpdate(); } catch (Exception m) { System.out.println("Error al ejecutar insert de CLOBS" + m. getStackTrace()); } } rs.close(); } catch (Exception e) { System.out.println("Error al ejecutar consulta original de CLOBS" + e.getStackTrace()); } } public static void main(String[] args) { BpmRulesCloner fu = new BpmRulesCloner(); try { ManagerUtils.openSession(); ManagerUtils.openAuxiliarSession(); fu.copyClobs(); } catch (Exception e) { System.out.println("Error al copiar CLOBS " + e.getStackTrace()); } } }