MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/dmu/dmu/bin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/dmu/dmu/bin/dmu

#!/bin/bash

#=============================================================================
# Launcher for Database Migration Assistant for Unicode
# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
#=============================================================================

#-----------------------------------------------------------------------------
#  toAbsPath() takes two arguments
#    1) a pathname (assumed to point to a file)
#    2) a directory that the pathname is relative to
#
#  and converts the pathname to an absolute path (if necessary), resolving
#  any "." or ".." in the absolute path.  The result is echoed to STDOUT.
#-----------------------------------------------------------------------------
toAbsPath()
{
    local pathname="$1"
    local rawAbsPath

    #  Test if $arg starts with '/'.
    if [ "X`expr \"${pathname}\" : '\(/\).*'`" = "X/" ]
    then
    rawAbsPath="${pathname}"
    else
        local relativeTo="$2"
        rawAbsPath="${relativeTo}/${pathname}"
    fi

    #  Resolve any "." and ".." in $rawAbsPath.
    local cwd=`pwd`
    local rawAbsDir=`dirname "$rawAbsPath"`
    local basename=`basename "$rawAbsPath"`
    cd "${rawAbsDir}"
    local dir=`pwd -P`
    cd "${cwd}"
    echo "${dir}/${basename}"
}

#-----------------------------------------------------------------------------
#  getSymlinkTarget() takes one argument
#    1) a pathname
#
#  If the pathname is a symlink, the symlink target is echoed to STDOUT.
#  If the pathname is not a symlink, the pathname itself is echoed.
#-----------------------------------------------------------------------------
getSymlinkTarget()
{
    local pathname="$1"
    while [ -h "$pathname" ] ; do
        local ls=`ls -ld "$pathname"`
        local link=`expr "$ls" : '.*-> \(.*\)$'`
        if expr "$link" : '.*/.*' > /dev/null
        then
            pathname="$link"
        else
            pathname="`dirname \"$pathname\"`/$link"
        fi
    done
    echo "$pathname"
}

#-----------------------------------------------------------------------------
#  main
#-----------------------------------------------------------------------------
STARTING_CWD=`pwd`
readonly STARTING_CWD

#  INVOKED_AS contains the absolute path of the script invocation.
INVOKED_AS=`toAbsPath "$0" "\`pwd\`"`
readonly INVOKED_AS

#  SCRIPT contains the absolute path of the actual (symlink-resolved) script.
SCRIPT=`toAbsPath "\`getSymlinkTarget \"${INVOKED_AS}\"\`" "\`dirname \"${INVOKED_AS}\"\`"`
readonly SCRIPT

#  IS_CMD indicates whether the launcher should launch command-line scanner instead of GUI
IS_CMD=false
if [ -n "$1" ] && [ $1 = "-c" ]; then
    IS_CMD=true
fi
readonly IS_CMD

#  PRODUCT_HANDLES_HELP should be 1 if the java part of this product handles help argument
PRODUCT_HANDLES_HELP=0

#  PRODUCT_DISPLAYS_BANNER should be 1 if the java part of this product displays the banner
PRODUCT_DISPLAYS_BANNER=0

. "`dirname "${SCRIPT}"`/../../ide/bin/launcher.sh"

#  A segmentation fault or other core dump at startup can occur if
#  the shell's stack size limit is too small.  Uncomment the following
#  line to raise the stack size to 4MB or more.
#ulimit -s 4096

#-----------------------------------------------------------------------------
#  product-specific function overrides
#-----------------------------------------------------------------------------
GetFullProductName()
{
    echo "Database Migration Assistant for Unicode"
}

GetShortProductName()
{
    echo "DMU"
}

GetProductVersion()
{
    echo "2.2"
}

GetDotJdkFileName()
{
   echo ".dmu_jdk"
}

DisplayBanner()
{
   cat <<EOF

   `GetFullProductName`
 Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.

EOF
}

