
package ext;

import java.util.*;
import java.rmi.RemoteException;

import wt.util.*;
import wt.fc.*;
import wt.vc.*;
import wt.query.*;
import wt.epm.*;
import wt.lifecycle.*;
import wt.lifecycle.State;
import wt.httpgw.GatewayAuthenticator;
import wt.method.RemoteMethodServer;
import com.ptc.windchill.enterprise.search.server.*;

import wt.enterprise.RevisionControlled;
import wt.series.*;
import com.ptc.windchill.enterprise.templates.*;

public class epmList_16 {

	public static void FindEpmNumbered(String drwNo) throws WTException, WTPropertyVetoException {
		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 Using: " + qs.toString() );

		final QueryResult qr1 = PersistenceHelper.manager.find(qs);

		while (qr1.hasMoreElements())
		{
			EPMDocument epmm = (EPMDocument)qr1.nextElement();

			Versioned versioned2 = (Versioned)epmm;
			VersionInfo epmDocVersionInfo = versioned2.getVersionInfo();

            ObjectIdentifier objID = (ObjectIdentifier)((RevisionControlled)epmm).getMasterReference().getKey();
            masterOID = objID.getId();

            querySpec = new QuerySpec(wt.enterprise.RevisionControlled.class);
            querySpec.appendWhere(new SearchCondition(wt.part.WTPart.class, "masterReference.key.id", "=", masterOID), new int[] {
                0
            });
            querySpec.appendAnd();
            querySpec.appendWhere(new SearchCondition(wt.part.WTPart.class, "iterationInfo.latest", "TRUE"), new int[] {
                0
            });
            querySpec.appendAnd();
            querySpec.appendWhere(new SearchCondition(wt.part.WTPart.class, "versionInfo.identifier.versionId", "=", epmDocVersionInfo.getIdentifier().getSeries().toString()), new int[] {
                0
            });
            qr = PersistenceHelper.manager.find(querySpec);
            if(qr.size() > 0)
            {
                RevisionControlled revObj = (RevisionControlled)qr.nextElement();
                match_partBID = getBID(revObj);
                match_found = true;
            }
			System.out.println( epmm.getNumber() + "," + epmm.getVersionIdentifier().getValue() + "."+epmm.getIterationIdentifier().getValue());
		}
	}

	public static void main(String[] args) {
		if(args.length < 1)
		{
			System.out.println("Usage: windchill epmList <epmdoc search string>");
			System.exit(0);
		} else
		{
			try {
				RemoteMethodServer rms = RemoteMethodServer.getDefault();
				GatewayAuthenticator auth = new GatewayAuthenticator();
				auth.setRemoteUser("wcadmin");
				rms.setAuthenticator(auth);

				String drwNo = args[0];

				FindEpmNumbered(drwNo);

				System.exit(0);
			}
			catch(Exception exceptionMain)
			{
				exceptionMain.printStackTrace();
			}
		}
	}

    private static String EPMDOC_CLASS = "wt.epm.EPMDocument";
    private final transient SearchInfo searchInfo = new SearchInfo();
}
