package ext.publishing;

import com.ptc.wvs.server.util.PublishUtils;
import wt.content.ApplicationData;
import wt.content.ContentHelper;
import wt.content.ContentHolder;
import wt.content.ContentItem;
import wt.doc.*;
import wt.epm.*;
import wt.epm.EPMAuthoringAppType;
import wt.epm.EPMDocConfigSpec;
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.inf.container.*;
import wt.lifecycle.*;
import wt.lifecycle.State;
import wt.query.QuerySpec;
import wt.query.SearchCondition;
import wt.representation.Representation;
import wt.vc.VersionControlHelper;
import wt.vc.config.ConfigHelper;
import wt.vc.config.LatestConfigSpec;
import wt.vc.config.LifeCycleConfigSpec;
import wt.viewmarkup.DerivedImage;

public class CustomScheduleJobs10 {

	//Publish all PROTOTYPE versions of an object

	public static QueryResult allLatestVersionPrototypeDrawingsNoRep()
	{
		ObjectVector objectvector = new ObjectVector();

		try {
			QuerySpec queryspec = new QuerySpec(wt.epm.EPMDocumentMaster.class);
			queryspec.appendSearchCondition(new SearchCondition(wt.epm.EPMDocumentMaster.class, wt.epm.EPMDocumentMaster.NUMBER, SearchCondition.LIKE, "%.DRW"));

			QueryResult qr = PersistenceHelper.manager.find(queryspec);
			do {
				if(!qr.hasMoreElements())
					break;

				EPMDocumentMaster epmdocumentmaster = (EPMDocumentMaster)qr.nextElement();

				EPMDocConfigSpec epmConfigSpec = EPMDocConfigSpec.newEPMDocConfigSpec();
				//epmConfigSpec.setLifeCycle(LifeCycleConfigSpec.newLifeCycleConfigSpec(State.RELEASED));
				epmConfigSpec.setLifeCycleActive(true);

				QueryResult qr1 = ConfigHelper.service.filteredIterationsOf( epmdocumentmaster, epmConfigSpec );

				if(qr1.hasMoreElements()){
					EPMDocument epmdocument =(EPMDocument)qr1.nextElement();

					LifeCycleManaged LMObject = (LifeCycleManaged)epmdocument;

					System.out.println("STATE:"+(String)LMObject.getLifeCycleState().toString() );
					System.out.println("**EPMDoc - Number: " + epmdocument.getNumber() + " - Name: " + epmdocument.getName()+ " - CadName: " + epmdocument.getCADName()+ "\n" );

					System.out.println("EPMDoc : " + epmdocument);
					System.out.println("EPMDoc Name : " + epmdocument.getName());
					System.out.println("EPMDoc Number : " + epmdocument.getNumber());
					System.out.println("EPMDoc Version: " + PublishUtils.getIterationIdentifier(epmdocument));

					Representation representation = PublishUtils.getRepresentation(epmdocument);
					if(representation == null)
						objectvector.addElement(epmdocument);
				}
			} while(true);
		}
		catch(Exception exception)
		{
			exception.printStackTrace();
			objectvector = new ObjectVector();
		}
		return new QueryResult(objectvector);
	}

	public static QueryResult allLatestVersionRelDrwNoRep()
	{
		ObjectVector objectvector = new ObjectVector();

		try {
			QuerySpec queryspec = new QuerySpec(wt.epm.EPMDocument.class);
			queryspec.appendSearchCondition(new SearchCondition(wt.epm.EPMDocument.class, wt.epm.EPMDocument.NUMBER, SearchCondition.LIKE, "%.DRW"));

			QueryResult qr = PersistenceHelper.manager.find(queryspec);
			do {
				if(!qr.hasMoreElements())
					break;

				EPMDocument epmdocument = (EPMDocument)qr.nextElement();

				EPMDocConfigSpec epmConfigSpec = EPMDocConfigSpec.newEPMDocConfigSpec();
				//epmConfigSpec.setLifeCycle(LifeCycleConfigSpec.newLifeCycleConfigSpec(State.RELEASED));
				epmConfigSpec.setLifeCycleActive(true);

				QueryResult qr1 = ConfigHelper.service.filteredIterationsOf( epmdocument, epmConfigSpec );

				if(qr1.hasMoreElements()){
					EPMDocument epmdoc_qr1 =(EPMDocument)qr1.nextElement();

					LifeCycleManaged LMObject = (LifeCycleManaged)epmdoc_qr1;

					String StStg = (String)LMObject.getLifeCycleState().toString();

					System.out.println("EPMDoc : " + epmdoc_qr1);
					System.out.println("EPMDoc Name : " + epmdoc_qr1.getName());
					System.out.println("EPMDoc Number : " + epmdoc_qr1.getNumber());
					System.out.println("EPMDoc Version: " + PublishUtils.getIterationIdentifier(epmdoc_qr1));

					System.out.println("+++STATE: "+StStg );
					System.out.println("**EPMDoc - Number: " + epmdoc_qr1.getNumber() + " - Name: " + epmdoc_qr1.getName()+ " - CadName: " + epmdoc_qr1.getCADName()+ "\n" );

					if(StStg.equals("PROTOTYPE")) {

						// com.ptc.wvs.server.schedule.ScheduleJobs.doBatchJob("com.ptc.wvs.server.schedule.ScheduleJobs", "Publish_AllLatestVersionRelDrwNoRep", "test1");

						Representation representation = PublishUtils.getRepresentation(epmdoc_qr1);
						System.out.println("+++STATE PROTOTYPE Found: "+StStg );

						if(representation == null)
							objectvector.addElement(epmdoc_qr1);
					}
				}
			} while(true);
		}
		catch(Exception exception)
		{
			exception.printStackTrace();
			//objectvector = new ObjectVector();
		}
		return new QueryResult(objectvector);
	}
}
