ODI Groovy Script to create an interface

Hi,
I'm working on ODI 11.1.16 and trying to create an interface using Groovy Scripts. It throws me an error "java.lang.IllegalArgumentException: DataStore shouldn't be null "
Below are my assumptions
Source datastore : Groovy_Source
Target datastore : Groovy_Trgt
Context : Global
Stndrd conn: localhost,1521,orcl
def file = new File('c:/interfaces.txt')
def s = 0
Interfaces.txt contains : TEST1,SOURCE,DUMMY_GROOVY_SOURCE,STAGING,DUMMY_GROOVY_TRGT
DataSet dataSet = odiInterface.getDataSets().get(0);
OdiDataStore odiDatastore1 = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName(DUMMY_GROOVY_SOURCE,Oracle);
OdiDataStore targetDatastore = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName(DUMMY_GROOVY_TRGT,Oracle);
It throws an error here any help is appreciated
Thanks
VIB

Hi Michael,
Below is my entire code.. Picked it up from one of the blogs just trying to fine tune it. Thanks for your reply.
//Created by ODI Studio
// Context operators:
import oracle.odi.domain.topology.OdiContext
import oracle.odi.domain.topology.finder.IOdiContextFinder
// Folder operators:
import oracle.odi.domain.project.OdiFolder
import oracle.odi.domain.project.finder.IOdiFolderFinder
// Interface operators:
import oracle.odi.domain.project.OdiInterface
// Interface helpers:
import oracle.odi.interfaces.interactive.support.InteractiveInterfaceHelperWithActions
import oracle.odi.interfaces.interactive.support.targetkeychoosers.TargetKeyChooserPrimaryKey
import oracle.odi.interfaces.interactive.support.mapping.automap.AutoMappingComputerLazy
import oracle.odi.interfaces.interactive.support.mapping.matchpolicy.MappingMatchPolicyLazy
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionSetTargetDataStore
import oracle.odi.interfaces.interactive.support.aliascomputers.AliasComputerDoubleChecker
import oracle.odi.interfaces.interactive.support.clauseimporters.ClauseImporterLazy
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionAddSourceDataStore
import oracle.odi.interfaces.interactive.support.actions.InterfaceActionOnTargetDataStoreComputeAutoMapping;
// Transaction operators:
import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;
import oracle.odi.core.persistence.transaction.ITransactionDefinition;
import oracle.odi.core.persistence.transaction.ITransactionManager;
import oracle.odi.core.persistence.transaction.ITransactionStatus;
// Data set:
import oracle.odi.domain.project.interfaces.DataSet;
// Data store:
import oracle.odi.domain.model.OdiDataStore;
import oracle.odi.domain.model.finder.IOdiDataStoreFinder;
// Define VARS:
def project = new String("Test") // What is the target project?
def folder = new String("Test Subfolder") // Which folder in target project?
def file = new File('c:/interfaces.txt')
def s = 0
// Get default context:
OdiContext context = ((IOdiContextFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiContext.class)).findDefaultContext();
// Get Folder:
Collection odiFolders = ((IOdiFolderFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiFolder.class)).findByName(folder);
if (odiFolders.size() == 0)
println("Error: cannot find folder "+folder+" in project "+project)
OdiFolder odiFolder = (OdiFolder) (odiFolders.toArray()[0]);
// Print default settings:
println ("Context used = " + context.getName())
println ("Folder for interface = " + odiFolder.getName())
file.eachLine { line ->
s++
toks = line.split(",")
if (toks.length != 5)
println("Error in input, line: "+s)
else
iname = toks[0]
Oracle = toks[1]
DUMMY_GROOVT_SOURCE = toks[2]
Oracle = toks[3]
DUMMY_GROOVY_TRGT = toks[4]
// Transactie:
ITransactionDefinition txnDef = new DefaultTransactionDefinition()
ITransactionManager tm = odiInstance.getTransactionManager()
ITransactionStatus txnStatus = tm.getTransaction(txnDef)
OdiInterface odiInterface = new OdiInterface(odiFolder, iname, context);
InteractiveInterfaceHelperWithActions interactiveHelper = new InteractiveInterfaceHelperWithActions(odiInterface, odiInstance, odiInstance.getTransactionalEntityManager());
DataSet dataSet = odiInterface.getDataSets().get(0);
OdiDataStore odiDatastore1 = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName("DUMMY_GROOVY_SOURCE", Oracle);
OdiDataStore targetDatastore = ((IOdiDataStoreFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiDataStore.class)).findByName("DUMMY_GROOVY_TRGT", Oracle);
interactiveHelper.performAction(new InterfaceActionAddSourceDataStore(odiDatastore1, dataSet, new AliasComputerDoubleChecker(), new ClauseImporterLazy(), new AutoMappingComputerLazy()));
interactiveHelper.performAction(new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new AutoMappingComputerLazy(), new AutoMappingComputerLazy(), new TargetKeyChooserPrimaryKey()));
interactiveHelper.performAction(new InterfaceActionOnTargetDataStoreComputeAutoMapping())
interactiveHelper.computeSourceSets()
interactiveHelper.preparePersist()
tm.commit(txnStatus)
Edited by: VIB on Feb 18, 2013 10:46 AM

