Search This Blog

2012-11-26

a sh stub

      #!/bin/bash
      # File: sh-stub.sh v.1.3.1 docs at the end 
      umask 000 ; 
 
      # print the commands 
      # set -x
      # print each input line as well
      set -v
      # exit the script if any statement returns a non-true return value. gotcha !!!
      # set -e 
 
      # SET THE CMD ARGS 
 
 
      # set the variables from the $0.hostname.conf file which has ini like syntax
      doSetVars(){
         
         MyDir=`dirname $(readlink -f $0)`
         Tmp="$MyDir/tmp/tmp.$$"
         mkdir -p $Tmp           #create the tmp dir if it does not exist 
         ( set -o posix ; set ) >$Tmp/variables.before 
         MyName=`basename $0`
         IniFile="$MyDir/$MyName.`hostname`.conf"
         IniSection=MainSection
         LogFile="$MyDir/$MyName.log"
         # get the machine / host specific configuration 
         for i in {1..5} ; do cd .. ;done ;
         ProductBaseDir=`pwd`;
         export ProductBaseDir;
         cd "$MyDir/"
         doParseIniFile
         #source $0
         ( set -o posix ; set ) >$Tmp/variables.after
         doLog " Using the following vars :"
         cmd="comm --nocheck-order -3 $Tmp/variables.before $Tmp/variables.after"
         doRunCmdAndLog $cmd
         rm -fr "$Tmp/"
      }
      #eof function doSetVars
 
 
      # parse the ini like $0.hostname.conf and set the variables
      doParseIniFile(){
         eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
             -e 's/;.*$//' \
             -e 's/[[:space:]]*$//' \
             -e 's/^[[:space:]]*//' \
             -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
            < $IniFile \
             | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
      }
      #eof function doParseIniFile
 
 
      # run a command and log the call and its output to the LogFile
      # usage: doRunCmdAndLog $cmd
      doRunCmdAndLog(){
                  cmd="$*" ; 
                  doLog " DEBUG running cmd : \"$cmd\""
                  Msg=$($cmd 2>&1)
              [ $? -eq 0 ]  || doLog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
                  doLog " DEBUG : cmdoutput : \"$Msg\""
      }
      #eof function doRunCmdAndLog
 
 
      #
      # run a command on failure exit with message
      # usage: doRuncmdOrExit $cmd
      doRuncmdOrExit(){
            cmd="$*" ; 
            doLog " DEBUG running cmd : \"$cmd\""
            Msg=$($cmd 2>&1)
            # if error occured during the execution exit with error
            [ $? -eq 0 ] || doExit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
            #if no error occured just log the message
            doLog " DEBUG : cmdoutput : \"$Msg\""
      }
      #eof function doRuncmdOrExit
 
      #
      # runs procs in parallel on a file set from the the find command 
      doRunProcsInParallel(){
 
            cmd="zgrep $strToGrep '{}' >> $FileFilteredResults"
            #todo remove echo 
            doLog "RUNNING cmd find ${DirFindRoot} -type f  -name ${nameFilter} -print0 | xargs -0 -I '{}' sh -c $cmd!!!"
            #Action !!!
            #debug sleep 1
            find ${DirFindRoot} -type f  -name ${nameFilter} -print0 | xargs -0 -I '{}' sh -c "$cmd"
 
      }
      #eof doRunProcsInParallel
 
 
      #
      # echo pass params and print them to a log file
      doLog(){
            # check terminal if exists echo 
            test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
            # check LogFile and 
            test -z $LogFile || {
              echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
            } #eof test
       } 
      # eof function doLog 
 
      #
      # perform the checks to ensure that all the vars needed to run are set 
      doCheckReadyToStart(){
 
         test -f $IniFile || doExit 1 "Cannot find IniFile : $IniFile" 
 
      }
      #eof function 
 
 
      # exit with passed status and message
      doExit(){
        ExitCode=0 
        case $1 in [0-9]) 
        ExitCode="$1";
          shift 1;
          esac 
          Msg="$*"
          test $ExitCode eq 0 || Msg=" ERROR --- ExitCode $ExitCode --- Msg : $Msg" 
          doLog " $Msg" 
          echo -e "\n\n"
          exit $ExitCode
      }
      #eof function Exit
 
 
 
 
 
      # the main function called 
      main(){
         doSetVars
         doCheckReadyToStart
        }
      #eof function main
 
 
      # Action !!!
      main
 
 
      # Purpose:
      # to provide an easy starting template for writing bash and sh scripts
      # with  the following features: 
      # - prints the set in the script variables
      # - separation of host specific vars into $0.`hostname`.conf file
      # - doLog function for both xterm and log file printing
      # - for loop examples with head removal and inline find and replace 
      # 
      # EOF File:sh_stub_cygwin.sh
      #
      # VersionHistory: 
      # 1.4.1 --- 2012-11-09 13:10:03 --- ysg --- Refactoring 
      # 1.4.0 --- 2012-10-24 08:57:01 --- ysg --- Added the doRunProcsInParallel function 
      # 1.3.1 --- 2012-10-11 12:29:47 --- ysg --- doMethod naming , doExit change with ERROR
      # 1.3.0 --- 2012-05-20 18:48:08 --- ysg --- replacing cmd with error output
      # 1.2.6 --- 2012-05-02 20:41:11 --- ysg --- added for loop with pipes 
      # 1.1.0 --- ysg --- add runcmd with erro
      # 1.0.0 --- ysg --- Initial creation

