
package cust.report;

import java.util.*;

import wt.part.WTPart;
import wt.part.WTPartMaster;
import wt.part.WTPartMasterIdentity;

import wt.doc.WTDocument;
import wt.doc.WTDocumentMaster;

import wt.epm.EPMDocument;
import wt.epm.EPMDocumentMaster;

import wt.projmgmt.admin.*;

import wt.fc.WTObject;
import wt.fc.QueryResult;
import wt.fc.Identified;
import wt.fc.IdentificationObject;
import wt.fc.PersistenceHelper;

import wt.inf.team.ContainerTeam;
import wt.inf.container.WTContained;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerHelper;

import wt.org.WTUser;
import wt.org.WTGroup;
import wt.org.WTPrincipal;
import wt.org.WTOrganization;

import wt.change2.ChangeItem;
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.workflow.robots.*;
import wt.workflow.work.*;
import wt.workflow.WfException;
import wt.workflow.engine.WfEngineService;

import wt.method.RemoteMethodServer;
import wt.httpgw.GatewayAuthenticator;

public class objReport_04r {

	// 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;
	static String bis = "";
	static String tis = "\t";

	static String ObjStg;
	static String div = "\n\n************************************************************\n";

	public static void main(String[] args) throws Exception {
		RemoteMethodServer rms = RemoteMethodServer.getDefault();
		GatewayAuthenticator auth = new GatewayAuthenticator();
		auth.setRemoteUser("wcadmin");
		rms.setAuthenticator(auth);

		new objReport_04r();
	}

