
// from [c/d]:/ptc/Windchill (location wc shell opens to) with java in src/ext/
// ant -f bin/tools.xml class -Dclass.includes=ext/publishing/PublishDRW_08.java

// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-ljett-112313_01.txt

// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-drwAllLat-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-drw500Lat-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-drwAllVers-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-drw500Vers-112313_01.txt

// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-pltAllLat-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-plt500Lat-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-pltAllVers-112313_01.txt
// java ext.publishing.PublishDRW_08>D:\ptc\Windchill\src\ext\output_sch\PublishDRW_08-plt500Vers-112313_01.txt

package ext.publishing;

import java.util.*;
import java.rmi.RemoteException;
import java.io.*;

import com.ptc.wvs.server.util.PublishUtils;
import wt.viewmarkup.DerivedImage;
import wt.viewmarkup.*;

import wt.doc.*;
import wt.epm.*;
import wt.part.*;
import wt.util.*;
import wt.fc.ObjectVector;
import wt.fc.ObjectVectorIfc;
import wt.fc.Persistable;
import wt.fc.PersistenceHelper;
import wt.fc.PersistenceServerHelper;
import wt.fc.QueryResult;
import wt.query.QuerySpec;
import wt.query.SearchCondition;
import wt.representation.*;
import wt.vc.VersionControlHelper;
import wt.content.*;

import wt.httpgw.GatewayAuthenticator;
import wt.method.RemoteAccess;
import wt.method.RemoteMethodServer;

/*

Add to site.xconf or additional xconf:

<!-- Schedule Publishing LJett DRW's -->

<Property name="schedulejobs23" overridable="true" targetFile="codebase/wvs.properties" value="pubDrwLjettTest"/>
<Property name="pubDrwLjettTest.class" overridable="true" targetFile="codebase/wvs.properties" value="ext.publishing.PublishDRW_08"/>
<Property name="pubDrwLjettTest.description" overridable="true" targetFile="codebase/wvs.properties" value="_Publish_DRW_LJETT_TEST"/>
<Property name="pubDrwLjettTest.method" overridable="true" targetFile="codebase/wvs.properties" value="ljett"/>
<Property name="pubDrwLjettTest.enableOnContainers" overridable="true" targetFile="codebase/wvs.properties" value="true"/>

wvs.properties.xconf:

<Property default="pubDrwLjettTest" name="schedulejobs23"/>
<Property default="_Publish_DRW_LJETT_TEST" name="pubDrwLjettTest.description"/>
<Property default="ext.publishing.PublishDRW_08" name="pubDrwLjettTest.class"/>
<Property default="ljett" name="pubDrwLjettTest.method"/>
<Property default="true" name="pubDrwLjettTest.enableOnContainers"/>

500,ALL
DRW,PLT
LATEST,ALLVERS

ALL		DRW		ALLVERS
ALL		DRW		LATEST

ALL		PLT		ALLVERS
ALL		PLT		LATEST

500		DRW		ALLVERS
500		DRW		LATEST

500		PLT		ALLVERS
500		PLT		LATEST


*/

public class PublishDRW_08 {

	public static QueryResult ljett()			{ QueryResult result = DRW_Run(500,"ljett","latest"); return result; }

	public static QueryResult drwAllLat()		{ QueryResult result = DRW_Run(1000000,"drw","latest"); return result; }
	public static QueryResult drw500Lat()		{ QueryResult result = DRW_Run(500,"drw","latest"); return result; }
	public static QueryResult drwAllVers()		{ QueryResult result = DRW_Run(1000000,"drw","allversion"); return result; }
	public static QueryResult drw500Vers()		{ QueryResult result = DRW_Run(500,"drw","allversion"); return result; }