GetDefaultJDK()
{
  #
  # Search for Java in the following order:
  #  0) $OIDE_JAVA_HOME. This serves as a global override.
  #  1) ../../jdk/bin/java. This is consistent with the shipped
  #     location of Java for Windows, and is the correct place to look
  #     for internal developers building labels of JDEVADF.
  #  2) ../../../jdk/bin/java for SQL Developer in the database shiphome.
  #  3) $JAVA_HOME/bin/java. If JAVA_HOME is set, we should use that
  #     to determine the JDK to use.
  #  4) A java in /usr/java/jdk1.6*
  #  5) Any java on the PATH.

  # Per bug 6058050, we check environment variables are set before
  # using them.

  if [[ -n "$OIDE_JAVA_HOME" && -f "$OIDE_JAVA_HOME/bin/java" ]]
  then
    tmpvar="$OIDE_JAVA_HOME/bin/java"
  else
    if [ -f "../../jdk/bin/java" ]
    then
      tmpvar="../../jdk/bin/java"
    else
      if [ -f "../../../jdk/bin/java" ]
      then
        tmpvar="../../../jdk/bin/java"
      else
        if [[ -n "$JAVA_HOME" &&  -f "$JAVA_HOME/bin/java" ]]
        then
          tmpvar="$JAVA_HOME/bin/java"
        else
          # See if we can find /usr/java/jdk1.6.*
          jdk=`ls /usr/java 2>/dev/null | grep jdk1.6 | sort -r | head -1`
          if [ -f "/usr/java/$jdk/bin/java" ]
          then
            tmpvar="/usr/java/$jdk/bin/java"
          else
            tmpvar=`which "java" 2>/dev/null`
          fi
        fi
      fi
    fi
  fi

  #
  # Make sure java is not
  # a symlink to some other bin/java location somewhere, if it is
  # follow it, and follow it as long as the new path ends with /bin/java
  #
  # Once the new path for java has been determined, truncate the /bin/java
  # ending portion of it and set javahome with the trucated path
  #
  if [ -f "$tmpvar" ]
  then
    while [ -h "$tmpvar" ]
    do
        tmpvar2=`ls -ls "$tmpvar"`
        tmpvar2=`expr "$tmpvar2" : '.*-> \(.*\)$'`
        if [ `expr "$tmpvar2" : "\.\/"` -gt 0 -o `expr "$tmpvar2" : "\.\.\/"` -gt 0 -o `expr "$tmpvar2" : ".*/.*"` -le 0 ]
        then
          tmpvar="`dirname "$tmpvar"`/$tmpvar2"
        else
          tmpvar="$tmpvar2"
        fi
    done
    tmpvar=`expr "$tmpvar" : '\(.*\)\/bin\/[^\/]*$'`
    SetJavaHome "$tmpvar"
  fi
}

