package com.atlassian.jira.rpc.client.sample;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class Main
{
    public static final String JIRA_URI  = "http://jira.atlassian.com";
    public static final String RPC_PATH  = "/rpc/xmlrpc";
    public static final String USER_NAME = "****";
    public static final String PASSWORD  = "****";

    public static void main(String[] args)
    {
        try
        {
            XmlRpcClient rpcClient;
            XmlRpcClientConfigImpl config;
            
            config = new XmlRpcClientConfigImpl();
            config.setServerURL(new URL(JIRA_URI + RPC_PATH));
            rpcClient = new XmlRpcClient();
            rpcClient.setConfig(config);


            // Login and retrieve logon token
            Vector loginParams = new Vector(2);
            loginParams.add(USER_NAME);
            loginParams.add(PASSWORD);
            String loginToken = (String) rpcClient.execute("jira1.login", loginParams);

            // Retrieve projects
            Vector loginTokenVector = new Vector(1);
            loginTokenVector.add(loginToken);
            Object stuff = rpcClient.execute("jira1.getProjects", loginTokenVector);
            Object [] projects = (Object [])rpcClient.execute("jira1.getProjects", loginTokenVector);

            // Print projects
            for (int i=0; i < projects.length; i++)
            {
                Map project = (Map)projects[i];
                System.out.println("KEY: " + project.get("key") + "\tNAME: " + project.get("name") + "\tLEAD: " + project.get("lead"));
            }

            // Log out
            Boolean bool = (Boolean) rpcClient.execute("jira1.logout", loginTokenVector);
            System.out.println("Logout successful: " + bool);

        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (XmlRpcException e)
        {
            e.printStackTrace();
        }

    }

}
