
package cust.cm.report;

import java.util.*;

import wt.fc.PersistenceHelper;
import wt.fc.WTObject;
import wt.fc.QueryResult;

import wt.inf.container.WTContainerHelper;
import wt.inf.container.WTContainer;

import wt.org.WTUser;
import wt.org.WTPrincipal;
import wt.org.WTOrganization;

import wt.change2.ChangeHelper2;
import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
import wt.change2.WTChangeActivity2;

import wt.query.QuerySpec;

import wt.workflow.engine.*;
import wt.workflow.definer.*;

import wt.method.RemoteMethodServer;
import wt.httpgw.GatewayAuthenticator;

public class cmReport_12 {

	// PR  - wt.change2.WTChangeIssue		- getChangeIssues
	// ECR - wt.change2.WTChangeRequest2	- getChangeRequest
	// ECN - wt.change2.WTChangeOrder2		- getChangeOrders
	// ECA - wt.change2.WTChangeActivities2	- getChangeActivities

	static String divA = "\n**************************************************";
	static String divE = "\n==================================================\n";

	static String ECT;

	public static void main(String[] args) throws Exception {
		RemoteMethodServer rms = RemoteMethodServer.getDefault();
		GatewayAuthenticator auth = new GatewayAuthenticator();
		auth.setRemoteUser("wcadmin");
		rms.setAuthenticator(auth);

		if ( args.length > 0 ) { ECT = args[0]; }
		else { ECT = "-ALL"; }

		new cmReport_12();
	}

	public cmReport_12() throws Exception {
		if ( ECT.equals("-PR")) { PR(); }
		else if ( ECT.equals("-ECR")) { ECR(); }
		else if ( ECT.equals("-ECN")) { ECN(); }
		else if ( ECT.equals("-ECA")) { ECA(); }
		else if ( ECT.equals("-WFP")) { WFP(); }
		else if ( ECT.equals("-ALL")){  PR(); ECR(); ECN(); ECA(); WFP(); }
	}

	public void PR() throws Exception {

		// WTChangeIssue.class
		QueryResult resCHI=PersistenceHelper.manager.find(new QuerySpec(WTChangeIssue.class));
		while(resCHI.hasMoreElements()) {
			WTChangeIssue wtin = (WTChangeIssue)resCHI.nextElement();

			System.out.println( divE + "PR: " + wtin.getTeamName() + "\n" );
			System.out.println( "Name: " + wtin.getName() );
			System.out.println( "Number: " + wtin.getNumber() );
			System.out.println( "Description: " + wtin.getDescription() );
			System.out.println( "Creator Name: " + wtin.getCreatorName() );
			System.out.println( "Creator EMail: " + wtin.getCreatorEMail() );
			System.out.println( "LifeCycle State: " + wtin.getState() );
			System.out.println( "Organization Name: " + wtin.getOrganizationName() );
			System.out.println( "Requester: " + wtin.getRequester() );
			System.out.println( "Issue Priority: " + wtin.getIssuePriority() );
			System.out.println( "Category: " + wtin.getCategory() );

			// checking for Related ECR's
			QueryResult wt2cr = ChangeHelper2.service.getChangeRequest(wtin);
			if (wt2cr.size()>0) {
				while(wt2cr.hasMoreElements()) {
					WTChangeRequest2 ecr=(WTChangeRequest2)wt2cr.nextElement();
					System.out.println( divE + "\tRelated ECR Name: " + ecr.getName() + " & Number: " + ecr.getNumber() );

					System.out.println( "\n\tECR: " + ecr.getTeamName() + "\n"  );
					System.out.println( "\tName: " + ecr.getName() );
					System.out.println( "\tNumber: " + ecr.getNumber() );
					System.out.println( "\tDescription: " + ecr.getDescription() );
					System.out.println( "\tNeed Date: " + ecr.getNeedDate() );
					System.out.println( "\tCreator Name: " + ecr.getCreatorName() );
					System.out.println( "\tCreator EMail: " + ecr.getCreatorEMail() );
					System.out.println( "\tLifeCycle State: " + ecr.getState() );
					System.out.println( "\tOrganization Name: " + ecr.getOrganizationName() );
					System.out.println( "\tRequest Priority: " + ecr.getRequestPriority() );
					System.out.println( "\tCategory: " + ecr.getCategory() );
				}
			} else { System.out.println( "\n\tNO Related ECR's." ); }
		}
		System.out.println(divE + "Number of PR's: " + resCHI.size() + divE + divA);
	}