	public static QueryResult pltAllLat()		{ QueryResult result = DRW_Run(1000000,"plt","latest"); return result; }
	public static QueryResult plt500Lat()		{ QueryResult result = DRW_Run(500,"plt","latest"); return result; }
	public static QueryResult pltAllVers()		{ QueryResult result = DRW_Run(1000000,"plt","allversion"); return result; }
	public static QueryResult plt500Vers()		{ QueryResult result = DRW_Run(500,"plt","allversion"); return result; }

	public static QueryResult DRW_Run( int qtyRun, String repType, String vers ) {
		ObjectVector objVector = new ObjectVector();
		int qrCnt=0;

		System.out.println("Run NO: "+qtyRun+" - repType: "+repType+" - vers:"+vers+"\n");

		try {
			QuerySpec qs = new QuerySpec(wt.epm.EPMDocument.class);

			if ( repType.equals("ljett") ) {	// LJETT DRW'S
				qs.appendSearchCondition(new SearchCondition(wt.epm.EPMDocument.class, wt.epm.EPMDocument.NUMBER, SearchCondition.LIKE, "LJETT%"));
			}
			else {
				qs.appendSearchCondition(new SearchCondition(wt.epm.EPMDocument.class, wt.epm.EPMDocument.NUMBER, SearchCondition.LIKE, "%"));
			}

			if ( vers.equals("latest") ) {	// latest or vers
				qs.appendAnd();
				qs.appendWhere(new SearchCondition(EPMDocument.class, "iterationInfo.latest", "TRUE"));
			}

			QueryResult qr = PersistenceHelper.manager.find(qs);

			while (qr.hasMoreElements()) {
				EPMDocument epm = (EPMDocument)qr.nextElement();
				EPMDocumentType epmTyp = epm.getDocType();
				String epmTypStg = epmTyp.toString();

				//System.out.println("EPMDoc_NO:"+ epm.getNumber()+"|Vers:" + epm.getVersionIdentifier().getValue()+"."+epm.getIterationIdentifier().getValue()+"|RepVers:"+PublishUtils.getIterationIdentifier(epm));

				if(epmTypStg.equals("CADDRAWING") && qrCnt<qtyRun ){
					try {
						epmStg = epm.getNumber()+"|"+epm.getName()+"|"+epm.getVersionIdentifier().getValue()+"."+epm.getIterationIdentifier().getValue();
						//System.out.println("qtyRun: "+qtyRun+"|"+epmStg);

						Representation defaultRep=RepresentationHelper.service.getDefaultRepresentation(epm);

						DerivedImage derivedimage = (DerivedImage)defaultRep;

						ContentHolder holder=ContentHelper.service.getContents(defaultRep);
						java.util.Vector contents=null;
						contents=ContentHelper.getContentListAll(holder);
						ApplicationData data=null;

						//System.out.println( "2)NO of content items = " +contents.size());

						boolean isRep = true;

						if( defaultRep == null ) {
							System.out.println( "defaultRep: "+defaultRep);
							objVector.addElement(epm);
							qrCnt++;
						}
						else {
							for (int i=0;i<contents.size();i++) {
								if (contents.get(i) instanceof ApplicationData) {
									data=(ApplicationData)contents.get(i);
									if (data!=null) {
										if ( data.getFileName().endsWith("plt") && !epm.getNumber().substring(0,8).equalsIgnoreCase(data.getFileName().substring(0,8))) {
											//System.out.println( "epm.getNumber().substring(0,8): "+epm.getNumber().substring(0,8)+"\n"+"data.getFileName().substring(0,8): "+data.getFileName().substring(0,8));
											System.out.println( epmStg+"|"+data.getFileName()+"|@@@");
											objVector.addElement(epm);
											qrCnt++;
										}
										else if ( data.getFileName().endsWith("pdf") && !epm.getNumber().substring(0,8).equalsIgnoreCase(data.getFileName().substring(0,8))) {
											//System.out.println( "epm.getNumber().substring(0,8): "+epm.getNumber().substring(0,8)+"\n"+"data.getFileName().substring(0,8): "+data.getFileName().substring(0,8));
											System.out.println( epmStg+"|"+data.getFileName()+"|@@@");
											objVector.addElement(epm);
											qrCnt++;
										}
										else {
											if ( data.getFileName().endsWith("plt") || data.getFileName().endsWith("pdf") && repType.equals("ljett") ) {
												wt.viewmarkup.ViewMarkUpHelper.service.deleteDerivedImage(derivedimage,true);
												objVector.addElement(epm);
												System.out.println( epmStg+"|"+data.getFileName());
												qrCnt++;
											}
											if ( data.getFileName().endsWith("plt") && repType.equals("plt") ) {
												objVector.addElement(epm);
												System.out.println( epmStg+"|"+data.getFileName());
												qrCnt++;
											}
											if ( data.getFileName().endsWith("pdf") && repType.equals("drw") ) {
												objVector.addElement(epm);
												System.out.println( epmStg+"|"+data.getFileName());
												qrCnt++;
											}
										}
									}
								}
							}
						}
					}
					catch(Exception exception) {
						System.out.println( epmStg+"|Exception");
						objVector.addElement(epm);
					}
				}
			}
		}
		catch(Exception exc2) {
			exc2.printStackTrace();
			objVector = new ObjectVector();
		}
		System.out.println( "qrCnt: "+qrCnt+"\n===========\n");
		System.out.println( "objVector.size(): "+objVector.size());
		return new QueryResult(objVector);
	}

