
package ext.SEQ;

import java.io.PrintStream;
import java.io.Serializable;
import java.util.Iterator;
import java.util.Vector;
import wt.content.*;
import wt.epm.*;
import wt.fc.*;
import wt.method.RemoteAccess;
import wt.method.RemoteMethodServer;
import wt.httpgw.GatewayAuthenticator;
import wt.query.*;

import wt.content.*;
import wt.representation.*;

public class getEpmContents06
    implements RemoteAccess, Serializable
{
    private static void extractContent(EPMDocument EPMDoc, String conTyp, String dlLoc)
    {
		try {
			Representation defaultRep=RepresentationHelper.service.getDefaultRepresentation(EPMDoc);

			if(defaultRep != null)
        	{
				System.out.println( "\nEPMDoc - Number: " + EPMDoc.getNumber() + " - Name: " + EPMDoc.getName()+ " - CadName: " + EPMDoc.getCADName() );
				System.out.println( "Version: " + EPMDoc.getVersionIdentifier().getValue() + " - Iteration:"+EPMDoc.getIterationIdentifier().getValue()+" - Life Cycle State: "+EPMDoc.getLifeCycleState().toString());

				ContentHolder holder=ContentHelper.service.getContents(defaultRep);
				Vector contents=ContentHelper.getContentListAll(holder);
				ApplicationData data=null;

				for (int i=0;i<contents.size();i++)
				{
					if (contents.get(i) instanceof ApplicationData)
					{
						data=(ApplicationData)contents.get(i);

						if (data!=null && data.getFileName().endsWith(conTyp))
						{
							String path = dlLoc+"\\"+data.getFileName();
							ContentServerHelper.service.writeContentStream(data, path);
							break;
						}
					}
				}
			}
		}
		catch(Exception exception)
		{
			exception.printStackTrace();
		}
    }

    public static void getEPMDoc(String conTyp, String dlLoc, String drwNo)
    {
        try
        {
			QuerySpec qs = new QuerySpec(EPMDocument.class);
			qs.appendWhere(new SearchCondition(EPMDocument.class,EPMDocument.NUMBER,SearchCondition.LIKE, drwNo));
			qs.appendAnd();
			qs.appendWhere(new SearchCondition(EPMDocument.class, "iterationInfo.latest", "TRUE"));
			System.out.println("Now Querying for Doc Using: " + qs.toString());

			final QueryResult qr = PersistenceHelper.manager.find(qs);

			while (qr.hasMoreElements()) {
				EPMDocument epmm = (EPMDocument)qr.nextElement();

				if (epmm.getNumber().endsWith(".drw") && epmm.getLifeCycleState().toString().equalsIgnoreCase("RELEASED")) {
            		extractContent(epmm, conTyp, dlLoc);
				}
			}
        }
        catch(Exception exception)
        {
            exception.printStackTrace();
        }
    }

    public static void main(String args[])
    {
        if(args.length < 3)
        {
			System.out.println("Usage: windchill getEpmContents <content type> <path-where-file-should be saved> <number search string>");
            System.exit(0);
        } else
        {
            try
            {
				RemoteMethodServer rms = RemoteMethodServer.getDefault();
				GatewayAuthenticator auth = new GatewayAuthenticator();
				auth.setRemoteUser("wcadmin");
				rms.setAuthenticator(auth);

				String conTyp = args[0];
				String dlLoc = args[1];
				String drwNo = args[2];

				Class aclass[] = new Class[3];
				aclass[0] = java.lang.String.class;
				aclass[1] = java.lang.String.class;
				aclass[2] = java.lang.String.class;

				Object aobj[] = { conTyp, dlLoc, drwNo };

                rms.invoke("getEPMDoc", "ext.SEQ.getEpmContents06", null, aclass, aobj);
                System.exit(0);
            }
            catch(Exception exception)
            {
                exception.printStackTrace();
            }
        }
    }
}
