246 lines
6.0 KiB
Groovy
246 lines
6.0 KiB
Groovy
import com.dvelop.d3.server.Document
|
|
import com.dvelop.d3.server.core.D3Interface
|
|
import com.dvelop.d3.server.exceptions.SQLException
|
|
import com.dvelop.d3.server.exceptions.D3Exception
|
|
import groovy.transform.Field
|
|
|
|
D3Interface d3 = getProperty("d3");
|
|
|
|
@Field prg = "migration_nachverknuepfen.groovy";
|
|
@Field version = "0.1";
|
|
@Field kunde = "Dr. Kleeberg & Partner GmbH";
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// debug = 0 => es finden Änderungen am Datenbestand statt
|
|
// debug = 1 => es finden keine Änderungen am Datenbestand statt
|
|
@Field debug = 0;
|
|
|
|
@Field zieltabelle = "mig_multi_link_work";
|
|
|
|
|
|
@Field doku_id_ende = "6";
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
def debugtext;
|
|
|
|
switch (debug)
|
|
{
|
|
case 0:
|
|
debugtext = "ausgeschaltet";
|
|
break;
|
|
default:
|
|
debugtext = "eingeschaltet (keine Aenderungen am Datenbestand)";
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
xlog( d3, 4, "************************************************" );
|
|
xlog( d3, 4, "* Programm : " + prg );
|
|
xlog( d3, 4, "* Version : " + version );
|
|
xlog( d3, 4, "* Kunde : " + kunde );
|
|
xlog( d3, 4, "* geschrieben von : calb / d.velop AG" );
|
|
xlog( d3, 4, "* (c) d.velop AG" );
|
|
xlog( d3, 4, "************************************************" );
|
|
|
|
|
|
xlog( d3, 4, "Parameter: " );
|
|
xlog( d3, 4, "* zieltabelle : " + zieltabelle );
|
|
xlog( d3, 4, "* doku_id_ende : " + doku_id_ende );
|
|
xlog( d3, 4, "* DEBUG : " + debugtext );
|
|
|
|
|
|
|
|
|
|
xlog( d3, 4, "************************************************" );
|
|
|
|
|
|
|
|
def sqlQuery = "SELECT TOP (200) id, doku_id_father, doku_id_child, fehler FROM " + zieltabelle + " where doku_id_father like '%" + doku_id_ende + "' and fehler is null order by id";
|
|
|
|
xlog( d3, 5, sqlQuery );
|
|
|
|
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
|
def meldung, ergebnis, xdebug;
|
|
|
|
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
|
xlog( d3, 4, "************************************************" );
|
|
|
|
|
|
if ( resultRows.size() > 0 )
|
|
{
|
|
def i = 0;
|
|
|
|
resultRows.each
|
|
{
|
|
i++;
|
|
if ( debug == 0 )
|
|
{
|
|
ergebnis = d3.call.link_documents( it.doku_id_father, it.doku_id_child, "Master", false, false );
|
|
}
|
|
else
|
|
{
|
|
ergebnis = 0
|
|
}
|
|
|
|
|
|
|
|
if ( ergebnis == 0 )
|
|
{
|
|
xdebug = "";
|
|
|
|
if ( debug != 0 )
|
|
{
|
|
xdebug = " (DEBUG)";
|
|
}
|
|
|
|
meldung = "OK" + xdebug;
|
|
}
|
|
else
|
|
{
|
|
meldung = "Fehler: RC [" + ergebnis + "]";
|
|
}
|
|
|
|
xlog( d3, 4, "Nr. " + i + " / ID " + it.id + ": (C) [" + it.doku_id_child + "] => (F) [" + it.doku_id_father + "] => " + meldung );
|
|
|
|
if ( debug == 0 )
|
|
{
|
|
fehler( d3, meldung, (int) it.id );
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def xlog( D3Interface d3, int loglevel, String logtext )
|
|
{
|
|
def logdatei = "d:\\d3\\apps\\" + prg + "_" + doku_id_ende + ".txt";
|
|
def g_loglevel = 5;
|
|
def g_logdirect = "BEIDE"; // BEIDE oder D3LOG oder DATEI
|
|
def date = new Date();
|
|
def zeitstempel = date.format( "yyyy.MM.dd HH:mm:ss", TimeZone.getTimeZone('CET') );
|
|
def loglevel_lang = "[INFO ]";
|
|
|
|
|
|
|
|
|
|
|
|
if ( loglevel <= g_loglevel )
|
|
{
|
|
switch ( loglevel )
|
|
{
|
|
case 1:
|
|
loglevel_lang = "[FATAL]";
|
|
|
|
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
d3.log.critical( logtext );
|
|
}
|
|
break;
|
|
case 2:
|
|
loglevel_lang = "[ERROR]";
|
|
|
|
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
d3.log.error( logtext );
|
|
}
|
|
break;
|
|
case 3:
|
|
loglevel_lang = "[WARN ]";
|
|
|
|
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
d3.log.warn( logtext );
|
|
}
|
|
break;
|
|
case 4:
|
|
loglevel_lang = "[INFO ]";
|
|
|
|
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
d3.log.info( logtext );
|
|
}
|
|
break;
|
|
case 5:
|
|
loglevel_lang = "[DEBUG]";
|
|
// Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log.
|
|
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
d3.log.debug( logtext );
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if ( ( g_logdirect == "DATEI" ) || ( g_logdirect == "BEIDE" ) )
|
|
{
|
|
new File( logdatei ).append( zeitstempel + " " + loglevel_lang + " " + logtext + "\n", "UTF8" );
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def fehler( D3Interface d3, String meldung, int id )
|
|
{
|
|
def meldung_db;
|
|
|
|
if ( meldung.length() > 250 )
|
|
{
|
|
meldung_db = meldung.substring( 0, 249 );
|
|
}
|
|
else
|
|
{
|
|
meldung_db = meldung;
|
|
}
|
|
|
|
if ( debug == 0 )
|
|
{
|
|
sql = "update " + zieltabelle + " set fehler = '" + meldung_db + "' where id = " + id;
|
|
d3.sql.execute( sql );
|
|
}
|
|
|
|
//xlog( d3, 2, meldung );
|
|
}
|
|
|
|
|
|
|
|
|
|
|