	public static void main(String[] args) {
		try {
			RemoteMethodServer rms = RemoteMethodServer.getDefault();
			GatewayAuthenticator auth = new GatewayAuthenticator();
			auth.setRemoteUser("wcadmin");
			rms.setAuthenticator(auth);

			//ljett()			{ QueryResult result = DRW_Run(500,"ljett","allversion"); return result; }

			System.out.println("\n==========\n@@@PublishDRW_08.ljett()\n==========\n");
			QueryResult qrTest = PublishDRW_08.ljett();
			System.out.println("qrTest.size(): "+qrTest.size());

			//drwAllLat()		{ QueryResult result = DRW_Run(1000000,"drw","latest"); return result; }
			//drw500Lat()		{ QueryResult result = DRW_Run(500,"drw","latest"); return result; }
			//drwAllVers()		{ QueryResult result = DRW_Run(1000000,"drw","allversion"); return result; }
			//drw500Vers()		{ QueryResult result = DRW_Run(500,"drw","allversion"); return result; }

			//System.out.println("\n==========\n@@@PublishDRW_08.drwAllLat()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.drwAllLat();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.drw500Lat()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.drw500Lat();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.drwAllVers()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.drwAllVers();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.drw500Vers()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.drw500Vers();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//pltAllLat()		{ QueryResult result = DRW_Run(1000000,"plt","latest"); return result; }
			//plt500Lat()		{ QueryResult result = DRW_Run(500,"plt","latest"); return result; }
			//pltAllVers()		{ QueryResult result = DRW_Run(1000000,"plt","allversion"); return result; }
			//plt500Vers()		{ QueryResult result = DRW_Run(500,"plt","allversion"); return result; }

			//System.out.println("\n==========\n@@@PublishDRW_08.pltAllLat()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.pltAllLat();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.plt500Lat()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.plt500Lat();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.pltAllVers()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.pltAllVers();
			//System.out.println("qrTest.size(): "+qrTest.size());

			//System.out.println("\n==========\n@@@PublishDRW_08.plt500Vers()\n==========\n");
			//QueryResult qrTest = PublishDRW_08.plt500Vers();
			//System.out.println("qrTest.size(): "+qrTest.size());
		}
		catch (Exception exc) {
			exc.printStackTrace();
		}
	}

	static String epmStg;
	public static String Usage = "\nUsage:\n\njava/windchill [-mx1024m] "+
	"ext.LCS_CHG %<wtobject number search string>%\n\n"+
	"1st Argument = %<object number string>%\n\n"+"Should include % where % = * = wild card.\n";
}