2012-11-15

how-to select a windows window by a string from its title

:: file:sel.cmd v1.0.0 docs at the end 
:: HIDE OUTPUT
@ECHO OFF
 
:: START THIS SCRIPT MINIMIZED 
IF NOT DEFINED CMDWindow Set CMDWindow=%1&Start "Window SELECT" /MIN %0&Goto :EOF
 
:: GET THE FIRST COMMAND LINE PARAMETER WHICH IS THE STRING TO SEARCH FOR 
:: FROM THE ALL WINDOWS TITLS WHICH ARE OPENED ON THE WINDOWS TASKBAR 
set _StrToSearchFromWindowsTitlle="%CMDWindow%"
 
:: DEBUG echo the _StrToSearchFromWindowsTitlle is %_StrToSearchFromWindowsTitlle%
:: DEBUG PAUSE
 
:: DEBUG ECHO RUNNING : cmd /c "for /f %%i in ('cmdow /T ^| grep -i  %_StrToSearchFromWindowsTitlle% ^| cut -f 1 -d ^" ^"') do cmdow %%i /ACT /MAX"
:: DEBUG PAUSE
:: FOR EACH HANDLE OF THE OPENED WINDOWS ON THE TASKBAR , CHOOSE THE ONE WHICH HAS THE 
:: STRING TO SEARCH FOR, MAKE IT ACTIVE AND MAXIMIZE IT 
for /f %%i in ('cmdow /T ^| grep -i  %_StrToSearchFromWindowsTitlle% ^| cut -f 1 -d " "') do cmdow %%i /ACT /MAX
 
:: DEBUG PAUSE
:: NOW EXIT 
exit
 
 
:: Purpose 
:: to select and maximize the last window on the task bar having a string to search for 
:: 
:: USAGE: 
:: put in your windows path: call by , Start - Run - type : sel Opera 
:: expected result it will select the latest Opera instances which is opened on the task bar 
:: 
:: DEBUGGING 
:: find and replace the ":: DEBUG " with ":: DEBUG \n" with regex options on 
:: 
:: REQUIREMENTS 
:: Windows XP and above 
:: google download cmdow
:: a virus scanner not treating cmdow as virus !!! F-Secure does ...
:: google download win gnu utils grep 
:: google download win gnu utils cut 
:: 
:: VersionHistory 
:: 1.0.0 --- 2012-11-15 07:54:17 --- ysg --- Initial version 

2012-11-14

the ultimate one line for selecting the needed window in Windows by a string from the window title

WinLog + Run , type: 
cmd /c "for /f %i in ('cmdow /T ^| grep -i MANK^| cut -f 1 -d ^" ^"') do cmdow %i /ACT /MAX"

2012-11-08

xlt formatter for an exported informatica workflow