	public objReport_04r() throws Exception {

		System.out.println(div);

		// WTUser.class
		QueryResult resWTU=PersistenceHelper.manager.find(new QuerySpec(WTUser.class));
		while(resWTU.hasMoreElements()) {
			WTUser wtobj = (WTUser)resWTU.nextElement();

			System.out.println("WTUser - Name: "+wtobj.getName());
			System.out.println("FullName: "+wtobj.getFullName());
			System.out.println("EMail: "+wtobj.getEMail());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("TelephoneNumber: "+wtobj.getTelephoneNumber()+"\n");
		}
		System.out.println("Number of WTUser: "+resWTU.size()+div);

		//	WTOrganization
		QueryResult resORG=PersistenceHelper.manager.find(new QuerySpec(WTOrganization.class));
		while(resORG.hasMoreElements()) {
			WTOrganization wtobj = (WTOrganization)resORG.nextElement();

			System.out.println("WTOrganization - Name: "+wtobj.getName());
			System.out.println("Description: "+wtobj.getDescription());
			System.out.println("InternetDomain: "+wtobj.getInternetDomain());
			System.out.println("ReferenceID: "+wtobj.getReferenceID()+"\n");
		}
		System.out.println("Number of WTOrganization: "+resORG.size()+div);

		//	WTPartMaster.class
		QueryResult resWTP=PersistenceHelper.manager.find(new QuerySpec(WTPartMaster.class));
		while(resWTP.hasMoreElements()) {
			WTPartMaster wtobj = (WTPartMaster)resWTP.nextElement();

			IdentificationObject identificationobject = ((Identified)wtobj).getIdentificationObject();
			WTPartMasterIdentity identity=(WTPartMasterIdentity)identificationobject;

			System.out.println("WtPartMaster - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("Object Type: "+wtobj.getType());
			System.out.println("MasterIdentity: "+identity);
			System.out.println("Container Name: "+wtobj.getContainerName());
			System.out.println("Organization Name: "+wtobj.getOrganizationName()+"\n");
		}
		System.out.println("Number of WTPartMaster Objects: "+resWTP.size()+div);

		//	WTPart.class
		QueryResult resWTP2=PersistenceHelper.manager.find(new QuerySpec(WTPart.class));
		while(resWTP2.hasMoreElements()) {
			WTPart wtobj = (WTPart)resWTP2.nextElement();

			System.out.println("WtPart - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("Object Type: "+wtobj.getType());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("View Name: "+wtobj.getViewName());
			System.out.println("Container Name: "+wtobj.getContainerName());
			System.out.println("Organization Name: "+wtobj.getOrganizationName()+"\n");
		}
		System.out.println("Number of WTPart Objects: "+resWTP2.size()+div);

		//	EPMDocumentMaster.class
		QueryResult resEPM=PersistenceHelper.manager.find(new QuerySpec(EPMDocumentMaster.class));
		while(resEPM.hasMoreElements()) {
			EPMDocumentMaster wtobj = (EPMDocumentMaster)resEPM.nextElement();

			System.out.println("EPMDocumentMaster - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("CadName: "+wtobj.getCADName());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("ContainerName: "+wtobj.getContainerName()+"\n");
		}
		System.out.println("Number of EPMDocumentMaster Objects: "+resEPM.size()+div);

		//	EPMDocument.class
		QueryResult resEPM2=PersistenceHelper.manager.find(new QuerySpec(EPMDocument.class));
		while(resEPM2.hasMoreElements()) {
			EPMDocument wtobj = (EPMDocument)resEPM2.nextElement();

			System.out.println("EPMDocument - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("CadName: "+wtobj.getCADName());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("Description: "+wtobj.getDescription());
			System.out.println("FormatName: "+wtobj.getFormatName());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("ContainerName: "+wtobj.getContainerName()+"\n");
		}
		System.out.println("Number of EPMDocument Objects: "+resEPM2.size()+div);

		//	WTDocumentMaster.class
		QueryResult resWTD=PersistenceHelper.manager.find(new QuerySpec(WTDocumentMaster.class));
		while(resWTD.hasMoreElements()) {
			WTDocumentMaster wtobj = (WTDocumentMaster)resWTD.nextElement();

			System.out.println("WtDocumentMaster - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("ContainerName: "+wtobj.getContainerName()+"\n");

		}
		System.out.println("Number of WTDocumentMaster Objects: "+resWTD.size()+div);

		//	WTDocument.class
		QueryResult resWTD2=PersistenceHelper.manager.find(new QuerySpec(WTDocument.class));
		while(resWTD2.hasMoreElements()) {
			WTDocument wtobj = (WTDocument)resWTD2.nextElement();

			System.out.println("WtDocument - Name: "+wtobj.getName());
			System.out.println("Number: "+wtobj.getNumber());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("ContainerName: "+wtobj.getContainerName()+"\n");

		}
		System.out.println("Number of WTDocument Objects: "+resWTD2.size()+div);

		//	WTContainer.class
		QueryResult resWTC=PersistenceHelper.manager.find(new QuerySpec(WTContainer.class));
		while(resWTC.hasMoreElements()) {
			WTContainer wtobj = (WTContainer)resWTC.nextElement();

			System.out.println("WTContainer: - Name: "+wtobj.getName());
			System.out.println("Description: "+wtobj.getDescription());
			System.out.println("ContainerName: "+wtobj.getContainerName());
			System.out.println("InternetDomain: "+wtobj.getInternetDomain());
			System.out.println("Identity: "+wtobj.getIdentity()+"\n");
		}
		System.out.println("Number of WTContainers: "+resWTC.size()+div);

		//	ContainerTeam.class
		QueryResult resCTT=PersistenceHelper.manager.find(new QuerySpec(ContainerTeam.class));
		while(resCTT.hasMoreElements()) {
			ContainerTeam wtobj = (ContainerTeam)resCTT.nextElement();

			System.out.println("ContainerTeam - Name: "+wtobj.getName());
			System.out.println("ContainerName: "+wtobj.getContainerName());
			System.out.println("Identity: "+wtobj.getIdentity()+"\n");
		}
		System.out.println("Number of ContainerTeams: "+resCTT.size()+div);

		//	WTGroup.class
		QueryResult resWTG=PersistenceHelper.manager.find(new QuerySpec(WTGroup.class));
		while(resWTG.hasMoreElements()) {
			WTGroup wtobj = (WTGroup)resWTG.nextElement();

			System.out.println("WTGroup - Name: "+wtobj.getName());
			System.out.println("BusinessType: "+wtobj.getBusinessType());
			System.out.println("Description: "+wtobj.getDescription());
			System.out.println("Repository(): "+wtobj.getRepository()+"\n");
		}
		System.out.println("Number of WTGroups: "+resWTG.size()+div);

		// WTPrincipal.class
		QueryResult resWTPr=PersistenceHelper.manager.find(new QuerySpec(WTPrincipal.class));
		while(resWTPr.hasMoreElements()) {
			WTPrincipal wtobj = (WTPrincipal)resWTPr.nextElement();

			System.out.println("WTPrincipal - Name: "+wtobj.getName());
			System.out.println("BusinessType: "+wtobj.getBusinessType()+"\n");
		}
		System.out.println("Number of WTPrincipal: "+resWTPr.size()+div);

		// Project2.class
		QueryResult resPJL=PersistenceHelper.manager.find(new QuerySpec(Project2.class));
		while(resPJL.hasMoreElements()) {
			Project2 wtobj = (Project2)resPJL.nextElement();

			System.out.println("Project2 - Name: "+wtobj.getName());
			System.out.println("Description: "+wtobj.getDescription());
			System.out.println("Identity: "+wtobj.getIdentity());
			System.out.println("OrganizationName: "+wtobj.getOrganizationName());
			System.out.println("RiskDescription: "+wtobj.getRiskDescription());
			System.out.println("ProjectNumber: "+wtobj.getProjectNumber());
			System.out.println("InvitationMsg: "+wtobj.getInvitationMsg()+"\n");
		}
		System.out.println("Number of Project2: "+resPJL.size()+div);

		// WfProcessTemplate.class
		QueryResult resWFPT=PersistenceHelper.manager.find(new QuerySpec(WfProcessTemplate.class));
		while(resWFPT.hasMoreElements()) {
			WfProcessTemplate wtwfpt = (WfProcessTemplate)resWFPT.nextElement();
			System.out.println("Name: "+wtwfpt.getName());
			System.out.println("Desc: "+wtwfpt.getDescription()+"\n" );
		}
		System.out.println("Number of WfProcessTemplate: "+resWFPT.size()+div);

		// WTChangeActivity2
		QueryResult resWFCA=PersistenceHelper.manager.find(new QuerySpec(WTChangeActivity2.class));
		while(resWFCA.hasMoreElements()) {
			WTChangeActivity2 wtwfca = (WTChangeActivity2)resWFCA.nextElement();

			System.out.println("Name: "+wtwfca.getName()+" & Number: "+wtwfca.getNumber()  );
			System.out.println("Desc: "+wtwfca.getDescription()+"\n" );
		}
		System.out.println("Number of WTChangeActivity2: "+resWFCA.size()+div);

		// WorkItem
		QueryResult resWFWI=PersistenceHelper.manager.find(new QuerySpec(WorkItem.class));
		while(resWFWI.hasMoreElements()) {
			WorkItem wtwfwi = (WorkItem)resWFWI.nextElement();

			//System.out.println("Name: "+wtwfwi.getName()+" & Number: "+wtwfwi.getNumber()  );
			System.out.println("Desc: "+wtwfwi.getDescription()+"\n" );
		}
		System.out.println("Number of WorkItem: "+resWFWI.size()+div);

		// WfAssignedActivity.class
		QueryResult resWFAA=PersistenceHelper.manager.find(new QuerySpec(WfAssignedActivity.class));
		while(resWFAA.hasMoreElements()) {
			WfAssignedActivity wtwfaa = (WfAssignedActivity)resWFAA.nextElement();

			System.out.println("Name: "+wtwfaa.getName());
			System.out.println("Desc: "+wtwfaa.getDescription()+"\n" );
		}
		System.out.println("Number of WfAssignedActivity: "+resWFAA.size()+div);

		PR(); ECR(); ECN(); ECA();

		System.out.println(div);
	}

	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\nName: "+wtin.getName());
			System.out.println( "Number: "+wtin.getNumber()+"\nDescription: "+wtin.getDescription());
			System.out.println( "Creator Name: "+wtin.getCreatorName()+"\nCreator EMail: "+wtin.getCreatorEMail());
			System.out.println( "LifeCycle State: "+wtin.getState()+"\nOrganization Name: "+wtin.getOrganizationName());
			System.out.println( "Requester: "+wtin.getRequester()+"\nIssue Priority: "+wtin.getIssuePriority());
			System.out.println( "Category: "+wtin.getCategory());

			System.out.println( "\nPR - Changeables: ");
			QueryResult wt2c = ChangeHelper2.service.getChangeables(wtin);
			getCMChangeables(wt2c);

			QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(wtin, null, ((WTContained)wtin).getContainerReference());
			while(qrcm.hasMoreElements()) {
				WfProcess wfprocess = (WfProcess)qrcm.nextElement();
				getWF(wfprocess,bis);
			}
			getCMCI(wtin);
		}
		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\nName: "+wtin.getName());
			System.out.println( "Number: "+wtin.getNumber()+"\nDescription: "+wtin.getDescription());
			System.out.println( "Need Date: "+wtin.getNeedDate()+"\nCreator Name: "+wtin.getCreatorName());
			System.out.println( "Creator EMail: "+wtin.getCreatorEMail()+"\nLifeCycle State: "+wtin.getState());
			System.out.println( "Organization Name: "+wtin.getOrganizationName()+"\nRequest Priority: "+wtin. getRequestPriority());
			System.out.println( "Category: "+wtin.getCategory() );

			System.out.println( "\nECR - Changeables: ");
			QueryResult wt2c = ChangeHelper2.service.getChangeables(wtin);
			getCMChangeables(wt2c);

			QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(wtin, null, ((WTContained)wtin).getContainerReference());
			while(qrcm.hasMoreElements()) {
				WfProcess wfprocess = (WfProcess)qrcm.nextElement();
				getWF(wfprocess,bis);
			}
			getCMCR(wtin);
		}
		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()+"\nNumber: "+wtin.getNumber());
			System.out.println( "Description: "+wtin.getDescription()+"\nNeed Date: "+wtin.getNeedDate());
			System.out.println( "Creator Name: "+wtin.getCreatorName()+"\nCreator EMail: "+wtin.getCreatorEMail());
			System.out.println( "LifeCycle State: "+wtin.getState()+"\nOrganization Name: "+wtin.getOrganizationName());

			System.out.println( "\nECN - Changeables Before: ");
			QueryResult wt2c = ChangeHelper2.service.getChangeablesBefore(wtin);
			getCMChangeables(wt2c);

			System.out.println( "\nECN - Changeables After: ");
			QueryResult wt2c2 = ChangeHelper2.service.getChangeablesAfter(wtin);
			getCMChangeables(wt2c2);

			QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(wtin, null, ((WTContained)wtin).getContainerReference());
			while(qrcm.hasMoreElements()) {
				WfProcess wfprocess = (WfProcess)qrcm.nextElement();
				getWF(wfprocess,bis);
			}
			getCMCN(wtin);
		}
		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()+"\nNumber: "+wtin.getNumber());
			System.out.println( "Description: "+wtin.getDescription()+"\nNeed Date: "+wtin.getNeedDate());
			System.out.println( "Creator Name: "+wtin.getCreatorName()+"\nCreator EMail: "+wtin.getCreatorEMail());
			System.out.println( "LifeCycle State: "+wtin.getState());