Similar Messages

  • Creating JMX interface-script

    Hi to all,
    I want to create an interface script/programm, so as to be able to query JMX enabled applications and retrieve the results.
    I know very little about Java (unfortunately), while I am very strong in perl.
    How to do it ?
    Is there something ready?
    What do you suggest ?
    Kind regards,
    alexk

    Hello,
    if you plan to develop an application to interact with a remote application instrumented with JMX you could perhaps have a look to the Web Services Connector for JMX (downloadable from http://ws-jmx-connector.dev.java.net/). It (also) allows non Java application to interact with JMX/Java application. The interaction is done thanks to SOAP messages conveying WS-Management requests.
    Some WS-Management libraries can help you develop such interaction VBScript (Microsoft WinRM) and Perl (VMWare ViPerl).
    This document describes JMX interoperability with non Java application : http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/JSR262_Interop.pdf
    Another alternative could be to use the REST access to JMX (an OpenDMK contribution). It only allows you to retrieve MBean names and attributes. Setting attributes, invoking operations and notification handling have not yet been developed : https://opendmk.dev.java.net/contributions/index.html
    Regards.
    Jean-Francois
    http://blogs.sun.com/jmxnetbeans/

  • Odi examples using flexfields, groovy scripting, jython scritping sample

    Dear All,
    I would like to know if there are any good websites, which will provide details exampls using flexfields effectively, groovy scripting , jytyon scripting , using API in odi etc.
    Basically I would be intersted in learning advanced ODI programming.
    Thanks and Regards
    Santy

    there is the other way: do it.
    It's sad to do but ODI is quite wide as topic. Follow many blogs, read threads and understood them, ask and make many errors.
    If you are not so distant from some guru guy of this forum it'd be an idea to take a cheaper training from them.

  • New ODI User having trouble creating an XML Data Source...

    How's everyone doing? I'm new to the Oracle Data Integrator software. My goal is to take an XML message, do a bunch of mappings/constraints/etc. and integrate the appropriate data into an Oracle database. Seems like ODI is good for the job, but I'm running into some issues setting up the actual XML source file.
    I followed this guide: [ODI XML to Database Transformation|http://www.oracle.com/technology/obe/fusion_middleware/ODI/ODIXML_to_DB_Transform/ODIXML_to_DB_Transform.htm], which was helpful, but since it used example XML files it did not go into how to use your own custom XML file.
    Let me start off by sharing the XML file I'm attempting to import:
    <?xml version="1.0" encoding="UTF-8"?>
    <Money xmlns="http://xxxxx.oracle.com/schema/Money"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xxxxx.oracle.com/schema/Money file:/C:/OraHome_1/oracledi/demo/xml/Money.xsd">
        <MoneyID>MoneyID0</MoneyID>
        <ContractID>ContractID0</ContractID>
        <EffectiveDate>2006-05-04T18:13:51.0Z</EffectiveDate>
        <MessageDate>2006-05-04T18:13:51.0Z</MessageDate>
        <ReversalIndicator>false</ReversalIndicator>
        <PriorMoneyID>PriorMoneyID0</PriorMoneyID>
        <Amount>0</Amount>
        <MoneyType>0</MoneyType>
        <ExchangeDetails>
            <CostBasis>0</CostBasis>
            <ExchangeType>0</ExchangeType>
            <MEC>false</MEC>
            <LoanAmount>0</LoanAmount>
        </ExchangeDetails>
    </Money>Pretty straightforward I'd say. Note that the XSD file it references DOES exist in that directory, so everything should be fine. So I go into Topology, select the "Physical Architecture" tab, right click "XML", click "Insert Data Server". I name my file "XML_MONEY", select the JDBC tab, and fill in the following fields:
    JDBC Driver: com.sunopsis.jdbc.driver.xml.SnpsXmlDriver
    JDBC Url: jdbc:snps:xml?f=../demo/xml/Money1.xml
    When I hit "Test", it gives me this annoying message:
    java.sql.SQLException: Could not generate the DTD because the file could not be created. Verify that you have write permission in the directory.
    I have no idea why. I definitely have permissions to write to that directory.
    I played around some more, and removed the junk at the top of the XML file, leaving the file with JUST XML tags. Now I get this error:
    java.lang.ArrayIndexOutOfBoundsException: 1
    What does this mean? I'm confused why this would be happening, because I a couple of days ago when I was playing around with a dummy XML file (with just tags) it connected just fine.
    If anyone can lend a hand I'd greatly appreciate it. I'm probably missing something stupid, so feel free to yell at me.
    Thanks!!
    Edited by: user9958203 on Nov 19, 2009 12:48 PM
    Edited by: user9958203 on Nov 19, 2009 12:48 PM

    hi , i will try to help u out....lets take a simple example
    create your own xml for example
    <pre>
    <?xml version="1.0" encoding="UTF-8"?>
    <ROWSET>
    <ROW>
    <ENAME>SCOTT</ENAME>
    <SAL>15000</SAL>
    <LOC>INDIA</LOC>
    </ROW>
    <ROW>
    <ENAME>ROCK</ENAME>
    <SAL>25000</SAL>
    <LOC>USA</LOC>
    </ROW>
    </ROWSET>
    After that go to Topology manager create a data server in xml technology for example "EMPLOYEE"
    JDBC DRIVER : com.sunopsis.jdbc.driver.xml.SnpsXmlDriver
    JDBC URL : jdbc:snps:xml?f=C:/EMP.xml&s=EMP01
    Test it you will get Successful connection message.
    After getting this message apply the settings.Physical Schema window will pop up there give Schema as EMP01,Work Schema as EMP01 then in the context tab
    create a context and give the logical schema name it can be any name..here i am giving the my logical schema name as EMP01.Apply the changes.
    Create a model
    1.In Definition tab give the model name
    select Technology as XML
    Logical Schema as EMP01
    2.In the Reverse tab select the context which u have created in the topology manager
    3.In the Selective Reverse tab reverse all the tables.
    in the model you will be getting 2 datastores ROWSET,ROW
    Create an Interface
    Drag the ROW datastore into source
    I have crated EMP_TEST table in my oracle database Ename,Sal,Loc as columns and reversed it so that i can use EMP_TEST table as my target table
    Drag the EMP_TEST table in the Target datastore map the columns
    select IKM as SQL toSQL Append execute the interface the data in the xml will be loaded in to EMP_TEST table.
    </pre>
    Hope this helps u
    Thanks,
    praneeth.

  • Naming standard for creating a interface

    Hi,
    This question to be silly but i want to know
    Is there any naming standards to create any interface
    like in staging i defined WC_Dim_DS ( warehousecustom table_name dimension staging )
    how normally a ODI project naming conventions......?
    For interfaces/packages
    Any suggestions?
    thanks,
    saichand.v

    My Suggestion is
    I_<Target DB>_<Target Schema>_<Target Table>
    But if you are loading the table with 2 or more interfaces then you should add an explanation at the end. Explanation can be source system or purpose.
    I_<Target DB>_<Target Schema>_<Target Table>_<Explanation>
    And definitely schema and table name should contain some kind of metadata. For example divide staging table and final target tables into different schema such as STG and DWH.

  • [script] create_ap: Create a NATed or Bridged WiFi Access Point

    This script use hostapd + dnsmasq + iptables to create a NATed Access Point OR hostapd + brctl + dhclient to create a bridged Access Point.
    The default behavior is a NATed Access Point.
    updated script will be here: https://github.com/oblique/create_ap and http://git.2f30.org/create_ap/
    Examples
    No passphrase (open network):
    ./create_ap wlan0 eth0 MyAccessPoint
    OR
    echo -e "MyAccessPoint" | ./create_ap wlan0 eth0
    WPA + WPA2 passphrase:
    ./create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
    OR
    echo -e "MyAccessPoint\nMyPassPhrase" | ./create_ap wlan0 eth0
    AP without Internet sharing:
    ./create_ap -n wlan0 MyAccessPoint MyPassPhrase
    Bridged Internet sharing:
    ./create_ap -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase
    Internet sharing from the same WiFi interface:
    ./create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
    Usage
    Usage: create_ap [options] <wifi-interface> [<interface-with-internet>] [<access-point-name> [<passphrase>]]
    Options:
    -h, --help Show this help
    -c <channel> Channel number (default: 1)
    -w <WPA version> Use 1 for WPA, use 2 for WPA2, use 1+2 for both (default: 1+2)
    -n Disable Internet sharing (if you use this, don't pass
    the <interface-with-internet> argument)
    -m <method> Method for Internet sharing.
    Use: 'nat' for NAT (default)
    'bridge' for bridging
    'none' for no Internet sharing (equivalent to -n)
    --hidden Make the Access Point hidden (do not broadcast the SSID)
    --ieee80211n Enable IEEE 802.11n (HT)
    --ht_capab <HT> HT capabilities (default: [HT40+])
    --driver Choose your WiFi adapter driver (default: nl80211)
    --no-virt Do not create virtual interface
    Non-Bridging Options:
    -g <gateway> IPv4 Gateway for the Access Point (default: 192.168.12.1)
    -d DNS server will take into account /etc/hosts
    Useful informations:
    * If you're not using the --no-virt option, then you can create an AP with the same
    interface you are getting your Internet connection.
    * You can pass your SSID and password through pipe or through arguments (see examples).
    Examples:
    create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
    echo -e 'MyAccessPoint\nMyPassPhrase' | create_ap wlan0 eth0
    create_ap wlan0 eth0 MyAccessPoint
    echo 'MyAccessPoint' | create_ap wlan0 eth0
    create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
    create_ap -n wlan0 MyAccessPoint MyPassPhrase
    create_ap -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase
    create_ap --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase
    Code
    #!/bin/bash
    # general dependencies:
    # bash (to run this script)
    # util-linux (for getopt)
    # hostapd
    # iproute2
    # iw
    # iwconfig (you only need this if 'iw' can not recognize your adapter)
    # haveged (optional)
    # dependencies for 'nat' or 'none' Internet sharing method
    # dnsmasq
    # iptables
    # dependencies for 'bridge' Internet sharing method
    # bridge-utils
    usage() {
    echo "Usage: $(basename $0) [options] <wifi-interface> [<interface-with-internet>] [<access-point-name> [<passphrase>]]"
    echo
    echo "Options:"
    echo " -h, --help Show this help"
    echo " -c <channel> Channel number (default: 1)"
    echo " -w <WPA version> Use 1 for WPA, use 2 for WPA2, use 1+2 for both (default: 1+2)"
    echo " -n Disable Internet sharing (if you use this, don't pass"
    echo " the <interface-with-internet> argument)"
    echo " -m <method> Method for Internet sharing."
    echo " Use: 'nat' for NAT (default)"
    echo " 'bridge' for bridging"
    echo " 'none' for no Internet sharing (equivalent to -n)"
    echo " --hidden Make the Access Point hidden (do not broadcast the SSID)"
    echo " --ieee80211n Enable IEEE 802.11n (HT)"
    echo " --ht_capab <HT> HT capabilities (default: [HT40+])"
    echo " --driver Choose your WiFi adapter driver (default: nl80211)"
    echo " --no-virt Do not create virtual interface"
    echo
    echo "Non-Bridging Options:"
    echo " -g <gateway> IPv4 Gateway for the Access Point (default: 192.168.12.1)"
    echo " -d DNS server will take into account /etc/hosts"
    echo
    echo "Useful informations:"
    echo " * If you're not using the --no-virt option, then you can create an AP with the same"
    echo " interface you are getting your Internet connection."
    echo " * You can pass your SSID and password through pipe or through arguments (see examples)."
    echo
    echo "Examples:"
    echo " $(basename $0) wlan0 eth0 MyAccessPoint MyPassPhrase"
    echo " echo -e 'MyAccessPoint\nMyPassPhrase' | $(basename $0) wlan0 eth0"
    echo " $(basename $0) wlan0 eth0 MyAccessPoint"
    echo " echo 'MyAccessPoint' | $(basename $0) wlan0 eth0"
    echo " $(basename $0) wlan0 wlan0 MyAccessPoint MyPassPhrase"
    echo " $(basename $0) -n wlan0 MyAccessPoint MyPassPhrase"
    echo " $(basename $0) -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase"
    echo " $(basename $0) --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase"
    # it takes 2 arguments
    # returns:
    # 0 if v1 (1st argument) and v2 (2nd argument) are the same
    # 1 if v1 is less than v2
    # 2 if v1 is greater than v2
    version_cmp() {
    [[ ! $1 =~ ^[0-9]+(\.[0-9]+)*$ ]] && die "Wrong version format!"
    [[ ! $2 =~ ^[0-9]+(\.[0-9]+)*$ ]] && die "Wrong version format!"
    V1=( $(echo $1 | tr '.' ' ') )
    V2=( $(echo $2 | tr '.' ' ') )
    VN=${#V1[@]}
    [[ $VN -lt ${#V2[@]} ]] && VN=${#V2[@]}
    for ((x = 0; x < $VN; x++)); do
    [[ ${V1[x]} -lt ${V2[x]} ]] && return 1
    [[ ${V1[x]} -gt ${V2[x]} ]] && return 2
    done
    return 0
    USE_IWCONFIG=0
    is_wifi_interface() {
    which iw > /dev/null 2>&1 && iw dev $1 info > /dev/null 2>&1 && return 0
    if which iwconfig > /dev/null 2>&1 && iwconfig $1 > /dev/null 2>&1; then
    USE_IWCONFIG=1
    return 0
    fi
    return 1
    get_phy_device() {
    for x in /sys/class/ieee80211/*; do
    [[ ! -d "$x" ]] && continue
    if [[ "${x##*/}" = "$1" ]]; then
    echo $1
    return 0
    elif [[ -e "$x/device/net/$1" ]]; then
    echo ${x##*/}
    return 0
    elif [[ -e "$x/device/net:$1" ]]; then
    echo ${x##*/}
    return 0
    fi
    done
    echo "Failed to get phy interface" >&2
    return 1
    get_adapter_info() {
    PHY=$(get_phy_device "$1")
    [[ $? -ne 0 ]] && return 1
    iw phy $PHY info
    can_have_sta_and_ap() {
    # iwconfig does not provide this information, assume false
    [[ $USE_IWCONFIG -eq 1 ]] && return 1
    get_adapter_info "$1" | grep -E '{.* managed.* AP.*}' > /dev/null 2>&1 && return 0
    get_adapter_info "$1" | grep -E '{.* AP.* managed.*}' > /dev/null 2>&1 && return 0
    return 1
    can_have_ap() {
    # iwconfig does not provide this information, assume true
    [[ $USE_IWCONFIG -eq 1 ]] && return 0
    get_adapter_info "$1" | grep -E '\* AP$' > /dev/null 2>&1 && return 0
    return 1
    can_transmit_to_channel() {
    IFACE=$1
    CHANNEL=$2
    if [[ $USE_IWCONFIG -eq 0 ]]; then
    CHANNEL_INFO=$(get_adapter_info ${IFACE} | grep "MHz \[${CHANNEL}\]")
    [[ -z "${CHANNEL_INFO}" ]] && return 1
    [[ "${CHANNEL_INFO}" == *no\ IR* ]] && return 1
    [[ "${CHANNEL_INFO}" == *disabled* ]] && return 1
    return 0
    else
    CHANNEL=$(printf '%02d' ${CHANNEL})
    CHANNEL_INFO=$(iwlist ${IFACE} channel | grep "Channel ${CHANNEL} :")
    [[ -z "${CHANNEL_INFO}" ]] && return 1
    return 0
    fi
    is_wifi_connected() {
    if [[ $USE_IWCONFIG -eq 0 ]]; then
    iw dev "$1" link 2>&1 | grep -E '^Connected to' > /dev/null 2>&1 && return 0
    else
    iwconfig "$1" 2>&1 | grep -E 'Access Point: [0-9a-fA-F]{2}:' > /dev/null 2>&1 && return 0
    fi
    return 1
    get_macaddr() {
    ip link show "$1" | grep ether | grep -Eo '([0-9a-f]{2}:){5}[0-9a-f]{2}[[:space:]]' | tr -d '[[:space:]]'
    get_avail_bridge() {
    for i in {0..100}; do
    curr_bridge=$(brctl show | grep "br$i" | cut -s -f1)
    if [[ -z $curr_bridge ]]; then
    echo "br$i"
    return
    fi
    done
    get_new_macaddr() {
    OLDMAC=$(get_macaddr "$1")
    for i in {20..255}; do
    NEWMAC="${OLDMAC%:*}:$(printf %02x $i)"
    (ip link | grep "ether ${NEWMAC}" > /dev/null 2>&1) || break
    done
    echo $NEWMAC
    ADDED_UNMANAGED=0
    NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf
    NM_OLDER_VERSION=1
    networkmanager_exists() {
    which nmcli > /dev/null 2>&1 || return 1
    NM_VER=$(nmcli -v | grep -m1 -oE '[0-9]+(\.[0-9]+)*\.[0-9]+')
    version_cmp $NM_VER 0.9.10
    if [[ $? -eq 1 ]]; then
    NM_OLDER_VERSION=1
    else
    NM_OLDER_VERSION=0
    fi
    return 0
    networkmanager_is_running() {
    networkmanager_exists || return 1
    if [[ $NM_OLDER_VERSION -eq 1 ]]; then
    NMCLI_OUT=$(nmcli -t -f RUNNING nm)
    else
    NMCLI_OUT=$(nmcli -t -f RUNNING g)
    fi
    [[ "$NMCLI_OUT" == "running" ]]
    networkmanager_iface_is_unmanaged() {
    nmcli -t -f DEVICE,STATE d | grep -E "^$1:unmanaged$" > /dev/null 2>&1
    ADDED_UNMANAGED=
    networkmanager_add_unmanaged() {
    networkmanager_exists || return 1
    [[ -d ${NETWORKMANAGER_CONF%/*} ]] || mkdir -p ${NETWORKMANAGER_CONF%/*}
    [[ -f ${NETWORKMANAGER_CONF} ]] || touch ${NETWORKMANAGER_CONF}
    if [[ $NM_OLDER_VERSION -eq 1 ]]; then
    if [[ -z "$2" ]]; then
    MAC=$(get_macaddr "$1")
    else
    MAC="$2"
    fi
    [[ -z "$MAC" ]] && return 1
    fi
    UNMANAGED=$(grep -m1 -Eo '^unmanaged-devices=[[:alnum:]:;,-]*' /etc/NetworkManager/NetworkManager.conf | sed 's/unmanaged-devices=//' | tr ';,' ' ')
    WAS_EMPTY=0
    [[ -z "$UNMANAGED" ]] && WAS_EMPTY=1
    for x in $UNMANAGED; do
    [[ $x == "mac:${MAC}" ]] && return 2
    [[ $NM_OLDER_VERSION -eq 0 && $x == "interface-name:${1}" ]] && return 2
    done
    if [[ $NM_OLDER_VERSION -eq 1 ]]; then
    UNMANAGED="${UNMANAGED} mac:${MAC}"
    else
    UNMANAGED="${UNMANAGED} interface-name:${1}"
    fi
    UNMANAGED=$(echo $UNMANAGED | sed -e 's/^ //')
    UNMANAGED="${UNMANAGED// /;}"
    UNMANAGED="unmanaged-devices=${UNMANAGED}"
    if ! grep -E '^\[keyfile\]' ${NETWORKMANAGER_CONF} > /dev/null 2>&1; then
    echo -e "\n\n[keyfile]\n${UNMANAGED}" >> ${NETWORKMANAGER_CONF}
    elif [[ $WAS_EMPTY -eq 1 ]]; then
    sed -e "s/^\(\[keyfile\].*\)$/\1\n${UNMANAGED}/" -i ${NETWORKMANAGER_CONF}
    else
    sed -e "s/^unmanaged-devices=.*/${UNMANAGED}/" -i ${NETWORKMANAGER_CONF}
    fi
    ADDED_UNMANAGED="${ADDED_UNMANAGED} ${1} "
    return 0
    networkmanager_rm_unmanaged() {
    networkmanager_exists || return 1
    [[ ! -f ${NETWORKMANAGER_CONF} ]] && return 1
    if [[ $NM_OLDER_VERSION -eq 1 ]]; then
    if [[ -z "$2" ]]; then
    MAC=$(get_macaddr "$1")
    else
    MAC="$2"
    fi
    [[ -z "$MAC" ]] && return 1
    fi
    UNMANAGED=$(grep -m1 -Eo '^unmanaged-devices=[[:alnum:]:;,-]*' /etc/NetworkManager/NetworkManager.conf | sed 's/unmanaged-devices=//' | tr ';,' ' ')
    [[ -z "$UNMANAGED" ]] && return 1
    [[ -n "$MAC" ]] && UNMANAGED=$(echo $UNMANAGED | sed -e "s/mac:${MAC}\( \|$\)//g")
    UNMANAGED=$(echo $UNMANAGED | sed -e "s/interface-name:${1}\( \|$\)//g")
    UNMANAGED=$(echo $UNMANAGED | sed -e 's/ $//')
    if [[ -z "$UNMANAGED" ]]; then
    sed -e "/^unmanaged-devices=.*/d" -i ${NETWORKMANAGER_CONF}
    else
    UNMANAGED="${UNMANAGED// /;}"
    UNMANAGED="unmanaged-devices=${UNMANAGED}"
    sed -e "s/^unmanaged-devices=.*/${UNMANAGED}/" -i ${NETWORKMANAGER_CONF}
    fi
    ADDED_UNMANAGED="${ADDED_UNMANAGED/ ${1} /}"
    return 0
    networkmanager_rm_unmanaged_if_needed() {
    [[ $ADDED_UNMANAGED =~ .*\ ${1}\ .* ]] && networkmanager_rm_unmanaged ${1}
    networkmanager_wait_until_unmanaged() {
    networkmanager_is_running || return 1
    while ! networkmanager_iface_is_unmanaged "$1"; do
    sleep 1
    done
    sleep 2
    return 0
    CHANNEL=1
    GATEWAY=192.168.12.1
    WPA_VERSION=1+2
    ETC_HOSTS=0
    HIDDEN=0
    SHARE_METHOD=nat
    IEEE80211N=0
    HT_CAPAB='[HT40+]'
    DRIVER=nl80211
    NO_VIRT=0
    CONFDIR=
    WIFI_IFACE=
    VWIFI_IFACE=
    INTERNET_IFACE=
    BRIDGE_IFACE=
    OLD_IP_FORWARD=
    OLD_BRIDGE_IPTABLES=
    OLD_MACADDR=
    cleanup() {
    trap "" SIGINT
    echo
    echo "Doing cleanup..."
    # exiting
    for x in $CONFDIR/*.pid; do
    # even if the $CONFDIR is empty, the for loop will assign
    # a value in $x. so we need to check if the value is a file
    [[ -f $x ]] && kill -9 $(cat $x)
    done
    rm -rf $CONFDIR
    if [[ "$SHARE_METHOD" != "none" ]]; then
    if [[ "$SHARE_METHOD" == "nat" ]]; then
    iptables -t nat -D POSTROUTING -o ${INTERNET_IFACE} -j MASQUERADE > /dev/null 2>&1
    iptables -D FORWARD -i ${WIFI_IFACE} -s ${GATEWAY%.*}.0/24 -j ACCEPT > /dev/null 2>&1
    iptables -D FORWARD -i ${INTERNET_IFACE} -d ${GATEWAY%.*}.0/24 -j ACCEPT > /dev/null 2>&1
    [[ -n $OLD_IP_FORWARD ]] && echo $OLD_IP_FORWARD > /proc/sys/net/ipv4/ip_forward
    elif [[ "$SHARE_METHOD" == "bridge" ]]; then
    ip link set down $BRIDGE_IFACE
    brctl delbr $BRIDGE_IFACE
    [[ -n $OLD_BRIDGE_IPTABLES ]] && echo $OLD_BRIDGE_IPTABLES > /proc/sys/net/bridge/bridge-nf-call-iptables
    fi
    fi
    if [[ "$SHARE_METHOD" != "bridge" ]]; then
    iptables -D INPUT -p tcp -m tcp --dport 53 -j ACCEPT > /dev/null 2>&1
    iptables -D INPUT -p udp -m udp --dport 53 -j ACCEPT > /dev/null 2>&1
    iptables -D INPUT -p udp -m udp --dport 67 -j ACCEPT > /dev/null 2>&1
    fi
    if [[ $NO_VIRT -eq 0 ]]; then
    if [[ -n $VWIFI_IFACE ]]; then
    ip link set down dev ${VWIFI_IFACE}
    ip addr flush ${VWIFI_IFACE}
    networkmanager_rm_unmanaged_if_needed ${VWIFI_IFACE} ${OLD_MACADDR}
    iw dev ${VWIFI_IFACE} del
    fi
    else
    ip link set down dev ${WIFI_IFACE}
    ip addr flush ${WIFI_IFACE}
    networkmanager_rm_unmanaged_if_needed ${WIFI_IFACE}
    fi
    die() {
    [[ -n "$1" ]] && echo -e "\nERROR: $1\n" >&2
    cleanup
    exit 1
    clean_exit() {
    cleanup
    exit 0
    # if the user press ctrl+c then execute die()
    trap "die" SIGINT
    ARGS=$(getopt -o hc:w:g:dnm: -l "help","hidden","ieee80211n","ht_capab:","driver:","no-virt" -n $(basename $0) -- "$@")
    [[ $? -ne 0 ]] && exit 1
    eval set -- "$ARGS"
    while :; do
    case "$1" in
    -h|--help)
    usage >&2
    exit 1
    --hidden)
    shift
    HIDDEN=1
    -c)
    shift
    CHANNEL="$1"
    shift
    -w)
    shift
    WPA_VERSION="$1"
    shift
    -g)
    shift
    GATEWAY="$1"
    shift
    -d)
    shift
    ETC_HOSTS=1
    -n)
    shift
    SHARE_METHOD=none
    -m)
    shift
    SHARE_METHOD="$1"
    shift
    --ieee80211n)
    shift
    IEEE80211N=1
    --ht_capab)
    shift
    HT_CAPAB="$1"
    shift
    --driver)
    shift
    DRIVER="$1"
    shift
    --no-virt)
    shift
    NO_VIRT=1
    shift
    break
    esac
    done
    if [[ $# -lt 1 ]]; then
    usage >&2
    exit 1
    fi
    if [[ $(id -u) -ne 0 ]]; then
    echo "You must run it as root." >&2
    exit 1
    fi
    WIFI_IFACE=$1
    if ! is_wifi_interface ${WIFI_IFACE}; then
    echo "ERROR: '${WIFI_IFACE}' is not a WiFi interface" >&2
    exit 1
    fi
    if ! can_have_ap ${WIFI_IFACE}; then
    echo "ERROR: Your adapter does not support AP (master) mode" >&2
    exit 1
    fi
    if ! can_have_sta_and_ap ${WIFI_IFACE}; then
    if is_wifi_connected ${WIFI_IFACE}; then
    echo "ERROR: Your adapter can not be connected to an AP and at the same time transmit as an AP" >&2
    exit 1
    elif [[ $NO_VIRT -eq 0 ]]; then
    echo "WARN: Your adapter does not fully support AP virtual interface, enabling --no-virt" >&2
    NO_VIRT=1
    fi
    fi
    if [[ "$SHARE_METHOD" != "nat" && "$SHARE_METHOD" != "bridge" && "$SHARE_METHOD" != "none" ]]; then
    echo "ERROR: Wrong Internet sharing method" >&2
    echo
    usage >&2
    exit 1
    fi
    if [[ "$SHARE_METHOD" == "bridge" ]]; then
    OLD_BRIDGE_IPTABLES=$(cat /proc/sys/net/bridge/bridge-nf-call-iptables)
    BRIDGE_IFACE=$(get_avail_bridge)
    if [[ -z $BRIDGE_IFACE ]]; then
    echo "ERROR: No availabe bridges < br100" >&2
    exit 1
    fi
    elif [[ "$SHARE_METHOD" == "nat" ]]; then
    OLD_IP_FORWARD=$(cat /proc/sys/net/ipv4/ip_forward)
    fi
    if [[ "$SHARE_METHOD" != "none" ]]; then
    MIN_REQUIRED_ARGS=2
    else
    MIN_REQUIRED_ARGS=1
    fi
    if [[ $# -gt $MIN_REQUIRED_ARGS ]]; then
    if [[ "$SHARE_METHOD" != "none" ]]; then
    if [[ $# -ne 3 && $# -ne 4 ]]; then
    usage >&2
    exit 1
    fi
    INTERNET_IFACE=$2
    SSID=$3
    PASSPHRASE=$4
    else
    if [[ $# -ne 2 && $# -ne 3 ]]; then
    usage >&2
    exit 1
    fi
    SSID=$2
    PASSPHRASE=$3
    fi
    else
    if [[ "$SHARE_METHOD" != "none" ]]; then
    if [[ $# -ne 2 ]]; then
    usage >&2
    exit 1
    fi
    INTERNET_IFACE=$2
    fi
    if tty -s; then
    read -p "SSID: " SSID
    while :; do
    read -p "Passphrase: " -s PASSPHRASE
    echo
    read -p "Retype passphrase: " -s PASSPHRASE2
    echo
    if [[ "$PASSPHRASE" != "$PASSPHRASE2" ]]; then
    echo "Passphrases do not match."
    else
    break
    fi
    done
    else
    read SSID
    read PASSPHRASE
    fi
    fi
    if [[ $NO_VIRT -eq 1 && "$WIFI_IFACE" == "$INTERNET_IFACE" ]]; then
    echo -n "ERROR: You can not share your connection from the same" >&2
    echo " interface if you are using --no-virt option." >&2
    exit 1
    fi
    CONFDIR=$(mktemp -d /tmp/create_ap.${WIFI_IFACE}.conf.XXXXXXXX)
    echo "Config dir: $CONFDIR"
    if [[ $NO_VIRT -eq 0 ]]; then
    VWIFI_IFACE=${WIFI_IFACE}ap
    # in NetworkManager 0.9.10 and above we can set the interface as unmanaged without
    # the need of MAC address, so we set it before we create the virtual interface.
    if networkmanager_is_running && [[ $NM_OLDER_VERSION -eq 0 ]]; then
    echo -n "Network Manager found, set $1 as unmanaged device... "
    networkmanager_add_unmanaged ${VWIFI_IFACE}
    # do not call networkmanager_wait_until_unmanaged because interface does not
    # exist yet
    echo "DONE"
    fi
    WIFI_IFACE_CHANNEL=$(iw dev ${WIFI_IFACE} info | grep channel | awk '{print $2}')
    if [[ -n $WIFI_IFACE_CHANNEL && $WIFI_IFACE_CHANNEL -ne $CHANNEL ]]; then
    echo "hostapd will fail to use channel $CHANNEL because $WIFI_IFACE is already set to channel $WIFI_IFACE_CHANNEL, fallback to channel $WIFI_IFACE_CHANNEL."
    CHANNEL=$WIFI_IFACE_CHANNEL
    fi
    VIRTDIEMSG="Maybe your WiFi adapter does not fully support virtual interfaces.
    Try again with --no-virt."
    echo -n "Creating a virtual WiFi interface... "
    iw dev ${VWIFI_IFACE} del > /dev/null 2>&1
    if iw dev ${WIFI_IFACE} interface add ${VWIFI_IFACE} type __ap; then
    # now we can call networkmanager_wait_until_unmanaged
    networkmanager_is_running && [[ $NM_OLDER_VERSION -eq 0 ]] && networkmanager_wait_until_unmanaged ${VWIFI_IFACE}
    echo "${VWIFI_IFACE} created."
    else
    VWIFI_IFACE=
    die "$VIRTDIEMSG"
    fi
    OLD_MACADDR=$(get_macaddr ${VWIFI_IFACE})
    [[ ${OLD_MACADDR} == $(get_macaddr ${WIFI_IFACE}) ]] && NEW_MACADDR=$(get_new_macaddr ${VWIFI_IFACE})
    WIFI_IFACE=${VWIFI_IFACE}
    fi
    can_transmit_to_channel ${WIFI_IFACE} ${CHANNEL} || die "Your adapter can not transmit to channel ${CHANNEL}."
    if networkmanager_is_running && ! networkmanager_iface_is_unmanaged ${WIFI_IFACE}; then
    echo -n "Network Manager found, set $1 as unmanaged device... "
    networkmanager_add_unmanaged ${WIFI_IFACE}
    networkmanager_wait_until_unmanaged ${WIFI_IFACE}
    echo "DONE"
    fi
    [[ $HIDDEN -eq 1 ]] && echo "Access Point's SSID is hidden!"
    # hostapd config
    cat << EOF > $CONFDIR/hostapd.conf
    ssid=${SSID}
    interface=${WIFI_IFACE}
    driver=${DRIVER}
    hw_mode=g
    channel=${CHANNEL}
    ctrl_interface=$CONFDIR/hostapd_ctrl
    ctrl_interface_group=0
    ignore_broadcast_ssid=$HIDDEN
    EOF
    if [[ $IEEE80211N -eq 1 ]]; then
    cat << EOF >> $CONFDIR/hostapd.conf
    ieee80211n=1
    wmm_enabled=1
    ht_capab=${HT_CAPAB}
    EOF
    fi
    if [[ -n "$PASSPHRASE" ]]; then
    [[ "$WPA_VERSION" == "1+2" || "$WPA_VERSION" == "2+1" ]] && WPA_VERSION=3
    cat << EOF >> $CONFDIR/hostapd.conf
    wpa=${WPA_VERSION}
    wpa_passphrase=$PASSPHRASE
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP CCMP
    rsn_pairwise=CCMP
    EOF
    fi
    if [[ "$SHARE_METHOD" == "bridge" ]]; then
    echo "bridge=${BRIDGE_IFACE}" >> $CONFDIR/hostapd.conf
    else
    # dnsmasq config (dhcp + dns)
    DNSMASQ_VER=$(dnsmasq -v | grep -m1 -oE '[0-9]+(\.[0-9]+)*\.[0-9]+')
    version_cmp $DNSMASQ_VER 2.63
    if [[ $? -eq 1 ]]; then
    DNSMASQ_BIND=bind-interfaces
    else
    DNSMASQ_BIND=bind-dynamic
    fi
    cat << EOF > $CONFDIR/dnsmasq.conf
    interface=${WIFI_IFACE}
    ${DNSMASQ_BIND}
    dhcp-range=${GATEWAY%.*}.1,${GATEWAY%.*}.254,255.255.255.0,24h
    dhcp-option=option:router,${GATEWAY}
    EOF
    [[ $ETC_HOSTS -eq 0 ]] && echo no-hosts >> $CONFDIR/dnsmasq.conf
    fi
    # initialize WiFi interface
    if [[ $NO_VIRT -eq 0 && -n "$NEW_MACADDR" ]]; then
    ip link set dev ${WIFI_IFACE} address ${NEW_MACADDR} || die "$VIRTDIEMSG"
    fi
    ip link set down dev ${WIFI_IFACE} || die "$VIRTDIEMSG"
    ip addr flush ${WIFI_IFACE} || die "$VIRTDIEMSG"
    if [[ "$SHARE_METHOD" != "bridge" ]]; then
    ip link set up dev ${WIFI_IFACE} || die "$VIRTDIEMSG"
    ip addr add ${GATEWAY}/24 broadcast ${GATEWAY%.*}.255 dev ${WIFI_IFACE} || die "$VIRTDIEMSG"
    fi
    # enable Internet sharing
    if [[ "$SHARE_METHOD" != "none" ]]; then
    echo "Sharing Internet using method: $SHARE_METHOD"
    if [[ "$SHARE_METHOD" == "nat" ]]; then
    iptables -t nat -I POSTROUTING -o ${INTERNET_IFACE} -j MASQUERADE || die
    iptables -I FORWARD -i ${WIFI_IFACE} -s ${GATEWAY%.*}.0/24 -j ACCEPT || die
    iptables -I FORWARD -i ${INTERNET_IFACE} -d ${GATEWAY%.*}.0/24 -j ACCEPT || die
    echo 1 > /proc/sys/net/ipv4/ip_forward || die
    elif [[ "$SHARE_METHOD" == "bridge" ]]; then
    # disable iptables rules for bridged interfaces
    echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables || die
    # create and initialize bridged interface
    brctl addbr ${BRIDGE_IFACE} || die
    brctl addif ${BRIDGE_IFACE} ${INTERNET_IFACE} || die
    ip link set dev ${BRIDGE_IFACE} up || die
    fi
    else
    echo "No Internet sharing"
    fi
    # boost low-entropy
    if [[ $(cat /proc/sys/kernel/random/entropy_avail) -lt 1000 ]]; then
    which haveged > /dev/null 2>&1 && {
    haveged -w 1024 -p $CONFDIR/haveged.pid
    fi
    # start dns + dhcp server
    if [[ "$SHARE_METHOD" != "bridge" ]]; then
    iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT || die
    iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT || die
    iptables -I INPUT -p udp -m udp --dport 67 -j ACCEPT || die
    dnsmasq -C $CONFDIR/dnsmasq.conf -x $CONFDIR/dnsmasq.pid || die
    fi
    # start access point
    echo "hostapd command-line interface: hostapd_cli -p $CONFDIR/hostapd_ctrl"
    # from now on we exit with 0 on SIGINT
    trap "clean_exit" SIGINT
    if ! hostapd $CONFDIR/hostapd.conf; then
    echo -e "\nError: Failed to run hostapd, maybe a program is interfering." >&2
    if networkmanager_is_running; then
    echo "If an error like 'n80211: Could not configure driver mode' was thrown" >&2
    echo "try running the following before starting create_ap:" >&2
    if [[ $NM_OLDER_VERSION -eq 1 ]]; then
    echo " nmcli nm wifi off" >&2
    else
    echo " nmcli r wifi off" >&2
    fi
    echo " rfkill unblock wlan" >&2
    fi
    die
    fi
    clean_exit
    Last edited by OBLiQUE (2014-09-02 20:26:22)

    adam777 wrote:
    Thank, just what I was looking for.
    Unfortunately, it seems that currently my Intel 5300 card (using the iwlwifi driver), does not support AP mode.
    From what I understand, hostapd can be used in bridge mode as well, which should have no compatibility problems.
    Can some one point me in the right direction?
    * EDIT *
    After more attempts, I think I got it wrong and AP mode is indeed required.
    Sorry for the late reply, I didn't noticed your message.. Did you got any errors? I have Intel 6205 and it works.
    Also if you use NetworkManager, then you have to say to NetworkManager to stop using your interface.
    You can do it by editing the /etc/NetworkManager/NetworkManager.conf file and put the following (without the <>):
    [keyfile]
    unmanaged-devices=mac:<interface's mac address here>
    and restart your NetworkManager. Ofcourse after you finish, you have to remove it in order to get your wifi back to working with NetworkManager.

  • Passing user parameters to groovy script

    From OIM 11gr2 ,I need to create users into LDAP through OID connector OID-11.1.1.6.0.
    After creation , i need to pass user id and other parameters to groovy script to run a command on target system.
    How do i pass these parameters to groovy script. Please assist

    Hi,
    I am calling the shell script from concurrent program and below is the log file of the concurrent program.
    Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
    KORONT_041_SH module: KORONT - Daily Item Master Update
    +---------------------------------------------------------------------------+
    Current system time is 29-JUN-2011 10:09:35
    +---------------------------------------------------------------------------+
    REQUEST_ID: 68510795
    USER_ID: 4219
    PDC:    85
    Item Number:
    KORDC:    124
    PDCSET:   1100000003
    last_updated_in_hours: 24
    EMAIL_ID: [email protected],[email protected]
    SQLPATH: /e381/oracle/asodev01appl/custom/motont/1.0.0/sql/
    RPTDIR:  /e381/oracle/asodev01comn/admin/out/ASODEV01_asoprdb2
    RPTFILE: o68510795.out
    Table truncated.
    *Enter value for 6: User requested Interrupt or EOF detected.*
    Table truncated.
    old  15:       AND ic.organization_id   = &&4
    new  15:       AND ic.organization_id   = 1100000003
    0 rows created.
    Input truncated to 9 characters
    old   8:                AND organization_id   = &&4
    new   8:                AND organization_id   = 1100000003
    0 rows created.
    End of SQL
    No record.
    +---------------------------------------------------------------------------+
    Executing request completion options...
    +------------- 1) PRINT   -------------+
    Printing output file.
                   Request ID : 68510795      
             Number of copies : 0      
                      Printer : noprint
    +--------------------------------------+
    Finished executing request completion options.
    +---------------------------------------------------------------------------+
    Concurrent request completed successfully
    Current system time is 29-JUN-2011 10:09:38
    +---------------------------------------------------------------------------+Regards,
    Sreekanth

  • Illustrator script to create symbols from images in folder

    Time to give back to the community...
    Here is a script I recently devised to bulk create symbols from images in a folder. Tested with Illustrator CC 2014.
    // Import Folder's Files as Symbols - Illustrator CC script
    // Description: Creates symbols from images in the designated folder into current document
    // Author     : Oscar Rines (oscarrines (at) gmail.com)
    // Version    : 1.0.0 on 2014-09-21
    // Reused code from "Import Folder's Files as Layers - Illustrator CS3 script"
    // by Nathaniel V. KELSO ([email protected])
    #target illustrator
    function getFolder() {
      return Folder.selectDialog('Please select the folder to be imported:', Folder('~'));
    function symbolExists(seekInDoc, seekSymbol) {
        for (var j=0; j < seekInDoc.symbols.length; j++) {
            if (seekInDoc.symbols[j].name == seekSymbol) {
                return true;
        return false;
    function importFolderContents(selectedFolder) {
        var activeDoc = app.activeDocument;     //Active object reference
      // if a folder was selected continue with action, otherwise quit
      if (selectedFolder) {
            var newsymbol;              //Symbol object reference
            var placedart;              //PlacedItem object reference
            var fname;                  //File name
            var sname;                  //Symbol name
            var symbolcount = 0;        //Number of symbols added
            var templayer = activeDoc.layers.add(); //Create a new temporary layer
            templayer.name = "Temporary layer"
            var imageList = selectedFolder.getFiles(); //retrieve files in the folder
            // Create a palette-type window (a modeless or floating dialog),
            var win = new Window("palette", "SnpCreateProgressBar", {x:100, y:100, width:750, height:310});
            win.pnl = win.add("panel", [10, 10, 740, 255], "Progress"); //add a panel to contain the components
            win.pnl.currentTaskLabel = win.pnl.add("statictext", [10, 18, 620, 33], "Examining: -"); //label indicating current file being examined
            win.pnl.progBarLabel = win.pnl.add("statictext", [620, 18, 720, 33], "0/0"); //progress bar label
            win.pnl.progBarLabel.justify = 'right';
            win.pnl.progBar = win.pnl.add("progressbar", [10, 35, 720, 60], 0, imageList.length-1); //progress bar
            win.pnl.symbolCount = win.pnl.add("statictext", [10, 70, 710, 85], "Symbols added: 0"); //label indicating number of symbols created
            win.pnl.symbolLabel = win.pnl.add("statictext", [10, 85, 710, 100], "Last added symbol: -"); //label indicating name of the symbol created
            win.pnl.errorListLabel = win.pnl.add("statictext", [10, 110, 720, 125], "Error log:"); //progress bar label
            win.pnl.errorList = win.pnl.add ("edittext", [10, 125, 720, 225], "", {multiline: true, scrolling: true}); //errorlist
            //win.pnl.errorList.graphics.font = ScriptUI.newFont ("Arial", "REGULAR", 7);
            //win.pnl.errorList.graphics.foregroundColor = win.pnl.errorList.graphics.newPen(ScriptUIGraphics.PenType.SOLID_COLOR, [1, 0, 0, 1], 1);
            win.doneButton = win.add("button", [640, 265, 740, 295], "OK"); //button to dispose the panel
            win.doneButton.onClick = function () //define behavior for the "Done" button
                win.close();
            win.center();
            win.show();
            //Iterate images
            for (var i = 0; i < imageList.length; i++) {
                win.pnl.currentTaskLabel.text = 'Examining: ' + imageList[i].name; //update current file indicator
                win.pnl.progBarLabel.text = i+1 + '/' + imageList.length; //update file count
                win.pnl.progBar.value = i+1; //update progress bar
                if (imageList[i] instanceof File) {         
                    fname = imageList[i].name.toLowerCase(); //convert file name to lowercase to check for supported formats
                    if( (fname.indexOf('.eps') == -1) &&
                        (fname.indexOf('.png') == -1)) {
                        win.pnl.errorList.text += 'Skipping ' + imageList[i].name + '. Not a supported type.\r'; //log error
                        continue; // skip unsupported formats
                    else {
                        sname = imageList[i].name.substring(0, imageList[i].name.lastIndexOf(".") ); //discard file extension
                        // Check for duplicate symbol name;
                        if (symbolExists(activeDoc, sname)) {
                            win.pnl.errorList.text += 'Skipping ' + imageList[i].name + '. Duplicate symbol for name: ' + sname + '\r'; //log error
                        else {
                            placedart = activeDoc.placedItems.add(); //get a reference to a new placedItem object
                            placedart.file = imageList[i]; //link the object to the image on disk
                            placedart.name =  sname; //give the placed item a name
                            placedart.embed();   //make this a RasterItem
                            placedart = activeDoc.rasterItems.getByName(sname); //get a reference to the newly created raster item
                            newsymbol = activeDoc.symbols.add(placedart); //add the raster item to the symbols                 
                            newsymbol.name = sname; //name the symbol
                            symbolcount++; //update the count of symbols created
                            placedart.remove(); //remove the raster item from the canvas
                            win.pnl.symbolCount.text = 'Symbols added: ' + symbolcount; //update created number of symbols indicator
                            win.pnl.symbolLabel.text = 'Last added symbol: ' + sname; //update created symbol indicator
                else {
                    win.pnl.errorList.text += 'Skipping ' + imageList[i].name + '. Not a regular file.\r'; //log error
                win.update(); //required so pop-up window content updates are shown
            win.pnl.currentTaskLabel.text = ''; //clear current file indicator
            // Final verdict
            if (symbolcount >0) {
                win.pnl.symbolLabel.text = 'Symbol library changed. Do not forget to save your work';
            else {
                win.pnl.symbolLabel.text = 'No new symbols added to the library';
            win.update(); //update window contents
            templayer.remove(); //remove the temporary layer
        else {
            alert("Action cancelled by user");
    if ( app.documents.length > 0 ) {
        importFolderContents( getFolder() );
    else{
        Window.alert("You must open at least one document.");

    Thank you, nice job & I am looking forward to trying it out!

  • [Solved]How to create ADF interface View

    Hi All,
    I have a design problem that I need some help with.
    In one of the pages in our application, we have two drop down boxes one with account type and another with account name (label) and account number (value).
    The account types are Escrow, Credit and Misc (some other types). all three types are in three different tables.
    Now the problem is, in the page when the account type is selected, the second drop down box should be filled with respective account numbers.
    So my question is Can I create an interface view and implement in all three different account type views and use it for second drop down box.
    Thanks in advance for your help.
    Thanks
    Praveen
    Message was edited by:
    bpraveen
    Message was edited by:
    bpraveen

    You might do a VO with a union of the three tables - use a custom SELECT like this:
    SELECT 'Escrow' account_type, account_number, balance, ... FROM escrow_accounts
    UNION
    SELECT 'Credit', account_number, balance, ... FROM credit_accounts
    UNION
    SELECT 'Misc.', account_number, balance, ... FROM misc_accountsUse NULL for any column in a table that does not have that column. I'm not sure if you can use Entity Objects (one EO per table) with such a VO to make the data updatable - it might have to be a read-only VO.
    Or create a database view with this SELECT and base the VO on that view instead of a table. You can even make the view updatable with INSTEAD OF triggers and base an EO on the view.

  • Question about DBCA generate script o create RAC database 2 node cluster

    Question about creating two node RAC database 11g after installing and configuration 11g clusterware. I've used DBCA to generate script to create a rac database. I've set
    environment variable ORACLE_SID=RAC and the creating script creates instance of RAC1 and RAC2. My understanding is that each node will represent a node, however there should only be one database with a name of 'RAC'. Please advise

    You are getting your terminology mixed up.
    You only have one database. Take a look, there are one set of datafiles on shared storage.
    You have 2 instances which are accessing one database.
    Database name is RAC. Instance names are RAC1, RAC2, etc, etc.
    Also, if you look at the listener configuration and if your tnsnames is setup properly then connecting to RAC will connect you to either one of the instances wheras connecting to RAC1 will connect you to that instance.

  • Error While running WLST script to create SOA Domain in Clustered Environme

    Hi,
    I am trying to run WLST script to create SOA Domain in clustered environment.The script is as follows.
    import sys
    print "@@@ Starting the script ..."
    global props
    from wlstModule import *#@UnusedWildImport
    from java.io import FileInputStream
    from java.io import File
    #=======================================================================================
    # Create Boot Properties File
    #=======================================================================================
    def createBootPropertiesFile(directoryPath, username, password):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/boot.properties', 'w')
    fileNew.write('username=%s\n' % username)
    fileNew.write('password=%s\n' % password)
    fileNew.flush()
    fileNew.close()
    def createNodeManagerPropertiesFile(directoryPath, username, password):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/nm_password.properties', 'w')
    fileNew.write('username=%s\n' % username)
    fileNew.write('password=%s\n' % password)
    fileNew.flush()
    fileNew.close()
    def createAdminStartupPropertiesFile(directoryPath, args):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/startup.properties', 'w')
    args=args.replace(':','\\:')
    args=args.replace('=','\\=')
    fileNew.write('Arguments=%s\n' % args)
    fileNew.flush()
    fileNew.close()
    I am getting the error :
    Problem invoking WLST - Traceback (innermost last):
    (no code object) at line 0
    File "D:\Oracle\Middleware\Oracle_SOA1\bin\SOADomainScript.py", line 11
    adminserverDir = File(directoryPath)
    ^
    SyntaxError: invalid syntax
    Do i need to set any jar in the classpath? Already jython.jar is available in the classapath.
    Thanks in advance.
    Regards,
    Subha

    Hi,
    I am trying to run WLST script to create SOA Domain in clustered environment.The script is as follows.
    import sys
    print "@@@ Starting the script ..."
    global props
    from wlstModule import *#@UnusedWildImport
    from java.io import FileInputStream
    from java.io import File
    #=======================================================================================
    # Create Boot Properties File
    #=======================================================================================
    def createBootPropertiesFile(directoryPath, username, password):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/boot.properties', 'w')
    fileNew.write('username=%s\n' % username)
    fileNew.write('password=%s\n' % password)
    fileNew.flush()
    fileNew.close()
    def createNodeManagerPropertiesFile(directoryPath, username, password):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/nm_password.properties', 'w')
    fileNew.write('username=%s\n' % username)
    fileNew.write('password=%s\n' % password)
    fileNew.flush()
    fileNew.close()
    def createAdminStartupPropertiesFile(directoryPath, args):
    adminserverDir = File(directoryPath)
    bool = adminserverDir.mkdirs()
    fileNew=open(directoryPath + '/startup.properties', 'w')
    args=args.replace(':','\\:')
    args=args.replace('=','\\=')
    fileNew.write('Arguments=%s\n' % args)
    fileNew.flush()
    fileNew.close()
    I am getting the error :
    Problem invoking WLST - Traceback (innermost last):
    (no code object) at line 0
    File "D:\Oracle\Middleware\Oracle_SOA1\bin\SOADomainScript.py", line 11
    adminserverDir = File(directoryPath)
    ^
    SyntaxError: invalid syntax
    Do i need to set any jar in the classpath? Already jython.jar is available in the classapath.
    Thanks in advance.
    Regards,
    Subha

  • Using XML file in Java script to create Google Map

    Hello,
    I work for a non-profit in San Diego as a GIS Specialist. I have had to teach myself about some scripting to create some dynamic maps, but I am still very limited in my skills, so I have had to explore the internet in order to discover various tutorials and examples that have led me on a positive path.
    Right now I am working on a Google Mash-Up that will incorporate over 14,000 records, which will appear as separate markers that will have pop-up info bubbles with additional info inside (using html), once the marker is clicked.
    Here is the XML script example that is used in the tutorial I am following:
    <markers>
    <marker lat="43.65654" lng="-79.90138" html="Some stuff to display in the<br>First Info Window"
    label="Marker One" />
    <marker lat="43.91892" lng="-78.89231" html="Some stuff to display in the<br>Second Info Window"
    label="Marker Two" />
    <marker lat="43.82589" lng="-79.10040" html="Some stuff to display in the<br>Third Info Window"
    label="Marker Three" />
    </markers>
    ...and this is how it looks when the file is retrieved by the java script and mapped: http://econym.googlepages.com/example_map3.htm
    This is the java script that creates the Google Map. I have emboldened the section of the script that retrieves the data and parses it to create the markers:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Google Maps</title>
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA6GoL8P5zqjQlG5A5uM1ETBSUPozAscB0cY3RG8xEGnZyeom4axRySak889rVpvHYRsV4f9OZZzbboA"
    type="text/javascript"></script>
    </head>
    <body onunload="GUnload()">
    <!-- you can use tables or divs for the overall layout -->
    <table border=1>
    <tr>
    <td>
    <div id="map" style="width: 800px; height: 1200px"></div>
    </td>
    <td width = 200 valign="top" style="text-decoration: underline; color: #4444ff;">
    <div id="side_bar"></div>
    </td>
    </tr>
    </table>
    <noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b>
    However, it seems JavaScript is either disabled or not supported by your browser.
    To view Google Maps, enable JavaScript by changing your browser options, and then
    try again.
    </noscript>
    <script type="text/javascript">
    //<![CDATA[
    if (GBrowserIsCompatible()) {
    // this variable will collect the html which will eventualkly be placed in the side_bar
    var side_bar_html = "";
    // arrays to hold copies of the markers used by the side_bar
    // because the function closure trick doesnt work there
    var gmarkers = [];
    var i = 0;
    // A function to create the marker and set up the event window
    function createMarker(point,name,html) {
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
    // save the info we need to use later for the side_bar
    gmarkers[i] = marker;
    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
    i++;
    return marker;
    // This function picks up the click and opens the corresponding info window
    function myclick(i) {
    GEvent.trigger(gmarkers, "click");
    // create the map
    var map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng( 37.251699,-119.604315), 7);
    *// Read the data from testXML2blackpoolformat.xml*
    var request = GXmlHttp.create();
    request.open("GET", "testXML2blackpoolformat.xml", true);
    *request.onreadystatechange = function() {*
    *if (request.readyState == 4) {*
    var xmlDoc = GXml.parse(request.responseText);
    *// obtain the array of markers and loop through it*
    var markers = xmlDoc.documentElement.getElementsByTagName("ConnectoryRecord");
    *for (var i = 0; i < markers.length; i++) {*
    *// obtain the attribues of each marker*
    *var lat = parseFloat(markers[i].getAttribute("lat"));*
    *var lng = parseFloat(markers[i].getAttribute("lng"));*
    var point = new GLatLng(lat,lng);
    *var html = markers[i].getAttribute("html");*
    *var label = markers[i].getAttribute("label");*
    *// create the marker*
    var marker = createMarker(point,label,html);
    map.addOverlay(marker);
    // put the assembled side_bar_html contents into the side_bar div
    document.getElementById("side_bar").innerHTML = side_bar_html;
    request.send(null);
    else {
    alert("Sorry, the Google Maps API is not compatible with this browser");
    // This Javascript is based on code provided by the
    // Blackpool Community Church Javascript Team
    // http://www.commchurch.freeserve.co.uk/
    // http://econym.googlepages.com/index.htm
    //]]>
    </script>
    </body>
    </html>
    Here is my delima--
    This is the xml format that I need to use because it can accept the rest of my excel file and loop it through the 14,000+ records to create a functioning xml file. This is just a sample (2 records) of the larger file:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <ConnectoryAug2008>
    <ConnectoryRecord>
         <lng>-117.03683</lng>
         <lat>32.944505</lat>
         <ConnectoryID>1</ConnectoryID>
         <Name>$2.95 Guys</Name>
         <StreetAddress>13750 Stowe Drive</StreetAddress>
         <City>Poway</City>
         <State>CA</State>
         <Zip>92064</Zip>
    <Marker>White</Marker>
         <IndustryGroup>Technical Services</IndustryGroup>
         <ConnectoryProfileLink>http://connectory.com/search/profile_view.aspx?connectoryId=1</ConnectoryProfileLink>
    </ConnectoryRecord>
    <ConnectoryRecord>
         <lng>-117.272843</lng>
         <lat>33.13337</lat>
         <ConnectoryID>2</ConnectoryID>
         <Name>(GLDS) Great Lakes Data Systems</Name>
         <StreetAddress>5954 Priestly Drive</StreetAddress>
         <City>Carlsbad</City>
         <State>CA</State>
         <Zip>92008</Zip>
    <Marker>Orange</Marker>
         <IndustryGroup>Technology</IndustryGroup>
         <ConnectoryProfileLink>http://connectory.com/search/profile_view.aspx?connectoryId=2</ConnectoryProfileLink>
    </ConnectoryRecord>
    </ConnectoryAug2008>
    This is the tutorial where I found the formatting techniques to successfully create the large xml file that will format/convert my excel file properly: http://www.mrexcel.com/tip064.shtml
    These variables should appear as html in the info bubble:
    <ConnectoryID>2</ConnectoryID>
         <Name>(GLDS) Great Lakes Data Systems</Name>
         <StreetAddress>5954 Priestly Drive</StreetAddress>
         <City>Carlsbad</City>
         <State>CA</State>
         <Zip>92008</Zip>
    <IndustryGroup>Technology</IndustryGroup>
         <ConnectoryProfileLink>http://connectory.com/search/profile_view.aspx?connectoryId=2</ConnectoryProfileLink>
    The "Marker" variable instructs Google Maps to label the marker with a particular color. I will be so grateful to the person(s) that helps me get through this wall that I have been hitting for a long time. It's very difficult without having the luxury of peers who know about these types of issues.
    Thank you!!

    Here is the relationship: They both contain geographic coordinates that produce a point on a map. I will use the rest of the information in the second xml file (company name, address, link, etc.) to produce the information for the bubble that will pop up once the marker is clicked.
    My problem is that I need to try to keep the second xml file in a relatively similar format, so the rest of my records will still be accepted. If I had a smaller amount of records I could place them directly into the javascript, but because there are so many records, I need to use an xml file that can be retrieved by the java script. I chose to use the second type of xml file because I can easily copy and past the 14,000+ records that are now in excel document.
    After the xml issue is corrected I need to rework the javascript that is now emboldened so that it will read the new xml file correctly. I included the first xml file so that the readers will understand what type of xml format is currently being used to produce the markers in the tutorial map.

  • Powershell Script to create "custom" Document Library

    I have a powershell script which creates a Document Library for every user in AD.
    This works, but rather than using the default Document Library I want it use a custom Document Library.  However this isnt working.
    My script to create the default Document Library is this...
    [System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
    $site = new-object Microsoft.SharePoint.SPSite("http://servername/sitename");
    $siteweb = $site.OpenWeb();
    $webs = $siteweb.Webs;
    $strFilter = "(&(objectCategory=User)(name=accountname))"
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.PageSize = 1000
    $objSearcher.Filter = $strFilter
    $objSearcher.SearchScope = "Subtree"
    $colProplist = "samaccountname"
    foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
    $colResults = $objSearcher.FindAll()
    foreach ($objResult in $colResults)
    $objItem = $objResult.Properties; $objItem.samaccountname
    $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary
    $listId = $siteweb.Lists.Add($objItem.samaccountname, "", $listtemplate);
    $list = $siteweb.Lists.GetList($listId, $true);
    $roleDef = $siteweb.RoleDefinitions.GetByType("Contributor");
    $user = "domain\" + $objItem.samaccountname;
    $rolAssign = new-object Microsoft.SharePoint.SPRoleAssignment($user, "email", "name", "notes");
    $rolAssign.RoleDefinitionBindings.Add($roleDef);
    if(!$list.HasUniqueRoleAssignments)
    {$list.BreakRoleInheritance($true);}
    for ($i = $list.roleAssignments.Count - 1; $i -gt -1; $i--)
    { $list.RoleAssignments.Remove($i) }
    $list.RoleAssignments.Add($rolAssign);
    $list.Update();
    Now I have a custom Document Library named "TESTLIB" so if I substitute the line:
    $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary
    with
    $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::TESTLIB
    Then it errors with this...
    How can I script powershell to create a "custom" Document Library?
    Thanks

    The below link should help you in creating custom document library using powershell
    http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/23/use-powershell-cmdlets-to-manage-sharepoint-document-libraries.aspx
    Vinod H
    Thanks for the link but I cant see anything to assist creating a custom library?  Was there something in paticular you saw?

  • How to create a interface with NTR from SAP XI?

    How to create a interface with NTR from SAP XI?

    Hi,
        What do you mean by NTR ?...
    What are the details you needed...Please be clear and more elaborative as far as possible..so that you will get straight forward answers...
    HTH
    Rajesh

  • Example WLST scripts for creating clustered domain for soa suite 11.1.1.4?

    Hello,
    does anyone know sample wlst scripts for creating domain for soa suite 11.1.1.4 on top of weblogic 10.3.4?
    I try to create a domain having a cluster with two managed servers in two linux machines.
    Any help appreciated.
    regards, Matti

    Please refer -
    http://download.oracle.com/docs/cd/E17904_01/web.1111/e13715/domains.htm
    http://download.oracle.com/docs/cd/E17904_01/web.1111/e13715/intro.htm#WLSTG112
    Regards,
    Anuj

Maybe you are looking for

  • 9i app 9.0.2.01?Does the reverse DNS lookup have to be set up for a FQDN

    HEy guys: I'M ALWAYS GETTING STUCK IN THE SAME PLACE WHEN I AM TRYING TO INSTALL 9I APPSERVER 9.0.2.0.1 REL 2. ITS ALWATYS HAPPENING AT THE oRACLE db CONFIG assistant i have set up my host file and when i ping -a servername i get the full reply back

  • Save as png and not psd setting?

    hi all, i am a long time user but have not spent enough consistent time to avoid some very bad habits. i thought i would take some time to see if i can fix some of these. apologies for the multiple posts today. anyway, i am sometimes in a situation w

  • ITouch to iPad - Contacts/Calendar transfer should be a no-brainer; isn't

    I've got an iPod Touch, which I'm very pleased with, and I bought an iPad for those times when I didn't need the portability of the iTouch and/or I wanted a bigger screen to work on. Though of course, the iPad has lots of other nice attributes. The i

  • Create Process Flow

    Dear All, I had some mappings in my OWB and I don't want to run them individually, I want all of them to run at once in a specific order by a single click. Should I create process flow to achive this? Do I need to install any thing to create process

  • Missing music folder

    Hey all, well from the previous discussion it seems like I am out of luck but here goes. I was having trouble with my hard drive or operating system and was going to attempt a reinstall of software. In an effor to not lose data I simply drag and drop