package com.raylabs.soa.management;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;

import javax.naming.Context;

import oracle.soa.management.facade.Composite;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.util.CompositeFilter;

public class Class1 {
    public Class1() {
        super();
    }

    public static void main(String[] args) {
        Locator loc = null;
        try {
            loc = LocatorFactory.createLocator(getConnectionDetails());
            CompositeFilter compositeFilter = new CompositeFilter();
            compositeFilter.setPartition("default");
            List<Composite> composites = new ArrayList<Composite>();
            composites = loc.getComposites(compositeFilter);
            Iterator compositesIterator = composites.iterator();
            while (compositesIterator.hasNext()) {
                Composite composite = (Composite)compositesIterator.next();
                if (composite.isDefaultRevision()) {
                    System.out.println("Composite name :" +
                                       composite.getCompositeDN().getCompositeName());
                    System.out.println("Composite revision :" +
                                       composite.getCompositeDN().getRevision());
                    System.out.println("Deployment time :" +
                                       composite.getDeploymentTime());
                    System.out.println("Composite Domain Name :" +
                                       composite.getDN());
                    System.out.println("-------------------------------------------------");
                    // Options avaiable are
                    //composite.activate();
                    // composite.getDeploymentTime();
                    // composite.getFaultCount();
                    // composite.getInstanceCount();
                    // composite.isDefaultRevision();
                    // composite.isShutdown();
                    // composite.retire();
                    // composite.setAsDefaultRevision();
                    // composite.start();
                    // composite.stop();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            loc.close();
        }
    }

    private static Hashtable getConnectionDetails() {
        Hashtable jndiProps = new Hashtable();
        jndiProps.put(Context.PROVIDER_URL,
                      "t3://xxxxxxx:1234/soa-infra");
        jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,
                      "weblogic.jndi.WLInitialContextFactory");
        jndiProps.put(Context.SECURITY_PRINCIPAL, "xxxxx");
        jndiProps.put(Context.SECURITY_CREDENTIALS, "xxxxxx");
        jndiProps.put("dedicated.connection", "true");
        return jndiProps;
    }
}