	public void ECR() throws Exception {

		// WTChangeRequest2.class
		QueryResult resCHR=PersistenceHelper.manager.find(new QuerySpec(WTChangeRequest2.class));
		while(resCHR.hasMoreElements()) {
			WTChangeRequest2 wtin = (WTChangeRequest2)resCHR.nextElement();

			System.out.println( divE + "ECR: " + wtin.getTeamName() + "\n"  );
			System.out.println( "Name: " + wtin.getName() );
			System.out.println( "Number: " + wtin.getNumber() );
			System.out.println( "Description: " + wtin.getDescription() );
			System.out.println( "Need Date: " + wtin.getNeedDate() );
			System.out.println( "Creator Name: " + wtin.getCreatorName() );
			System.out.println( "Creator EMail: " + wtin.getCreatorEMail() );
			System.out.println( "LifeCycle State: " + wtin.getState() );
			System.out.println( "Organization Name: " + wtin.getOrganizationName() );
			System.out.println( "Request Priority: " + wtin. getRequestPriority() );
			System.out.println( "Category: " + wtin.getCategory() );

			// Checking for Related PR's
			QueryResult wt2ci = ChangeHelper2.service.getChangeIssues(wtin);
			if (wt2ci.size()>0) {
				while(wt2ci.hasMoreElements()) {
					WTChangeIssue pr=(WTChangeIssue)wt2ci.nextElement();
					System.out.println( divE + "\tRelated PR Name: " + pr.getName() + " & Number: " + pr.getNumber() );

					System.out.println( "\n\tPR: " + pr.getTeamName() + "\n" );
					System.out.println( "\tName: " + pr.getName() );
					System.out.println( "\tNumber: " + pr.getNumber() );
					System.out.println( "\tDescription: " + pr.getDescription() );
					System.out.println( "\tCreator Name: " + pr.getCreatorName() );
					System.out.println( "\tCreator EMail: " + pr.getCreatorEMail() );
					System.out.println( "\tLifeCycle State: " + pr.getState() );
					System.out.println( "\tOrganization Name: " + pr.getOrganizationName() );
					System.out.println( "\tRequester: " + pr.getRequester() );
					System.out.println( "\tIssue Priority: " + pr.getIssuePriority() );
					System.out.println( "\tCategory: " + pr.getCategory() );
				}
			} else { System.out.println( "\n\tNO Related PR's." ); }

			// checking for Related ECN's
			QueryResult wt2cn = ChangeHelper2.service.getChangeOrders(wtin);
			if (wt2cn.size()>0) {
				while(wt2cn.hasMoreElements()) {
					WTChangeOrder2 ecn=(WTChangeOrder2)wt2cn.nextElement();
					System.out.println( divE + "\tRelated ECN Name: " + ecn.getName() + " & Number: " + ecn.getNumber() );

					System.out.println( "\n\tECN: " + ecn.getTeamName() + "\n");
					System.out.println( "\tName: " + ecn.getName() );
					System.out.println( "\tNumber: " + ecn.getNumber() );
					System.out.println( "\tDescription: " + ecn.getDescription() );
					System.out.println( "\tNeed Date: " + ecn.getNeedDate() );
					System.out.println( "\tCreator Name: " + ecn.getCreatorName() );
					System.out.println( "\tCreator EMail: " + ecn.getCreatorEMail() );
					System.out.println( "\tLifeCycle State: " + ecn.getState() );
					System.out.println( "\tOrganization Name: " + ecn.getOrganizationName() );
				}
			} else { System.out.println( "\n\tNO Related ECN's." ); }
		}
		System.out.println(divE + "Number of ECR's: " + resCHR.size() + divE + divA);
	}

