
package ext.ngc.pdmlink.change2.validators;

import com.ptc.core.components.validators.DefaultCreateValidator;
import com.ptc.core.ui.validation.*;
import com.ptc.netmarkets.util.misc.NmActionServiceHelper;
import com.ptc.windchill.cadx.common.util.WorkInProgressUtilities;
import com.ptc.windchill.enterprise.object.ActionDelegateHelper;
import java.util.*;
import org.apache.log4j.Logger;
import wt.access.*;
import wt.change2.*;
import wt.epm.EPMDocument;
import wt.fc.WTReference;
import wt.generic.GenericHelper;
import wt.generic.GenericizableMaster;
import wt.inf.container.WTContainerHelper;
import wt.inf.container.WTContainerRef;
import wt.log4j.LogR;
import wt.org.WTUser;
import wt.part.WTPart;
import wt.preference.PreferenceHelper;
import wt.preference.PreferenceService2;
import wt.session.SessionHelper;
import wt.util.WTException;

// object is to halt new change notice action or completion of, if change request is not in implementation lc state

public class CR_State_Validator_03 extends DefaultUIComponentValidator
{
	//wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/summaryReport/wt.change2.WTChangeOrder2/0=com.ptc.windchill.enterprise.change2.validators.ChangeNoticeReportValidator/duplicate

	public CR_State_Validator_03()
	{
	}

	public UIValidationResultSet performFullPreValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{

		System.out.println("ENTERING ReviseValidator.performFullPreValidation");
		System.out.println((new StringBuilder()).append("  validationKey -> ").append(uivalidationkey).toString());
		System.out.println((new StringBuilder()).append("  validationCriteria -> ").append(uivalidationcriteria.toString()).toString());

		UIValidationResultSet uivalidationresultset = new UIValidationResultSet();
		WTContainerRef wtcontainerref = uivalidationcriteria.getParentContainer();
		WTReference wtreference = uivalidationcriteria.getContextObject();
		if(wtcontainerref != null && wtreference != null)
		{
			Class class1 = wtcontainerref.getReferencedClass();
			Class class2 = wtreference.getReferencedClass();
			boolean flag = wt.pdmlink.PDMLinkProduct.class.isAssignableFrom(class1);
			boolean flag1 = wt.inf.library.WTLibrary.class.isAssignableFrom(class1);
			boolean flag2 = wt.projmgmt.admin.Project2.class.isAssignableFrom(class1);

			System.out.println((new StringBuilder()).append("wtRefObj display value is ").append(wtcontainerref).toString());
			System.out.println((new StringBuilder()).append("wtRefObj CLASS is ").append(wtcontainerref.getClass()).toString());
			System.out.println((new StringBuilder()).append("flags - invokedFromProduct is ").append(flag).append("\t invokedFromLibrary ").append(flag1).toString());
			System.out.println((new StringBuilder()).append("flag - invokedFromProject is ").append(flag2).toString());

			if((flag || flag1) && (wt.pdmlink.PDMLinkProduct.class.isAssignableFrom(class2) || wt.inf.library.WTLibrary.class.isAssignableFrom(class2) || wt.folder.Folder.class.isAssignableFrom(class2)))
			{
				System.out.println("enabling revise action");
				uivalidationresultset.addResult(new UIValidationResult(uivalidationkey, UIValidationStatus.ENABLED));
				return uivalidationresultset;
			}
			if(flag2)
				if(wt.access.agreement.AuthorizationAgreement.class.isAssignableFrom(class2))
				{
					System.out.println("agreement object -> revise action should be available for this object in projectlink, continue to further validation for this object");
				}
				else
				{
					System.out.println("hiding revise action in projectlink");
					uivalidationresultset.addResult(new UIValidationResult(uivalidationkey, UIValidationStatus.HIDDEN));
					return uivalidationresultset;
				}
		}

		uivalidationresultset = performReviseValidation(uivalidationkey, uivalidationcriteria, locale, "full");

		System.out.println((new StringBuilder()).append("RETURNING ").append(uivalidationresultset.toString()).toString());
		System.out.println("EXITING ReviseValidator.performFullPreValidation");

		return uivalidationresultset;
	}

	public UIValidationResultSet performFullPreValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{
		return performValidation(uivalidationkey, uivalidationcriteria);
	}