<?xml version="1.0"?>
<!-- file: formatter.xsl - v1.3.1. docs at the end -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
    <xsl:template match="/">
        <html>
            <head>
                <style type="text/css">
                    body { 
                    margin: 2% 3% 2% 10%;
                    }
 
                    .clsVerticalSpace2Cols { width: 100%; margin-top: 5% ;}
 
 
 
                    /* tables */
                    table {
                    font-family:arial;
                    background-color: #CDCDCD;
                    margin:10px 0pt 15px;
                    font-size: 11pt;
                    width: 100%;
                    text-align: left;
                    border: 1px solid
                    }
                    table thead tr th, table tfoot tr th {
                    background-color: #e6EEEE;
                    border: 1px solid #111111;
                    font-size: 12pt; 
                    padding: 3px;
 
                    }
                    table thead tr .header {
                    background-repeat: no-repeat;
                    background-position: center right;
                    cursor: pointer;
                    }
                    table tbody td {
                    color: #3D3D3D;
                    padding: 4px;
                    background-color: #FFF;
                    vertical-align: top;
                    }
                    table tbody tr.odd td {
                    background-color: #ffffff;    
                    }
                    table tbody tr.even td {
                    background-color: #f4f9fe;
                    }
 
 
                </style>
 
            </head>
            <body>
 
                <!-- START CHECK-LIST TABLE -->               
                <table id="sorter">
                    <thead>
                        <tr>
 
                            <th>CheckItemId</th> <th>CheckOrder</th> <th>Importance</th> <th>Level</th> <th>Tab</th> <th>Name</th> <th>Description </th> <th>IsMandatory</th> <th>IsNZSpecific</th> <th></th> 
 
                        </tr>
                    </thead>
                    <tr class="odd"><td>1</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>General</td> <td><a href="#Check-workflow-name">Check workflow name</a></td> <td>What is the workflow name</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="even"><td>2</td> <td>2</td> <td>1</td> <td>Workflow</td> <td>General</td> <td><a href="#Suspend-on-error">Suspend on error</a></td> <td>Onko Suspend on Error asetus wf on tasolla</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="odd"><td>3</td> <td>2</td> <td>1</td> <td>Workflow</td> <td>General</td> <td>Suspend on error not possible</td> <td>If Susspend on error is not set the lins between the sessions or the worklets should be ALL ok </td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="even"><td>4</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>General</td> <td>In the Worklet check the <a href="#Fail-Parent-If-task-fails">"Fail parent if this task fails"</a></td> <td>In the Worklet check the "Fail parent if this task fails"</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="odd"><td>5</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Check that <a href="#Fail-Parent-If-task-fails">"Fail Parent If task fails"</a> is checked</td> <td>Check that "Fail Parent If task fails" is checked</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="even"><td>6</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file directory</a></td> <td>Session log file directory should be unique</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="odd"><td>7</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file </a>should be unique</td> <td>Session log file should be uniqeu</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="even"><td>8</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file directory </a> must not be the default one </td> <td>Do not use the PMSessionLogs environmentvariable - the default setting</td> <td>1</td> <td>0</td> <td></td> </tr>
                    <tr class="odd"><td>9</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Commit Interval </td> <td>If the target is Netezza the setting for "Commit interfal" must be > 1 000 000 </td> <td>0</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>10</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Sessions-Recovery-Strategy">Recovery strategy should be set to "Restart task"</a> </td> <td>Recovery strategy should be set to "Restart task". This is not applicable to all tasks </td> <td>1</td> <td>0</td> <td></td> </tr>
                <tr class="odd"><td>11</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Restart task</td> <td>Recovery strategy should be set to "Restart task". This is not applicable to all tasks </td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>12</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Enable high precision</td> <td>Enable high precision</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="odd"><td>13</td> <td>1</td> <td>1</td> <td>Session</td> <td>Config object</td> <td>Enable high precision</td> <td>Enable high precision</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>14</td> <td>1</td> <td>1</td> <td>FOLDER</td> <td>default_session_config</td> <td>Save session log by</td> <td>Save session log by timestamp</td> <td>1</td> <td>0</td> <td></td> </tr>
                <tr class="odd"><td>15</td> <td>1</td> <td>1</td> <td>FOLDER</td> <td>default_session_config</td> <td>Stop on errors to 1</td> <td>Stop on errors to 1</td> <td>1</td> <td>0</td> <td></td> </tr>
                <tr class="even"><td>16</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>Target options should NOT be left to the default settings. Only the allowed actions should be checked.</td> <td>1</td> <td>0</td> <td></td> </tr>
                <tr class="odd"><td>17</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used use the 007 delimiter. The 007 is ASCII Control G . The Bell mark</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>18</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used use "Escape character" must be \</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="odd"><td>19</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used Error log directory should be set to /Terra_NZ/logs</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>20</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Pre-Post SQL usage note in <a href="#list-of-sessions">session description</a></td> <td>If PRE or POST-SQL do add in the Session description ** PRE-SQL used ** </td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="odd"><td>21</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Session description</td> <td>Whenever possible do provide what is the main purpose of this session </td> <td>0</td> <td>1</td> <td></td> </tr>
                <tr class="even"><td>22</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>File , directories and Commands</td> <td>Do not leave to the default settings. Set the log and cache directories</td> <td>1</td> <td>1</td> <td></td> </tr>
                <tr class="odd"><td>23</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties </td> <td>If the Pushdown optimizations</td> <td>If the pushdown optimizations is used check the following options allow temporary view for pushdown , allow temporary Swquence for Pushdowns , Allow Pushdown for User Incorpatible Connetion </td> <td>0</td> <td>0</td> <td></td> </tr>
                <tr class="even"><td>24</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Properties </td> <td>Check the Integration Service</td> <td>Check the Integration Service - unicode </td> <td>0</td> <td>0</td> <td></td> </tr>
                <tr class="odd"><td>25</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Overall logic </td> <td>Workflow recovery </td> <td>If possible check the previous run of the run has succeeded. Aim that the workflow should be always possible to be re-started. Uses ControlSession nin the beginning of the workflow if neededf. </td> <td>0</td> <td>0</td> <td></td> </tr>
                <tr class="even"><td>26</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Truncate and not delete</td> <td></td> <td>Todo: clarify if PDO is used and the table must be deleted. The truncate should be run as PRE-SQL and the table must be truncated first - this has dramatic effect on the performance</td> <td>1</td> <td>1</td> <td></td> </tr>
 
            </table>
            <!-- STOP CHECK-LIST TABLE -->
 
 
            <!-- START WORKFLOW -->
 
            <h3 id="Check-workflow-name">  WORKFLOWS  </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW </h5>
            <table>
 
                <tr>
 
                    <th> WORKFLOW NAME at @NAME</th>
                    <th> DESCRIPTION VALUE at @VALUE</th>
 
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SESSION ATTRIBUTES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
            <!-- START WORKLFOW ATTRIBUTES -->
            <h3 id="Suspend-on-error"> WORKFLOW ATTRIBUTES </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW </h5>
            <table>
                <thead>
                    <tr>
                        <th> WORKFLOW NAME</th>
                        <th> ISENABLED</th>
                        <th> SUSPEND_ON_ERROR</th>
                        <th> ISVALID</th>
                    </tr>
                </thead>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@SUSPEND_ON_ERROR"/>
                        </td>
                        <td>
                            <xsl:value-of select="@ISENABLED"/>
                        </td>
                        <td>
                            <xsl:value-of select="@ISVALID"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP WORKFLOW ATTRIBUTES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
            <h3 id="Sessions-Recovery-Strategy">  SESSIONS Recovery strategy   </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/SESSION/ATTRIBUTE[@NAME ='Recovery Strategy'] </h5>
            <table>
 
                <tr>
                    <th> WORKFLOW NAME at @NAME</th>
                    <th> SESSION NAME at @NAME</th>
                    <th> ATTRIBUTE NAME at @NAME</th>
                    <th> ATTRIBUTE VALUE at @VALUE</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SESSION/ATTRIBUTE[@NAME ='Recovery Strategy']">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SESSION ATTRIBUTES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START TASKINSTANCE ATTRIBUTES -->
            <h3 id="Fail-Parent-If-task-fails"> TASKINSTANCE ATTRIBUTES  </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASKINSTANCE" </h5>
            <table>
                <thead>
                <tr>
                    <th> WORKFLOW NAME at /../@NAME</th>
                    <th> TASK NAME at ../@NAME</th>
                    <th> FAIL_PARENT_IF_INSTANCE_FAILS </th>
                    <th> FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN </th>
                </tr>
                </thead>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASKINSTANCE">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>                     <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@FAIL_PARENT_IF_INSTANCE_FAILS"/>
                        </td>
                        <td>
                            <xsl:value-of select="@FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN"/>
                        </td>
 
                    </tr>
                </xsl:for-each>
            </table>
 
            <div class="clsVerticalSpace2Cols"></div>
            <!-- STOP TASKINSTANCE ATTRIBUTES -->
 
 
 
            <!-- START SESSION LOG FILES ATTRIBUTES -->
            <h3 id="Session-log-file-directory"> SESSION ATTRIBUTES ( Log files ) </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/ATTRIBUTE[@NAME='Session Log File directory' or @NAME='Session Log File Name']" </h5>
            <table>
                <thead>
                <tr>
                    <th> WORKFLOW NAME </th>
                    <th> SESSION NAME </th>
                    <th> LOG FILE DIR </th>
                    <th> LOG FILE NAME </th>
 
                </tr>
                </thead>
                
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>                     <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select=".//ATTRIBUTE[@NAME='Session Log File directory']/@VALUE"/> 
                        </td>
                        <td>
                            <xsl:value-of select=".//ATTRIBUTE[@NAME='Session Log File Name']/@VALUE"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
 
            <div class="clsVerticalSpace2Cols"></div>
            <!-- STOP SESSION LOG FILES ATTRIBUTES -->
 
 
            <!-- START SESSION -->
            <h3> SESSIONS WITH THEIR MAPPINGS </h3>
            <table>
                <thead>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>SESSION NAME</th>
                    <th>MAPPING NAME </th>
                    <th>SESSION DESCRIPTION</th>
                </tr>
                </thead>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@MAPPINGNAME"/>
                        </td>
 
                        <td>
                            <xsl:value-of select="@DESCRIPION"/>
 
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SESSION -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START LIST OF SESSIONS -->
            <h3 id="list-of-sessions"> LIST OF SESSIONS </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>SESSION NAME</th>
                    <th>DESCRIPTION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <div class="clsVerticalSpace2Cols"></div>
            <!-- STOP MAPPINGS -->
 
 
 
            <!-- START TASKS -->
            <h3> LIST OF TASKS </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>TASK NAME</th>
                    <th>DESCRIPTION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASK">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
 
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
 
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP TASKS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START MAPPINGS -->
            <h3> LIST OF MAPPINGS </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>MAPPING NAME</th>
                    <th>DESCRIPTION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/MAPPING">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../WORKFLOW/@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <div class="clsVerticalSpace2Cols"></div>
            <!-- STOP MAPPINGS -->
 
            <h3> LIST OF SOURCES </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW  NAME</th>
                    <th>SOURCE NAME</th>
                    <th>DESCRIPTION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SOURCE">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../WORKFLOW/@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- EOF SOURCES -->
 
            <!-- START TARGETS -->
            <h3> LIST OF TARGETS </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>NAME</th>
                    <th>DESCRIPTION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/TARGET">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../WORKFLOW/@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP TARGETS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START CONNECTIONREFERENCES -->
            <h3> LIST OF CONNECTIONREFERENCES </h3>
            <h5> xpath - /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/CONNECTIONREFERENCE </h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORKFLOW NAME</th>
                    <th>CONNECTION REFERENCE NAME</th>
                    <th>DESCRIPTION</th>
                    <th>SESSION INSTANCE NAME </th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/CONNECTIONREFERENCE">
                    <xsl:sort select="@CONNECTIONNAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../../@NAME"/>
                        </td>
 
                        <td>
                            <xsl:value-of select="@CONNECTIONNAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@CONNECTIONTYPE"/>
                        </td>
                        <td>
                            <xsl:value-of select="../@SINSTANCENAME"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP CONNECTIONREFERENCES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START USER DEFINED WORKFLOW VARIABLES -->
            <h3> USER DEFINED WORKFLOW VARIABLES </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/WORKFLOWVARIABLE[@USERDEFINED='YES'] </h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>WORFLOW NAME</th>
                    <th>WORFLOW VARIABLE NAME</th>
                    <th>DATA TYPE </th>
                    <th>DEFAULTVALUE</th>
                    <th>DESCRIPION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/WORKFLOWVARIABLE[@USERDEFINED='YES']">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DATATYPE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DEFAULTVALUE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP USER DEFINED WORKFLOW VARIABLES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
 
            <!-- START USER DEFINED WORKFLOW VARIABLES -->
            <h3> USER DEFINED MAPPING VARIABLES </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/MAPPING/MAPPINGVARIABLE[@USERDEFINED='YES'] </h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> WORKFLOW VARIABLE NAME</th>
                    <th> MAPPING VARIABLE NAME</th>
                    <th>DATA TYPE </th>
                    <th>DEFAULTVALUE</th>
                    <th>DESCRIPION</th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/MAPPING/MAPPINGVARIABLE[@USERDEFINED='YES']">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DATATYPE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DEFAULTVALUE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP USER DEFINED WORKFLOW VARIABLES -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START Session tranformation Instances -->
            <h3> Session tranformation Instances  </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME ='Connection Information'] </h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> WORKFLOW NAME at ../../@NAME</th>
                    <th> SESSION NAME at ../../@NAME</th>
                    <th> NAME at @NAME</th>
                    <th> VALUE at @VALUE </th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME ='Connection Information']">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../../@NAME"/>
                        </td>
 
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
 
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP Session tranformation Instances-->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
            <!-- START SOURCE FIELDS -->
            <h3> Source fields  </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> SOURCE NAME  </th>
                    <th> SOURCE FIELD NAME  </th>
                    <th> DATA TYPE </th>
                    <th> MAX LENGTH </th>
                    <th> IS NULLABLE </th>
                    <th> DESCRIPTION </th>
                </tr>
 
 
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SOURCE/SOURCEFIELD">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
 
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DATATYPE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@PRECISION"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NULLABLE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SOURCE FIELDS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START TARGET FIELDS -->
            <h3> Target fields  </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th>TARGET NAME  </th>
                    <th>FIELD_NAME</th>
                    <th>DATA TYPE </th>
                    <th>PRECISION</th>
                    <th>IS NULLABLE</th>
                    <th>DESCRIPTION </th>
                </tr>
 
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/TARGET/TARGETFIELD">
                    <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
 
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DATATYPE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@PRECISION"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NULLABLE"/>
                        </td>
                        <td>
                            <xsl:value-of select="@DESCRIPTION"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
            <!--  STOP TARGET FIELDS -->
 
            <!-- START SOURCE FILTERS  -->
            <h3> Sourcer filters </h3>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> Source Filter Name </th>
                    <th> Source Filter Value </th>
                    <th> Session Instance Name </th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Source Filter']">
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
 
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SOURCE FILTERS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
            <!-- START SOURCE FILTERS  -->
            <h3> Sessions config reference attributes </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/CONFIGREFERENCE/ATTRIBUTE</h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> WORKFLOW NAME</th>
                    <th> SESSION NAME  </th>
                    <th> ATTRIBUTE NAME </th>
                    <th> SOURCE FILTER VALUE </th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/CONFIGREFERENCE/ATTRIBUTE">
                    <xsl:sort select="../../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
 
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SOURCE FILTERS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
 
            <!-- START SOURCE FILTERS  -->
            <h3> SESSIONEXTENSION config reference attributes </h3>
            <h5> xpath:/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/ATTRIBUTE </h5>
            <table>
                <tr bgcolor="#F8F8F8">
                    <th> WORKFLOW NAME  </th>
                    <th> SESSION NAME  </th>
                    <th> SESSION EXTENSION NAME </th>
                    <th> SINSTANCENAME </th>
                    <th> ATTRIBUTE NAME </th>
                    <th> ATTRIBUTE VALUE </th>
 
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/ATTRIBUTE">
                    <xsl:sort select="../../@NAME"/>
                    <xsl:sort select="@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../@SINSTANCENAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
 
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP SOURCE FILTERS -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START PRE-SQL -->
            <h3> PRE-SQL  ON SESSION LEVEL </h3>
            <h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Pre SQL' or @NAME='Session Log File Name']" </h5>
            <table>
 
                <tr>
                    <th> WORKFLOW NAME</th>
                    <th> SESSION NAME</th>
                    <th> TRANSFORMFIELD NAME</th>
                    <th> Expression Value ( SQL to run ) </th>
                </tr>
                <xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Pre SQL']">
          pre class=                span class=          <xsl:sort select="../@NAME"/>
                    <xsl:variable name="css-class">
                        <xsl:choose>
                            <xsl:when test="position() mod 2 = 0">even</xsl:when>
                            <xsl:otherwise>odd</xsl:otherwise>
                        </xsl:choose>
                    </xsl:variable>
                    <tr class="{$css-class}">
                        <td>
                            <xsl:value-of select="../../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="../../@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@NAME"/>
                        </td>
                        <td>
                            <xsl:value-of select="@VALUE"/>
                        </td>
 
 
                    </tr>
                </xsl:for-each>
            </table>
            <!-- STOP Get PRE-SQL on session level  -->
            <div class="clsVerticalSpace2Cols"></div>
 
 
            <!-- START DOCUMENTATION -->
            <div>
 
                <h2> Documentation </h2>
                <div> Purpose: </div>
                <div>to provide a human readable output for an copied exported worfklow file from Informatica repository </div>
                <div></div>
                <div>Usage: </div>
                <div>Please in the same folder where the workflow export xml file is </div>
                <div>Add the following line on the second line of the exported wf xml file : </div>
                <div>&lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;formatter.xsl&quot;?&gt;&lt;!DOCTYPE POWERMART SYSTEM &quot;powrmart.dtd&quot;&gt;</div>
                <div></div>
                <div>VersionHistory : </div>
                <div>1.3.3 --- 2012-11-08 20:50:06 --- ysg  --- Improved style , re-factor log files and dirs  </div>
                <div>1.3.2 --- 2012-11-06 16:53:30 --- Visa Lattunen , Marko Tuomela  --- Added check-list  </div>
                <div>1.3.1 --- 2012-11-01 17:36:43 --- ysg  --- Added target fields description  </div>
                <div>1.3.0 --- 2012-11-01 11:41:09 --- ysg  --- Added pre-sql on session level  </div>
                <div>1.2.9 --- 2012-10-30 14:50:43 --- ysg  --- Improved source fields table </div>
                <div>1.2.8 --- 2012-10-30 14:50:43 --- ysg  --- Added multiple workflow into one report file support </div>
                <div>1.2.7 --- 2012-10-29 15:59:35 --- ysg  --- Add mapping variables  </div>
                <div>1.1.0 --- 2012-10-26 16:09:56 --- ysg  --- Assume multiple workflows into one file </div>
                <div>1.2.5 --- 2012-10-17 16:45:49 --- ysg  --- Added workflow name and description  </div>
                <div>1.2.4 --- 2012-10-17 13:53:06 --- ysg  --- Added xpath to titles  </div>
                <div>1.2.3 --- 2012-10-16 21:57:28 --- ysg  --- Added Sessions config reference attributes </div>
                <div>1.2.2 --- 2012-10-16 12:04:39 --- ysg  --- Filtered only session log dir and session log file name </div>
                <div>1.2.1 --- 2012-10-16 12:04:39 --- ysg  --- Added source filters   </div>
                <div>1.2.0 --- 2012-10-15 16:51:53 --- ysg  --- Added alternating rows with css  </div>
                <div>1.1.1 --- 2012-10-15 16:22:48 --- ysg  --- Added source target fields </div>
                <div>1.1.0 --- 2012-10-15 14:46:09 --- ysg  --- Added session - mapping combination , session attributes </div>
                <div>1.0.0 --- 2012-10-12 14:50:43 --- ysg  --- Initial Creation </div>
                <div></div>
                <div></div>
                <div></div>
                <div>eof:file formatter.xsl </div>
 
            </div>
            <!-- STOP DOCUMENTATION -->
 
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>
/span

