using System;
using System.Xml;
using System.Runtime.InteropServices;
using Documentum.Interop.DFC;
namespace CodeSnippets
{
public class XDQL
{
public static void Main(String[] args)
{
XDQL xdql = new XDQL();
xdql.ExecuteXMLQuery();
}
String username = "dmadmin";
String password = "dmadmin";
String repository = "devprog";
public void ExecuteXMLQuery()
{
IDfXmlQuery xmlQuery = null;
IDfSessionManager sessMgr = null;
IDfSession sess = null;
IDfClientX clientX = null;
string queryStr = "select r_object_id,object_name from dm_cabinet";
try
{
clientX = new DfClientXClass();
xmlQuery = clientX.getXmlQuery();
xmlQuery.setDQL(queryStr);
//Set various XDQL options.
sessMgr = CreateSessionManager();
sess = sessMgr.getSession(repository);
xmlQuery.execute(0,sess);
String results = xmlQuery.getXMLString();
Console.WriteLine(results);
//Convert results to DOM
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(results);
Console.WriteLine(xmlDoc.OuterXml);
Console.ReadLine();
}
catch(COMException ce)
{
Console.WriteLine(ce.Message);
Console.WriteLine(ce.StackTrace);
}
finally
{
if((sessMgr != null) && (sess != null))
{
sessMgr.release(sess);
Marshal.ReleaseComObject(sessMgr);
Marshal.ReleaseComObject(sess);
}
if(xmlQuery != null) Marshal.ReleaseComObject(xmlQuery);
if(clientX != null) Marshal.ReleaseComObject(clientX);
}
}
private IDfSessionManager CreateSessionManager()
{
IDfClientX clientX = null;
IDfClient localClient = null;
IDfSessionManager sessMgr = null;
IDfLoginInfo li = null;
try
{
clientX = new DfClientXClass();
li = clientX.getLoginInfo();
li.setUser(username);
li.setPassword(password);
localClient = clientX.getLocalClient();
sessMgr = localClient.newSessionManager();
sessMgr.setIdentity(repository,li);
}
catch(COMException ex)
{
Console.WriteLine("Authentication Failed");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
finally
{
if(clientX != null)Marshal.ReleaseComObject(clientX);
if(localClient != null) Marshal.ReleaseComObject(localClient);
if(li != null) Marshal.ReleaseComObject(li);
}
return sessMgr;
}
}
}
|