
package cust.cm.report;

import java.sql.Timestamp;
import java.util.Date;
import java.lang.String;
import java.lang.Boolean;

import wt.fc.PersistenceHelper;
import wt.fc.WTObject;
import wt.fc.QueryResult;
import wt.fc.ObjectReference;
import wt.fc.IdentificationObject;
import wt.fc.Identified;

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 static void promoteChangeables2(WTChangeOrder2 wtchangeorder2) throws WTException
{
	Transaction transaction = new Transaction();

	try
	{
		transaction.start();
		for(
			QueryResult queryresult = ChangeHelper2.service.getChangeablesAfter(wtchangeorder2);
			queryresult.hasMoreElements();
		)
	{
	Persistable persistable = (Persistable)queryresult.nextElement();

	if(persistable instanceof WTContained)
	{
	for(QueryResult queryresult1 = WfEngineHelper.service.getAssociatedProcesses(persistable, null, ((WTContained)persistable).getContainerReference()); queryresult1.hasMoreElements();)
	{
	WfProcess wfprocess = (WfProcess)queryresult1.nextElement();
	if(wfprocess.getState().equals(WfState.OPEN) || wfprocess.getState().equals(WfState.OPEN_RUNNING) || wfprocess.getState().equals(WfState.OPEN_NOT_RUNNING) || wfprocess.getState().equals(WfState.OPEN_NOT_RUNNING_NOT_STARTED) || wfprocess.getState().equals(WfState.OPEN_NOT_RUNNING_SUSPENDED) || wfprocess.getState().equals(WfState.OPEN_NOT_RUNNING_SUSPENDED_DISABLED) || wfprocess.getState().equals(WfState.OPEN_NOT_RUNNING_SUSPENDED_INTERMITTED))
	WfEngineHelper.service.changeState(wfprocess, WfTransition.TERMINATE);
	}
	LifeCycleManaged lifecyclemanaged = (LifeCycleManaged)persistable;


	try
	{
		LifeCycleTemplate lifecycletemplate = (LifeCycleTemplate)lifecyclemanaged.getLifeCycleTemplate().getObject();
		Vector vector = LifeCycleHelper.service.findStates(lifecycletemplate);
		State state = State.toState("RELEASED");
		if(vector.contains(state))
			LifeCycleHelper.service.setLifeCycleState(lifecyclemanaged, State.toState("RELEASED"));
	}
	catch(LifeCycleException lifecycleexception)
	{
		lifecycleexception.printStackTrace();
	}
	catch(Exception exception)
	{
		throw new WTException(exception);
	}

	}
	else
	{
	throw new WTException("com.ptc.windchill.pdmlink.change.server.impl.implResource", "5", new Object[] {persistable});
	}
	}
	transaction.commit();
	transaction = null;
	}
	finally
	{
	if(transaction != null)
	transaction.rollback();
	}
}