	public UIValidationResultSet performLimitedPreValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{
		return performValidation(uivalidationkey, uivalidationcriteria);
	}

	private UIValidationResultSet performValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria)
		throws WTException
	{
		System.out.println("ENTERING ChangeNoticeReportValidator.performValidation");
		UIValidationStatus uivalidationstatus = UIValidationStatus.HIDDEN;
		UIValidationResultSet uivalidationresultset = UIValidationResultSet.newInstance();

		System.out.println((new StringBuilder()).append(" validation criteria ").append(uivalidationcriteria == null ? "is null" : (new StringBuilder()).append(" component type is ").append(uivalidationcriteria.getComponentType()).toString()).toString());

		if(uivalidationcriteria != null)
		{
			if(ComponentType.INFO.equals(uivalidationcriteria.getComponentType()))
				uivalidationstatus = UIValidationStatus.ENABLED;

			System.out.println((new StringBuilder()).append("Validation validationKey being added to result set is ").append(uivalidationkey).toString());
			System.out.println((new StringBuilder()).append("Validation status being added to result set is ").append(uivalidationstatus).toString());

			uivalidationresultset.addResult(UIValidationResult.newInstance(uivalidationkey, uivalidationstatus));
		}

		System.out.println((new StringBuilder()).append("EXITING ChangeNoticeReportValidator.performValidation").append(uivalidationresultset).toString());

		return uivalidationresultset;
	}


	/*
	if(wtreference != null && wtreference.getReferencedClass() != null && wt.change2.ChangeRequestIfc.class.isAssignableFrom(wtreference.getReferencedClass()))
	{
		ChangeRequestIfc changerequestifc = (ChangeRequestIfc)wtreference.getObject();
		uivalidationstatus = proposedsolutionhandler.displayChangeAnalysisTable(changerequestifc).booleanValue() ? UIValidationStatus.ENABLED : UIValidationStatus.HIDDEN;
	}
	*/

	//private static final Logger logger = LogR.getLogger("com.ptc.windchill.enterprise.change2");

	public ChangeMgmtCreateWizardsValidator()
	{
		containerRef = null;
		isLimited = false;
		actionDelegateHelper = new ActionDelegateHelper();
		criteria = null;
	}

	public UIValidationResultSet performFullPreValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{
		UIValidationResultSet uivalidationresultset = super.performFullPreValidation(uivalidationkey, uivalidationcriteria, locale);
		UIComponentValidator uicomponentvalidator = getWorkPackageValidator();
		System.out.println((new StringBuilder()).append("The work package validator is ").append(uicomponentvalidator).toString());
		if(uicomponentvalidator != null)
		{
			UIValidationResultSet uivalidationresultset1 = uicomponentvalidator.performFullPreValidation(uivalidationkey, uivalidationcriteria, locale);
			if(!uivalidationresultset1.getAllResults().isEmpty())
				return uivalidationresultset1;
		}
		return performValidation(uivalidationresultset, uivalidationkey, uivalidationcriteria, false);
	}

	public UIValidationResultSet performLimitedPreValidation(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{
		UIValidationResultSet uivalidationresultset = super.performLimitedPreValidation(uivalidationkey, uivalidationcriteria, locale);
		return performValidation(uivalidationresultset, uivalidationkey, uivalidationcriteria, true);
	}

	public UIValidationResult validateSelectedAction(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
		throws WTException
	{
		UIValidationResult uivalidationresult = super.validateSelectedAction(uivalidationkey, uivalidationcriteria, locale);
		UIValidationResultSet uivalidationresultset = UIValidationResultSet.newInstance();
		uivalidationresultset.addResult(uivalidationresult);
		uivalidationresultset = performValidation(uivalidationresultset, uivalidationkey, uivalidationcriteria, false);
		uivalidationresult = uivalidationresultset.getSingleResult(uivalidationkey, uivalidationcriteria.getContextObject());
		return uivalidationresult;
	}

	UIComponentValidator getWorkPackageValidator()
	{
		return getSubValidator("WPValidation");
	}

	private UIValidationResultSet performValidation(UIValidationResultSet uivalidationresultset, UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, boolean flag)
		throws WTException
	{
		boolean flag1 = determineHidden(uivalidationresultset, uivalidationkey);
		List list = uivalidationresultset.getResultsByValidationKey(uivalidationkey);

		UIValidationResultSet uivalidationresultset1 = UIValidationResultSet.newInstance();
		criteria = uivalidationcriteria;

		UIValidationStatus uivalidationstatus;
		WTReference wtreference;
		for(Iterator iterator = list.iterator(); iterator.hasNext(); uivalidationresultset1.addResult(UIValidationResult.newInstance(uivalidationkey, uivalidationstatus, wtreference)))
		{
			UIValidationResult uivalidationresult = (UIValidationResult)iterator.next();
			uivalidationstatus = uivalidationresult.getStatus();
			wtreference = uivalidationcriteria.getContextObject();

			if(uivalidationstatus.equals(UIValidationStatus.HIDDEN) || uivalidationstatus.equals(UIValidationStatus.DENIED) || uivalidationstatus.equals(UIValidationStatus.DISABLED))
				continue;
			uivalidationstatus = flag1 ? UIValidationStatus.HIDDEN : UIValidationStatus.DENIED;

			System.out.println((new StringBuilder()).append("Validation criteria context object is ").append(wtreference).toString());
			System.out.println((new StringBuilder()).append("Validation is being peformed in workspace is ").append(uivalidationcriteria.getInWorkspace()).toString());

			if(wtreference != null && isWorkspaceValid(uivalidationcriteria, wtreference))
			{
				setWTContainerRef(uivalidationcriteria.getInvokedFromContainer());
				String s = uivalidationkey.getObjectType();
				setLimited(flag);
				String s1 = getClassNameForType(s);
				System.out.println((new StringBuilder()).append("Validation criteria requestor object is ").append(s1).toString());
				if(s1 != null)
				{
					wt.fc.Persistable persistable = wtreference.getObject();
					System.out.println((new StringBuilder()).append("Class for container validation is ").append(persistable == null ? "null" : persistable.getClass().getName()).toString());
					System.out.println((new StringBuilder()).append("PDMLink container valid on create is ").append(actionDelegateHelper.isPDMLinkContainerValidOnCreate(persistable, getWTContainerRef(), SessionHelper.getPrincipal())).toString());
					if(actionDelegateHelper.isPDMLinkContainerValidOnCreate(persistable, getWTContainerRef(), SessionHelper.getPrincipal()) && isChangeManagementCommonValid(persistable) && isCreateChangeItemValid(s1, persistable))
						uivalidationstatus = flag1 ? UIValidationStatus.ENABLED : UIValidationStatus.PERMITTED;
				}
			}
			System.out.println((new StringBuilder()).append("The create ").append(uivalidationkey.getObjectType()).append(" wizard action is ").append(uivalidationstatus).toString());
		}

		return uivalidationresultset1;
	}

	public UIValidationResult validateFormSubmission (UIValidationKey validationKey,UIValidationCriteria validationCriteria, Locale	 locale)
		throws WTException
	{

		UIValidationResult result = UIValidationResult.newInstance(validationKey, UIValidationStatus.NOT_VALIDATED);

		String oldTaskName = validationCriteria.getOldText().get("change_name");
		String newTaskName = validationCriteria.getText().get("change_name");
		String checkString = "AFFECTED & RESULTING OBJECTS";

		if (oldTaskName.indexOf(checkString) >= 0 && newTaskName.indexOf(checkString) < 0)
		{
			result.setStatus(UIValidationStatus.PROMPT_FOR_CONFIRMATION);
		}

		return result;
	}

	// 		wt.rule.init.AttrValue attrvalue = InitRuleHelper.getAttrValue("lifeCycle.id", obj, wtcontainerref);

	/*

	static Set getDocuments(WTPart wtpart)
		throws WTException
	{
		HashSet hashset = new HashSet();
		QueryResult queryresult = WTPartHelper.service.getDescribedByDocuments(wtpart, true);
		do
		{
			if(!queryresult.hasMoreElements())
				break;
			LifeCycleManaged lifecyclemanaged = (LifeCycleManaged)queryresult.nextElement();
			if(lifecyclemanaged.getLifeCycleState().equals(State.RELEASED))
			{
				hashset.add(new Key(lifecyclemanaged));
			}
			else
			{
				Changeable2 changeable2 = (Changeable2)lifecyclemanaged;
				if(!getPendingECNs(changeable2).isEmpty())
					hashset.add(new Key(changeable2));
			}
		} while(true);
		queryresult = WTPartHelper.service.getReferencesWTDocumentMasters(wtpart);
		do
		{
			if(!queryresult.hasMoreElements())
				break;
			WTDocumentMaster wtdocumentmaster = (WTDocumentMaster)queryresult.nextElement();
			List list = getVersions(wtdocumentmaster, null, true);
			if(!list.isEmpty())
				hashset.add(list);
		} while(true);
		return hashset;
	}

	private void stateValidate(LifeCycleState lifecyclestate)
		throws WTPropertyVetoException
	{
		if(lifecyclestate == null)
		{
			Object aobj[] = {
				new PropertyDisplayName(CLASSNAME, "state")
			};
			throw new WTPropertyVetoException("wt.introspection.introspectionResource", "22", aobj, new PropertyChangeEvent(this, "state", state, lifecyclestate));
		} else
		{
			return;
		}
	}

	wt\change2\process\ProcessHelper.java

	//##begin user.operations preserve=yes
	private static String checkLifeCycleManagedFinished( QueryResult result ) {
		// Initially assume NO_SUBORDINATES
		String result_value = ProcessHelper.NO_SUBORDINATES;
		while (result.hasMoreElements()) {
			Persistable persistable = (Persistable) result.nextElement();
			if (persistable instanceof LifeCycleManaged) {
				LifeCycleManaged life_cycle_managed = (LifeCycleManaged) persistable;
				if (life_cycle_managed.getLifeCycleState().equals(State.toState("COMPLETED"))) {
					// If we were in CANCELLED state, then set it to COMPLETE
					result_value = ProcessHelper.COMPLETE;
				}
				else if (life_cycle_managed.getLifeCycleState().equals(State.toState("CANCELLED"))) {
					if (result_value == ProcessHelper.NO_SUBORDINATES) {
						// If there were NO_SUBORDINATES, then we move to CANCELLED
						// otherwise we stay in the CANCELLED or COMPLETE state
						result_value = ProcessHelper.CANCELLED;
					}
				}
				else {
					// There are still activies that are not CANCELLED and not COMPLETE
					return new String(ProcessHelper.NOT_FINISHED);
				}
			}
		}
		return new String(result_value);
	}

	public static String checkLifeCycleManagedFinished( LifeCycleManaged life_cycle_managed ) {
		String result_value = ProcessHelper.NOT_FINISHED;
		if (life_cycle_managed.getLifeCycleState().equals(State.toState("COMPLETED"))) {
			result_value = ProcessHelper.COMPLETE;
		}
		else if (life_cycle_managed.getLifeCycleState().equals(State.toState("CANCELLED"))) {
			result_value = ProcessHelper.CANCELLED;
		}
		else {
			result_value = ProcessHelper.NOT_FINISHED;
		}
		return new String(result_value);
	}

	public static String checkRequestSubmitted( ChangeItem cItem )
		throws ChangeException2, WTException {

		//##begin checkRequestSubmitted%37A8E4410119.body preserve=yes
		ChangeRequestIfc change_request = null;

		// if the change object passed was a Change Request, then use it
		if (cItem instanceof ChangeRequestIfc) {
			change_request = (ChangeRequestIfc) cItem;
		}
		// otherwise find the parent change request
		else {
			Change2DelegateFactory factory = new Change2DelegateFactory();
			FindChangeRequestDelegate delegate = factory.getFindChangeRequestDelegate( (ChangeItemIfc) cItem );
			change_request = delegate.findChangeRequest( (ChangeItemIfc) cItem );
		}

		if (change_request instanceof LifeCycleManaged) {
			LifeCycleManaged life_cycled = (LifeCycleManaged) change_request;
			if (LifeCycleHelper.service.isInInitialPhase(life_cycled)) {
				if (!(life_cycled.isLifeCycleAtGate())) {
					return ProcessHelper.NOT_SUBMITTED;
				}
			}

			if (life_cycled instanceof WTChangeRequest2) {
				WTChangeRequest2 request = (WTChangeRequest2) life_cycled;
				Complexity complexity = request.getComplexity();
				if ( complexity != null )
					return complexity.toString();
			}
			return new String();	// We don't know how to get a complexity
		}
		return null;  // We can't check if its been submitted
	}

	public class MyValidator extends DefaultUIComponentValidator{

		public UIValidationResult validateSelectedAction (String a_key, UIValidationCriteria a_criteria, Locale a_locale)
		{
			// get required info from UIValidationCriteria
			WTContainerRef parentContainer = a_criteria.getParentContainer();
			WTReference contextObject = a_criteria.getContextObject();
			WTPrincipalReference userRef = a_criteria.getUser();

			// create status and message objects to pass back
			UIValidationStatus status = null;
			UIValidationFeedbackMsg msg = null;

			// perform validation logic
			if (we can allow this action to proceed){
				status = UIValidationStatus.PERMITTED;
			}
			else{
				status = UIValidationStatus.DENIED;
				msg = new UIValidationMsg(localized text, UIValidationMsgType.INFO)
			}

			// return a validation result with the calculated status and message
			return new UIValidationResult(a_key, contextObject, status, msg);
		}
	}
	*/

	protected boolean isLifeCycleBasic(UIValidationCriteria uivalidationcriteria)
		throws WTException
	{
		Boolean boolean1 = Boolean.valueOf(false);
		List list = uivalidationcriteria == null ? null : uivalidationcriteria.getTargetObjects_nonPersistable();
		Object obj = null;
		if(list != null && list.size() > 0)
			obj = list.get(0);
		if(objectMap.containsKey(obj) && (objectMap.get(obj) instanceof Boolean))
			return ((Boolean)objectMap.get(obj)).booleanValue();
		wt.inf.container.WTContainerRef wtcontainerref = uivalidationcriteria == null ? null : uivalidationcriteria.getInvokedFromContainer();
		if(obj == null || wtcontainerref == null)
			return false;
		wt.rule.init.AttrValue attrvalue = InitRuleHelper.getAttrValue("lifeCycle.id", obj, wtcontainerref);
		if(attrvalue != null)
		{
			System.out.println("Checking for basic lifecycle");
			LifeCycleTemplate lifecycletemplate = (LifeCycleTemplate)InitRuleHelper.evaluator.getValue(attrvalue, obj, wtcontainerref);
			if(lifecycletemplate.isBasic())
			{
				System.out.println("The LifeCycleTemplate is basic.");
				boolean1 = Boolean.valueOf(true);
			}
		}
		objectMap.put(obj, boolean1);
		return boolean1.booleanValue();
	}

	boolean isCreateChangeOrder2Valid(Object obj)
	{
		if(obj != null && wt.change2.ChangeRequestIfc.class.isAssignableFrom(obj.getClass()))
		{
			System.out.println("Object was a Change Request.  Returning ENABLED");
			return true;
		}
		try
		{
			if(!isLimited && obj != null)
			{
				Object obj1 = PreferenceHelper.service.getValue(getWTContainerRef(), CHANGE_NOTICE_WITHOUT_CHANGE_REQUESTS, "WINDCHILL", (WTUser)SessionHelper.getPrincipal());
				System.out.println((new StringBuilder()).append("Preference Service returned value: ").append(obj1).toString());
				if(obj1 != null && (obj1 instanceof Boolean) && ((Boolean)obj1).booleanValue())
				{
					System.out.println("Setting the validation result to enabled ");
					return true;
				}
			}
		}
		catch(Exception exception)
		{
			exception.printStackTrace();
		}
		System.out.println("Setting the validation result to disabled ");
		return false;
	}

	protected boolean isCreateChangeActivity2Valid(Object obj)
		throws WTException
	{
		if(obj != null && wt.change2.ChangeOrderIfc.class.isAssignableFrom(obj.getClass()))
		{
			System.out.println((new StringBuilder()).append("access permission set include access permission modify is ").append(criteria.getAccessPermissionSet((AccessControlled)obj).includes(AccessPermission.MODIFY)).toString());
			return criteria.getAccessPermissionSet((AccessControlled)obj).includes(AccessPermission.MODIFY);
		} else
		{
			return true;
		}
	}

	protected boolean isCreateChangeRequest2Valid(Object obj)
	{
		return true;
	}

	protected boolean isCreateWTVarianceValid(Object obj)
	{
		if(obj instanceof WTPart)
		{
			WTPart wtpart = (WTPart)obj;
			System.out.println((new StringBuilder()).append("Create WTVariance Valid is ").append(!GenericHelper.isConfigurable((GenericizableMaster)wtpart.getMaster(), true)).toString());
			if(GenericHelper.isConfigurable((GenericizableMaster)wtpart.getMaster(), true))
				return false;
		}
		return true;
	}

	protected boolean isCreateChangeIssueValid(Object obj)
	{
		return true;
	}

	void setWTContainerRef(WTContainerRef wtcontainerref)
	{
		System.out.println((new StringBuilder()).append("The parent container is being set:").append(wtcontainerref).toString());
		containerRef = wtcontainerref;
	}

	WTContainerRef getWTContainerRef()
	{
		if(containerRef == null)
			try
			{
				System.out.println("The container was null.  Trying to obtain the exchange container.");
				containerRef = WTContainerHelper.getExchangeRef();
			}
			catch(WTException wtexception)
			{
				wtexception.printStackTrace();
			}
		return containerRef;
	}

	private boolean isCreateChangeItemValid(String s, Object obj)
		throws WTException
	{
		System.out.println((new StringBuilder()).append("Create change item valid, type class is ").append(s).toString());
		if(s.equals(PROBLEM_REPORT_CLASS_NAME))
			return isCreateChangeIssueValid(obj);
		if(s.equals(VARIANCE_CLASS_NAME))
			return isCreateWTVarianceValid(obj);
		if(s.equals(CHANGE_REQUEST_CLASS_NAME))
			return isCreateChangeRequest2Valid(obj);
		if(s.equals(CHANGE_NOTICE_CLASS_NAME))
			return isCreateChangeOrder2Valid(obj);
		if(s.equals(CHANGE_TASK_CLASS_NAME))
			return isCreateChangeActivity2Valid(obj);
		else
			return false;
	}

	private static UIValidationKey validationKeyArray[] = {
		UIValidationKey.newInstance("create", "problemReport", "CREATE_PROBLEMREPORT"), UIValidationKey.newInstance("create", "variance", "CREATE_VARIANCE"), UIValidationKey.newInstance("create", "changeRequest", "CREATE_CHANGEREQUEST"), UIValidationKey.newInstance("create", "changeNotice", "CREATE_CHANGENOTICE"), UIValidationKey.newInstance("create", "changeTask"), UIValidationKey.newInstance("relatedChanges", "change", "THIRD_LEVEL_RELATED_CHANGES"), UIValidationKey.newInstance("changeMonitor", "change", "CHANGE_MONITOR_SUB_TAB")
	};

	private static UIValidationKey thirdPartyReportingValidationKeyArray[] = {
		UIValidationKey.newInstance("summaryReport", "changeNotice")
	};

	//private static Logger logger = LogR.getLogger(com/ptc/windchill/enterprise/change2/validators/ChangeMgmtUISolutionGroup.getName());

	//CLASS_NAME = (com.ptc.windchill.projectlink.upgrade.org.CleanupLDAPForOrgGroup.class).getName();

	private static final long serialVersionUID = 0x1a08febbd2L;
	private static final Logger logger = LogR.getLogger("com.ptc.windchill.enterprise.change2");

	//private static String CHANGE_NOTICE_WITHOUT_CHANGE_REQUESTS = "/ChangeNoticeWithoutChangeRequest/enabled";
	//private static final String PROBLEM_REPORT_CLASS_NAME = wt/change2/WTChangeIssue.getName();
	//private static final String VARIANCE_CLASS_NAME = wt/change2/WTVariance.getName();

	private static final String CHANGE_REQUEST_CLASS_NAME = (wt.change2.WTChangeRequest2.class).getName();
	//private static final String CHANGE_REQUEST_CLASS_NAME = wt.change2.WTChangeRequest2.class.getName();
	//private static final String CHANGE_REQUEST_CLASS_NAME = wt.change2.WTChangeRequest2.getName();

	//private static final String CHANGE_NOTICE_CLASS_NAME = wt/change2/WTChangeOrder2.getName();
	//private static final String CHANGE_TASK_CLASS_NAME = wt/change2/WTChangeActivity2.getName();

	private WTContainerRef containerRef;
	private boolean isLimited;
	protected ActionDelegateHelper actionDelegateHelper;
	private UIValidationCriteria criteria;
}