Labels

perl (41) Cheat Sheet (25) how-to (24) windows (14) sql server 2008 (13) linux (12) oracle (12) sql (12) Unix (11) cmd windows batch (10) mssql (10) cmd (9) script (9) textpad (9) netezza (8) sql server 2005 (8) cygwin (7) meta data mssql (7) metadata (7) bash (6) code generation (6) Informatica (5) cheatsheet (5) energy (5) tsql (5) utilities (5) excel (4) future (4) generic (4) git cheat sheet (4) html (4) perl modules (4) programs (4) settings (4) sh (4) shortcuts (4) поуки (4) принципи (4) Focus Fusion (3) Solaris (3) cool programs (3) development (3) economy (3) example (3) freeware (3) fusion (3) logging (3) morphus (3) mssql 2005 (3) nuclear (3) nz (3) parse (3) python (3) sftp (3) sofware development (3) source (3) sqlplus (3) table (3) vim (3) .Net (2) C# (2) China (2) GUI (2) Google (2) GoogleCL (2) Solaris Unix (2) architecture (2) ascii (2) awk (2) batch (2) cas (2) chrome extensions (2) code2html (2) columns (2) configuration (2) conversion (2) duplicates (2) excel shortcuts (2) export (2) file (2) free programs (2) informatica sql repository (2) linux cheat sheet (2) mssql 2008 (2) mysql (2) next big future (2) nsis (2) nz netezza cheat sheet (2) nzsql (2) ora (2) prediction (2) publish (2) release management (2) report (2) security (2) single-click (2) sqlserver 2005 (2) sqlserver 2008 (2) src (2) ssh (2) template (2) tools (2) vba (2) video (2) xlt (2) xml (2) youtube videos (2) *nix (1) .vimrc (1) .virmrc vim settings configs (1) BSD license (1) Bulgaria (1) Dallas (1) Database role (1) Dense plasma focus (1) Deployment (1) ERP (1) ExcelToHtml (1) GD (1) GDP (1) HP-UX (1) Hosting (1) IDEA (1) INC (1) IT general (1) ITIL management bullshit-management (1) IZarc (1) Java Web Start (1) JavaScript anchor html jquery (1) Khan Academy (1) LINUX UNIX BASH AND CYGWIN TIPS AND TRICKS (1) Linux Unix rpm cpio build install configure (1) Linux git source build .configure make (1) ListBox (1) MIT HYDROGEN VIRUS (1) OO (1) Obama (1) PowerShell (1) Run-time (1) SDL (1) SIWA (1) SOX (1) Scala (1) Services (1) Stacks (1) SubSonic (1) TED (1) abstractions (1) ansible hosts linux bash (1) ansible linux deployment how-to (1) ansible yum pip python (1) apache (1) apache 2.2 (1) application life cycle (1) architecture input output (1) archive (1) arguments (1) avatar (1) aws cheat sheet cli (1) aws cli (1) aws cli amazon cheat sheet (1) aws elb (1) backup (1) bash Linux open-ssh ssh ssh_server ssh_client public-private key authentication (1) bash perl search and replace (1) bash stub (1) bin (1) biofuels (1) biology (1) books (1) browser (1) bubblesort (1) bugs (1) build (1) byte (1) cas_sql_dev (1) chennai (1) chrome (1) class (1) claut (1) cmdow (1) code generation sqlserver (1) command (1) command line (1) conf (1) confluence (1) console (1) convert (1) cool programs windows free freeware (1) copy paste (1) copy-paste (1) csv (1) ctags (1) current local time (1) cygwin X11 port-forwarding mintty xclock Linux Unix X (1) cygwin bash how-to tips_n_tricks (1) cygwin conf how-to (1) data (1) data types (1) db2 cheat sheet (1) db2 starter ibm bash Linux (1) debt (1) diagram (1) dictionaries (1) digital (1) disk (1) disk space (1) documentation (1) dos (1) dubai (1) e-cars (1) electric cars (1) electricity (1) emulate (1) errors (1) exponents (1) export workflow (1) extract (1) fast export (1) fexp (1) file extension (1) file permissions (1) findtag (1) firewall (1) for loop (1) freaky (1) functions (1) fusion research (1) german (1) git gitlab issues handling system (1) google cli (1) google code (1) google command line interface (1) gpg (1) ha (1) head (1) helsinki (1) history (1) hop or flop (1) host-independant (1) how-to Windows cmd time date datetime (1) ibm db2 cognos installation example db deployment provisioning (1) ideas (1) image (1) informatica oracle sql (1) informatica repo sql workflows sessions file source dir (1) informatica source files etl (1) install (1) isg-pub issue-tracker architecture (1) it management best practices (1) java (1) jump to (1) keyboard shortcuts (1) ksh (1) level (1) linkedin (1) linux bash ansible hosts (1) linux bash commands (1) linux bash how-to shell expansion (1) linux bash shell grep xargs (1) linux bash tips and t ricks (1) linux bash unix cygwin cheatsheet (1) linux bash user accounts password (1) linux bash xargs space (1) linux cheat-sheet (1) linux cheatsheet cheat-sheet revised how-to (1) linux how-to non-root vim (1) linux ssh hosts parallel subshell bash oneliner (1) london (1) make (1) me (1) metacolumn (1) metadata functions (1) metaphonre (1) method (1) model (1) movie (1) multithreaded (1) mysql cheat sheet (1) mysql how-to table datatypes (1) n900 (1) nano (1) neteza (1) netezza bash linux nps (1) netezza nps (1) netezza nps nzsql (1) netezza nz Linux bash (1) netezza nz bash linux (1) netezza nz nzsql sql (1) netezza nzsql database db sizes (1) non-password (1) nord pol (1) nps backup nzsql schema (1) number formatting (1) nz db size (1) nz table count rows (1) nzsql date timestamp compare bigint to_date to_char now (1) on-lier (1) one-liners (1) one-to-many (1) oneliners (1) open (1) open source (1) openrowset (1) openssl (1) oracle PL/SQL (1) oracle Perl perl (1) oracle installation usability (1) oracle number formatting format-model ora-sql oracle (1) oracle templates create table (1) oracle trigger generic autoincrement (1) oracle vbox virtual box cheat sheet (1) oracle virtual box cheat sheet (1) outlook (1) parser (1) password (1) paths (1) perl @INC compile-time run-time (1) perl disk usage administration Linux Unix (1) perl modules configuration management (1) permissions (1) php (1) picasa (1) platform (1) postgreSQL how-to (1) powerShell cmd cygwin mintty.exe terminal (1) ppm (1) predictions (1) prices (1) principles (1) productivity (1) project (1) prompt (1) proxy account (1) public private key (1) publishing (1) putty (1) qt (1) read file (1) registry (1) relationship (1) repository (1) rm (1) scala ScalaFmt (1) scp (1) scripts (1) scsi (1) search and replace (1) sed (1) sendEmail (1) sh stub (1) shortcuts Windows sql developer Oracle (1) sidebar (1) silicon (1) smells (1) smtp (1) software development (1) software procurement (1) sofware (1) sort (1) sql script (1) sql_dev (1) sqlcmd (1) sqlite (1) sqlite3 (1) sshd (1) sshd cygwin (1) stackoverflow (1) stored procedure (1) stub (1) stupidity (1) subroutines (1) svn (1) sysinternals (1) system design (1) tail (1) tar (1) temp table (1) templates (1) teradata (1) terminal (1) test (1) testing (1) theory (1) thorium (1) time (1) tip (1) title (1) tmux .tmux.conf configuration (1) tmux efficiency bash (1) tool (1) ui code prototyping tips and tricks (1) umask Linux Unix bash file permissions chmod (1) url (1) urls (1) user (1) utility (1) utils (1) vb (1) vbox virtual box cheat sheet (1) vim perl regex bash search for string (1) vim recursively hacks (1) vim starter (1) vim-cheat-sheet vim cheat-sheet (1) vimeo (1) visual stuio (1) warsaw (1) wiki (1) wikipedia (1) window (1) windows 7 (1) windows 8 (1) windows programs (1) windows reinstall (1) windows utility batch perl space Windows::Clipboard (1) wisdoms (1) workflow (1) worth-reading (1) wrapper (1) xp_cmdshell (1) xslt (1) youtube (1)

Blog Archive

Translate with Google Translate

My Blog List