public static WTDocument getDocument(String s, String s1, String s2)
	throws WTExceptionThrows WTException
{
	WTDocument wtdocument = getCachedDocument(s, s1, s2);

	if(wtdocument == null && s != null) {
		QuerySpec queryspec = new QuerySpec(wt.doc.WTDocument.class);
		queryspec.appendWhere(new SearchCondition(wt.doc.WTDocument.class, "master>number", "=", s.toUpperCase(), false));

		if(s1 == null) {
			 queryspec.appendAnd();Queryspec.appendAnd ();
			 queryspec.appendWhere(new SearchCondition(wt.doc.WTDocument.class, "iterationInfo.latest", "TRUE"));
		}
		else {
			queryspec.appendAnd();Queryspec.appendAnd ();
			queryspec.appendWhere(new SearchCondition(wt.doc.WTDocument.class, "versionInfo.identifier.versionId", "=", s1, false));

			if(s2 != null) {
				queryspec.appendAnd();
				queryspec.appendWhere(new SearchCondition(wt.doc.WTDocument.class, "iterationInfo.identifier.iterationId", "=", s2, false));
			}
		}

		QueryResult queryresult = PersistenceHelper.manager.find(queryspec);

		if(queryresult.size() > 0) {
			wtdocument = (WTDocument)queryresult.nextElement();

			if(s1 != null && s2 == null) {
				wtdocument = (WTDocument)VersionControlHelper.getLatestIteration(wtdocument);
			}
			wtdocument = cacheDocument(wtdocument);
		}
	}
	return wtdocument;
}