			System.out.println( "\nECA - Changeables Before: ");
			QueryResult wt2c = ChangeHelper2.service.getChangeablesBefore(wtin);
			getCMChangeables(wt2c);

			System.out.println( "\nECA - Changeables After: ");
			QueryResult wt2c2 = ChangeHelper2.service.getChangeablesAfter(wtin);
			getCMChangeables(wt2c2);

			QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(wtin, null, ((WTContained)wtin).getContainerReference());
			while(qrcm.hasMoreElements()) {
				WfProcess wfprocess = (WfProcess)qrcm.nextElement();
				getWF(wfprocess,bis);
			}
		}
		System.out.println(divE+"Number of ECA's: "+resCHA.size()+divE+divA);
	}

	public void getCMCI(WTChangeIssue wtcrci) throws Exception {
		// checking for Related ECR's
		QueryResult wt2cr = ChangeHelper2.service.getChangeRequest(wtcrci);
		if (wt2cr.size()>0) {
			while(wt2cr.hasMoreElements()) {
				WTChangeRequest2 ecr=(WTChangeRequest2)wt2cr.nextElement();
				System.out.println( divE+"\tRelated ECR: "+ecr.getTeamName()+"\n" );
				System.out.println( "\tName: "+ecr.getName()+"\n\tNumber: "+ecr.getNumber());
				System.out.println( "\tDescription: "+ecr.getDescription()+"\n\tNeed Date: "+ecr.getNeedDate());
				System.out.println( "\tCreator Name: "+ecr.getCreatorName()+"\n\tCreator EMail: "+ecr.getCreatorEMail());
				System.out.println( "\tLifeCycle State: "+ecr.getState()+"\n\tOrganization Name: "+ecr.getOrganizationName());
				System.out.println( "\tRequest Priority: "+ecr.getRequestPriority()+"\n\tCategory: "+ecr.getCategory());

				System.out.println( "\nECR - Changeables: ");
				QueryResult wt2c = ChangeHelper2.service.getChangeables(ecr);
				getCMChangeables(wt2c);

				QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(ecr, null, ((WTContained)ecr).getContainerReference());
				while(qrcm.hasMoreElements()) {
					WfProcess wfprocess = (WfProcess)qrcm.nextElement();
					getWF(wfprocess,tis);
				}
			}
		} else { System.out.println( "\n\tNO Related ECR's." ); }
	}

	public void getCMCR(WTChangeRequest2 wtcmcr) throws Exception {
		// Checking for Related PR's
		QueryResult wt2ci = ChangeHelper2.service.getChangeIssues(wtcmcr);
		if (wt2ci.size()>0) {
			while(wt2ci.hasMoreElements()) {
				WTChangeIssue pr=(WTChangeIssue)wt2ci.nextElement();
				System.out.println( divE+"\tRelated PR: "+pr.getTeamName()+"\n");
				System.out.println( "\tName: "+pr.getName()+"\tNumber: "+pr.getNumber());
				System.out.println( "\tDescription: "+pr.getDescription()+"\n\tCreator Name: "+pr.getCreatorName());
				System.out.println( "\tCreator EMail: "+pr.getCreatorEMail()+"\n\tLifeCycle State: "+pr.getState());
				System.out.println( "\tOrganization Name: "+pr.getOrganizationName()+"\n\tRequester: "+pr.getRequester());
				System.out.println( "\tIssue Priority: "+pr.getIssuePriority()+"\n\tCategory: "+pr.getCategory());

				System.out.println( "\nPR - Changeables: ");
				QueryResult wt2c = ChangeHelper2.service.getChangeables(pr);
				getCMChangeables(wt2c);

				QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(pr, null, ((WTContained)pr).getContainerReference());
				while(qrcm.hasMoreElements()) {
					WfProcess wfprocess = (WfProcess)qrcm.nextElement();
					getWF(wfprocess,tis);
				}
			}
		} else { System.out.println( "\n\tNO Related PR's." ); }

		// checking for Related ECN's
		QueryResult wt2cn = ChangeHelper2.service.getChangeOrders(wtcmcr);
		if (wt2cn.size()>0) {
			while(wt2cn.hasMoreElements()) {
				WTChangeOrder2 ecn=(WTChangeOrder2)wt2cn.nextElement();
				System.out.println( divE+"\tRelated ECN: "+ecn.getTeamName()+"\n");
				System.out.println( "\tName: "+ecn.getName()+"\n\tNumber: "+ecn.getNumber());
				System.out.println( "\tDescription: "+ecn.getDescription()+"\n\tNeed Date: "+ecn.getNeedDate());
				System.out.println( "\tCreator Name: "+ecn.getCreatorName()+"\n\tCreator EMail: "+ecn.getCreatorEMail());
				System.out.println( "\tLifeCycle State: "+ecn.getState()+"\n\tOrganization Name: "+ecn.getOrganizationName());

				System.out.println( "\nECN - Changeables Before: ");
				QueryResult wt2c = ChangeHelper2.service.getChangeablesBefore(ecn);
				getCMChangeables(wt2c);

				System.out.println( "\nECN - Changeables After: ");
				QueryResult wt2c2 = ChangeHelper2.service.getChangeablesAfter(ecn);
				getCMChangeables(wt2c2);

				QueryResult qrcm2 = WfEngineHelper.service.getAssociatedProcesses(ecn, null, ((WTContained)ecn).getContainerReference());
				while(qrcm2.hasMoreElements()) {
					WfProcess wfprocess2 = (WfProcess)qrcm2.nextElement();
					getWF(wfprocess2,tis);
				}
			}
		} else { System.out.println( "\n\tNO Related ECN's." ); }
	}

	public void getCMCN(WTChangeOrder2 wtcmcn) throws Exception {
		// checking for Related ECR's
		QueryResult wt2cr = ChangeHelper2.service.getChangeRequest(wtcmcn);
		if (wt2cr.size()>0) {
			while(wt2cr.hasMoreElements()) {
				WTChangeRequest2 ecr=(WTChangeRequest2)wt2cr.nextElement();
				System.out.println( divE+"\tRelated ECR: "+ecr.getTeamName()+"\n");
				System.out.println( "\tName: "+ecr.getName()+"\n\tNumber: "+ecr.getNumber());
				System.out.println( "\tDescription: "+ecr.getDescription()+"\n\tNeed Date: "+ecr.getNeedDate());
				System.out.println( "\tCreator Name: "+ecr.getCreatorName()+"\n\tCreator EMail: "+ecr.getCreatorEMail());
				System.out.println( "\tLifeCycle State: "+ecr.getState()+"\n\tOrganization Name: "+ecr.getOrganizationName());
				System.out.println( "\tRequest Priority: "+ecr. getRequestPriority()+"\n\tCategory: "+ecr.getCategory());

				System.out.println( "\nECR - Changeables: ");
				QueryResult wt2c = ChangeHelper2.service.getChangeables(ecr);
				getCMChangeables(wt2c);

				QueryResult qrcm = WfEngineHelper.service.getAssociatedProcesses(ecr, null, ((WTContained)ecr).getContainerReference());
				while(qrcm.hasMoreElements()) {
					WfProcess wfprocess = (WfProcess)qrcm.nextElement();
					getWF(wfprocess,tis);
				}
			}
		} else { System.out.println( "\n\tNO Related ECR's." ); }

		// checking for Related ECA's
		QueryResult wt2ca = ChangeHelper2.service.getChangeActivities(wtcmcn);
		if (wt2ca.size()>0) {
			while(wt2ca.hasMoreElements()) {
				WTChangeActivity2 eca=(WTChangeActivity2)wt2ca.nextElement();
				System.out.println( divE+"\tRelated ECA: "+eca.getTeamName()+"\n");
				System.out.println( "\tName: "+eca.getName()+"\n\tNumber: "+eca.getNumber());
				System.out.println( "\tDescription: "+eca.getDescription()+"\n\tNeed Date: "+eca.getNeedDate());
				System.out.println( "\tCreator Name: "+eca.getCreatorName()+"\n\tCreator EMail: "+eca.getCreatorEMail());
				System.out.println( "\tLifeCycle State: "+eca.getState());

				System.out.println( "\nECA - Changeables Before: ");
				QueryResult wt2c = ChangeHelper2.service.getChangeablesBefore(eca);
				getCMChangeables(wt2c);

				System.out.println( "\nECA - Changeables After: ");
				QueryResult wt2c2 = ChangeHelper2.service.getChangeablesAfter(eca);
				getCMChangeables(wt2c2);

				QueryResult qrcm2 = WfEngineHelper.service.getAssociatedProcesses(eca, null, ((WTContained)eca).getContainerReference());
				while(qrcm2.hasMoreElements()) {
					WfProcess wfprocess2 = (WfProcess)qrcm2.nextElement();
					getWF(wfprocess2,tis);
				}
			}
		} else { System.out.println( "\n\tNO Related ECA's." ); }
	}

	public void getCMChangeables ( QueryResult qrcm ) {
		if (qrcm.size()>0) {
			while(qrcm.hasMoreElements()) {

				String typStg = "";
				String ponm = "";
				String pono = "";
				String pocn = "";
				String poon = "";

				WTObject wtobj1 = (WTObject)qrcm.nextElement();
				wt.fc.Persistable wtobj = (wt.fc.Persistable)wtobj1;

				if (wtobj instanceof WTDocument) {
					typStg = "Affected WtDocument - ";ponm = ((WTDocument)wtobj).getName();
					pono = ((WTDocument)wtobj).getNumber(); pocn = ((WTDocument)wtobj).getContainerName();
					poon = ((WTDocument)wtobj).getOrganizationName();
				}
				else if (wtobj instanceof EPMDocument) {
					typStg = "Affected EPMDocument - ";ponm = ((EPMDocument)wtobj).getName();
					pono = ((EPMDocument)wtobj).getNumber();pocn = ((EPMDocument)wtobj).getContainerName();
					poon = ((EPMDocument)wtobj).getOrganizationName();
				}
				else if (wtobj instanceof WTPart) {
					typStg = "Affected WTPart - ";ponm = ((WTPart)wtobj).getName();
					pono = ((WTPart)wtobj).getNumber(); pocn = ((WTPart)wtobj).getContainerName();
					poon = ((WTPart)wtobj).getOrganizationName();
				}
				else if (wtobj instanceof WTContainer) {
					typStg = "Affected WTContainer - ";pono = "Not Applicable";
					ponm = ((WTContainer)wtobj).getName();pocn = ((WTContainer)wtobj).getContainerName();
					poon = ((WTContainer)wtobj).getOrganizationName();
				}
				else if (wtobj instanceof ContainerTeam) {
					typStg = "Affected ContainerTeam - ";
					ponm = ((ContainerTeam)wtobj).getName();
					pono = "Not Applicable";
					pocn = ((ContainerTeam)wtobj).getContainerName();
					poon = "Not Applicable";
				}

				System.out.println("\n"+typStg+"Name: "+ponm+"\nNumber:"+pono);
				System.out.println("Object Type: "+wtobj1.getType());
				System.out.println("Identity: "+wtobj1.getIdentity());
				System.out.println("Container Name: "+pocn+"\nOrganization Name:"+poon);
			}
		}
	}

	public void getWF(WfProcess wfprocessIN, String is) throws Exception {
		WTContainer container = WTContainerHelper.getContainer(wfprocessIN);
		WTUser wfCreator = (WTUser)(wfprocessIN).getCreator().getPrincipal();
		System.out.println( "\n"+is+"WfProcess Creator: "+wfCreator.getName()+"\n"+is+"Container: "+container.getName());
		System.out.println( is+"WfProcess Name: "+wfprocessIN.getName()+"\n"+is+"WfProcess Desc: "+wfprocessIN.getDescription());
		System.out.println( is+"Team Name: "+wfprocessIN.getTeamTemplateName()+"\n");

		ProcessData processdata = wfprocessIN.getContext();
		WfVariable wfvars[] = processdata.getVariableList();
		String[] PDS = processdata.getNames();

		for(int z = 0; z < wfvars.length; z++) {
			String tnStg = wfvars[z].getTypeName();
			if(tnStg.equals("boolean")||tnStg.equals("java.lang.Boolean")) {
				java.lang.Boolean wfbool = (java.lang.Boolean)wfvars[z].getValue();
				System.out.println( is+"Context Name: "+PDS[z]+"\n"+is+"Value: "+wfbool);
			}
			else if(tnStg.equals("java.lang.String")) {
				System.out.println( is+"Context Name: "+PDS[z]+"\n"+is+"Value: "+(String)wfvars[z].getValue());
			}
			else if(tnStg.equals("java.sql.Timestamp")) {
				java.sql.Timestamp wfTime = (java.sql.Timestamp)wfvars[z].getValue();
				System.out.println( is+"Context Name: "+PDS[z]+"\n"+is+"Value: "+wfTime);
			}
		}
	}
}