LaunchCmd()
{
    LaunchDir=$PWD

    #:ValidateArgs:
    {
        if [ "X${STARTING_CWD}" = "X" ]
        then
            echo "ERROR: STARTING_CWD variable not defined."
            exit 1
        fi
        if [ "X${INVOKED_AS}" = "X" ]
        then
            echo "ERROR: INVOKED_AS variable not defined."
            exit 1
        fi
        if [ "X${SCRIPT}" = "X" ]
        then
            echo "ERROR: SCRIPT variable not defined."
            exit 1
        fi
    }

    USE_USER_CONF=0
    #:PreProcessArgs:
    {
      for arg in "$@"
      do
        case "$arg" in
          -nouserconf)
            USE_USER_CONF=1
          ;;
          --verbose)
            SetVerbose
          ;;
        esac
      done
    }

    #:SetConfigFiles:
    {
        # Set user configuration file
        if [ "$USE_USER_CONF" = "0" ]
        then
          USER_CONF_FILE="`GetUserConfFilePath`"
          WriteUserConfFile;
        else
          USER_CONF_FILE=""
        fi

        #  Check INVOKED_AS first.  This allows a launcher to be a
        #  symlink to launch.sh but use its own conf file.
        local invokedDir=`dirname "${INVOKED_AS}"`
        local invokedProdName=`basename "${INVOKED_AS}"`
        local confFileName="${invokedProdName}.conf"
        local confFile="${invokedDir}/${confFileName}"
        if [ -f "${confFile}" ]
        then
            PRODUCT_NAME="${invokedProdName}"
            APP_CONF_DIR="${invokedDir}"
            APP_CONF_FILE="${confFile}"
            cd "${APP_CONF_DIR}"
            LaunchDir=$PWD
        else
            #  Check SCRIPT next.  This allows the user to make a
            #  symlink to the launcher script and use its conf file.
            local scriptDir=`dirname "${SCRIPT}"`
            PRODUCT_NAME=`basename "${SCRIPT}"`
            confFileName="${PRODUCT_NAME}.conf"
            confFile="${scriptDir}/${confFileName}"
            if [ -f "${confFile}" ]
            then
                APP_CONF_DIR="${scriptDir}"
                APP_CONF_FILE="${confFile}"
                cd "${APP_CONF_DIR}"
                LaunchDir=$PWD
            fi
        fi

        # Set tool specific user configuration file
        if [ "$USE_USER_CONF" = "0" ]
        then
          TOOL_SPECIFIC_USER_CONF_FILE="`GetUserConfDirPath`/${confFileName}"
          WriteToolSpecificUserConfFile;
        else
          TOOL_SPECIFIC_USER_CONF_FILE="";
        fi

        # Set platform configuration file.
        APP_UNAME_VALUE=`uname`
        APP_PLATFORM_CONF_FILE="${PRODUCT_NAME}-${APP_UNAME_VALUE}.conf"
        if [ -f "${APP_PLATFORM_CONF_FILE}" ]
        then
            APP_PLATFORM_CONF_FILE="${APP_CONF_DIR}/${PRODUCT_NAME}-${APP_UNAME_VALUE}.conf"
        fi
    }

    #:ReadConfig:
    {
      if [ -f "${APP_CONF_FILE}" ]
      then
        EchoIfVerbose "Reading configuration from: ${APP_CONF_FILE}"
        source "${APP_CONF_FILE}"
      else
        echo "Unable to find configuration file: ${APP_CONF_FILE}"
        exit 1
      fi

      if [ -f "${APP_PLATFORM_CONF_FILE}" ]
      then
        EchoIfVerbose "Reading platform specific configuration from: ${APP_PLATFORM_CONF_FILE}"
        source "${APP_PLATFORM_CONF_FILE}"
      fi

      if [ -f "${USER_CONF_FILE}" ]
      then
        EchoIfVerbose "Reading user configuration file from: ${USER_CONF_FILE}"
        IncludeConfFile "${USER_CONF_FILE}"
      fi

      if [ -f "${TOOL_SPECIFIC_USER_CONF_FILE}" ]
      then
        if [ "${TOOL_SPECIFIC_USER_CONF_FILE}" != "${USER_CONF_FILE}" ]
        then
          EchoIfVerbose "Reading tool specific override of user configuration file from: ${TOOL_SPECIFIC_USER_CONF_FILE}"
          IncludeConfFile "${TOOL_SPECIFIC_USER_CONF_FILE}"
        fi
      fi
    }

    # Pass the configuration pathname to the IDE
    AddVMOption -Dide.conf="${APP_CONF_FILE}"

    # Pass the user configuration pathnames to the IDE
    AddVMOption -Duser.conf="${USER_CONF_FILE}"
    AddVMOption -Dtool.user.conf="${TOOL_SPECIFIC_USER_CONF_FILE}"

    # Pass the starting directory (before any chdir) to the IDE
    AddVMOption -Dide.startingcwd="${STARTING_CWD}"

    CheckJDK
    CheckLibraryPath

    #:Startup:
    {
	APP_MAIN_CLASS="oracle.duma.cli.util.Launcher"
	APP_CLASSPATH+=":../extensions/oracle.duma.jar"
	APP_CLASSPATH+=":../../bootstrap.jar"
	APP_CLASSPATH+=":../../sleepycat/je-3.3.98/lib/je-3.3.98.jar"
	APP_CLASSPATH+=":../../modules/oracle.xmlef/xmlef.jar"
	APP_CLASSPATH+=":../../modules/oracle.help/ohj.jar"
	APP_CLASSPATH+=":../../modules/oracle.help/oracle_ice.jar"
	APP_CLASSPATH+=":../../modules/oracle.help/help-share.jar"
	APP_CLASSPATH+=":../../modules/oracle.javatools/javamodel-rt.jar"
	APP_CLASSPATH+=":../../modules/oracle.javatools/javatools-nodeps.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/oraclexsql.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/xsqlserializers.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/xmlparserv2.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/xml.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/xsu12.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdk/xqjapi.jar"
	APP_CLASSPATH+=":../../modules/oracle.ldap/ojmisc.jar"
	APP_CLASSPATH+=":../../modules/oracle.ldap/ldapjclnt11.jar"
	APP_CLASSPATH+=":../../modules/oracle.bali.share/share.jar"
	APP_CLASSPATH+=":../../modules/oracle.xdb_11.1.0.jar"
	APP_CLASSPATH+=":../../jlib/*"
	APP_CLASSPATH+=":../doc/dumac_help.jar"
	APP_CLASSPATH+=":../lib/*"
	APP_CLASSPATH+=":../../ide/extensions/oracle.ide.jar"
    }
    
    EchoIfVerbose "Working directory is `pwd`"
    EchoIfVerbose "Running Command: ${JAVA} ${APP_VM_OPTS} ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} ${APP_APP_OPTS[@]}"

    #echo "${JAVA} ${APP_VM_OPTS[@]} ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} ${@:2}"
    ${JAVA} "${APP_VM_OPTS[@]}" ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} "${@:2}"
    EXITCODE=$?

    #echo "Exit code is: $EXITCODE"
    return $EXITCODE
}

if ${IS_CMD}; then
    LaunchCmd "$@"
else
    LaunchIDE $*
fi


OHA YOOOO