	public void ECN() throws Exception {

		// WTChangeOrder2.class
		QueryResult resCHO=PersistenceHelper.manager.find(new QuerySpec(WTChangeOrder2.class));
		while(resCHO.hasMoreElements()) {
			WTChangeOrder2 wtin = (WTChangeOrder2)resCHO.nextElement();

			System.out.println( divE + "ECN: " + wtin.getTeamName() + "\n");
			System.out.println( "Name: " + wtin.getName() );
			System.out.println( "Number: " + wtin.getNumber() );
			System.out.println( "Description: " + wtin.getDescription() );
			System.out.println( "Need Date: " + wtin.getNeedDate() );
			System.out.println( "Creator Name: " + wtin.getCreatorName() );
			System.out.println( "Creator EMail: " + wtin.getCreatorEMail() );
			System.out.println( "LifeCycle State: " + wtin.getState() );
			System.out.println( "Organization Name: " + wtin.getOrganizationName() );

			// checking for Related ECR's
			QueryResult wt2cr = ChangeHelper2.service.getChangeRequest(wtin);
			if (wt2cr.size()>0) {
				while(wt2cr.hasMoreElements()) {
					WTChangeRequest2 ecr=(WTChangeRequest2)wt2cr.nextElement();
					System.out.println( divE + "\tRelated ECR Name: " + ecr.getName() + " & Number: " + ecr.getNumber() );

					System.out.println( "\n\tECR: " + ecr.getTeamName() + "\n"  );
					System.out.println( "\tName: " + ecr.getName() );
					System.out.println( "\tNumber: " + ecr.getNumber() );
					System.out.println( "\tDescription: " + ecr.getDescription() );
					System.out.println( "\tNeed Date: " + ecr.getNeedDate() );
					System.out.println( "\tCreator Name: " + ecr.getCreatorName() );
					System.out.println( "\tCreator EMail: " + ecr.getCreatorEMail() );
					System.out.println( "\tLifeCycle State: " + ecr.getState() );
					System.out.println( "\tOrganization Name: " + ecr.getOrganizationName() );
					System.out.println( "\tRequest Priority: " + ecr. getRequestPriority() );
					System.out.println( "\tCategory: " + ecr.getCategory() );
				}
			} else { System.out.println( "\n\tNO Related ECR's." ); }

			// checking for Related ECA's
			QueryResult wt2ca = ChangeHelper2.service.getChangeActivities(wtin);
			if (wt2ca.size()>0) {
				while(wt2ca.hasMoreElements()) {
					WTChangeActivity2 eca=(WTChangeActivity2)wt2ca.nextElement();
					System.out.println( divE + "\tRelated ECA Name: " + eca.getName() + " & Number: " + eca.getNumber() );

					System.out.println( "\n\tECA: " + eca.getTeamName() + "\n");
					System.out.println( "\tName: " + eca.getName() );
					System.out.println( "\tNumber: " + eca.getNumber() );
					System.out.println( "\tDescription: " + eca.getDescription() );
					System.out.println( "\tNeed Date: " + eca.getNeedDate() );
					System.out.println( "\tCreator Name: " + eca.getCreatorName() );
					System.out.println( "\tCreator EMail: " + eca.getCreatorEMail() );
					System.out.println( "\tLifeCycle State: " + eca.getState() );
				}
			} else { System.out.println( "\n\tNO Related ECA's." ); }
		}
		System.out.println(divE + "Number of ECN's: " + resCHO.size() + divE + divA);
	}

	public void ECA() throws Exception {

		// WTChangeActivity2.class
		QueryResult resCHA=PersistenceHelper.manager.find(new QuerySpec(WTChangeActivity2.class));
		while(resCHA.hasMoreElements()) {
			WTChangeActivity2 wtin = (WTChangeActivity2)resCHA.nextElement();

			System.out.println( divE + "ECA: " + wtin.getTeamName() + "\n");
			System.out.println( "Name: " + wtin.getName() );
			System.out.println( "Number: " + wtin.getNumber() );
			System.out.println( "Description: " + wtin.getDescription() );
			System.out.println( "Need Date: " + wtin.getNeedDate() );
			System.out.println( "Creator Name: " + wtin.getCreatorName() );
			System.out.println( "Creator EMail: " + wtin.getCreatorEMail() );
			System.out.println( "LifeCycle State: " + wtin.getState() );
		}
		System.out.println(divE + "Number of ECA's: " + resCHA.size() + divE + divA);
	}

	public void WFP() throws Exception {

		// WfProcess.class
		QueryResult resWFP=PersistenceHelper.manager.find(new QuerySpec(WfProcess.class));
		while(resWFP.hasMoreElements()) {
			WfProcess wfprocess = (WfProcess)resWFP.nextElement();
			WTContainer container = WTContainerHelper.getContainer(wfprocess);
			WTUser initiator = (WTUser)(wfprocess).getCreator().getPrincipal();

			System.out.println( divE + "WfProcess Initiator: " + initiator.getName() );
			System.out.println( "Container: " + container.getName() );
			System.out.println( "WfProcess Name: " + wfprocess.getName() );
			System.out.println( "WfProcess Desc: " + wfprocess.getDescription() + "\n" );
			System.out.println( "WfProcess Context:\n" + wfprocess.getContext() );
		}
		System.out.println(divE + "Number of WorkFlow Processes: " + resWFP.size() + divE + divA);
	}
}
