<html>
<body>
<%@ page import="com.crystaldecisions.sdk.framework.*,
com.crystaldecisions.sdk.occa.infostore.*,
com.businessobjects.rebean.wi.*,
java.io.*"
%>
<%
//Enter Username
String username = "username";
//Enter User password
String password = "password";
//Enter CMS Name
String cmsname = "cmsname";
String authtype = "secEnterprise";
//Enter the folder if for which you need to retrieve the webi reports objects
int report_folder_id=2750278;
IEnterpriseSession oEnterpriseSession=null;
ReportEngines engines=null;
ReportEngine widocRepEngine=null;
try
{
oEnterpriseSession = CrystalEnterprise.getSessionMgr().logon(username, password, cmsname, authtype);
engines = (ReportEngines) oEnterpriseSession.getService("ReportEngines");
widocRepEngine = (ReportEngine) engines.getService(ReportEngines.ReportEngineType.WI_REPORT_ENGINE);
getReportObjectsInFolder(oEnterpriseSession,widocRepEngine,report_folder_id,out);
}
catch(Exception e)
{
out.println(e);
}
finally
{
widocRepEngine.close();
engines.close();
oEnterpriseSession.logoff();
}
%>
</table>
</body>
</html>
<%!
private void getReportSQL(IEnterpriseSession oEnterpriseSession,ReportEngine widocRepEngine,int reportID, JspWriter out) throws Exception
{
// Opening the document
DocumentInstance oDocumentInstance = widocRepEngine.openDocument(reportID);
DataProvider oDataProvider = null;
SQLDataProvider oSQLDataProvider = null;
SQLContainer oSQLContainer_root = null;
SQLNode oSQLNode = null;
SQLSelectStatement oSQLSelectStatement = null;
String sqlStatement = null;
out.print("<TABLE BORDER=1>");
for (int i=0; i<oDocumentInstance.getDataProviders().getCount(); i++) {
oDataProvider = oDocumentInstance.getDataProviders().getItem(i);
out.print("<TR><TD COLSPAN=2 BGCOLOR=KHAKI>Data Provider Name: " + oDataProvider.getName() + "</TD></TR>");
if (oDataProvider instanceof SQLDataProvider) {
oSQLDataProvider = (SQLDataProvider) oDataProvider;
oSQLContainer_root = oSQLDataProvider.getSQLContainer();
if (oSQLContainer_root != null) {
for (int j=0; j<oSQLContainer_root.getChildCount(); j++) {
oSQLNode = (SQLNode) oSQLContainer_root.getChildAt(j);
oSQLSelectStatement = (SQLSelectStatement) oSQLNode;
sqlStatement = oSQLSelectStatement.getSQL();
out.print("<TR><TD>" + sqlStatement + "</TD></TR>");
}
}
} else {
out.print("<TR><TD COLSPAN=2>Data Provider is not a SQLDataProvider. SQL Statement can not be retrieved.</TD></TR>");
}
}
out.print("</TABLE>");
oDocumentInstance.closeDocument();
}
private void getReportObjectsInFolder(IEnterpriseSession oEnterpriseSession,ReportEngine widocRepEngine,int reportFolderID, JspWriter out) throws Exception
{
IInfoStore oInfoStore = (IInfoStore)oEnterpriseSession.getService("","InfoStore");
try
{
String query = "select si_id from ci_infoobjects where SI_PARENTID="+reportFolderID;
IInfoObjects oInfoObjects = oInfoStore.query(query);
for(int i=0;i<oInfoObjects.size();i++)
{
IInfoObject oInfoObject = (IInfoObject) oInfoObjects.get(i);
String objectKind1=oInfoObject.getKind();
if(objectKind1.equals("Folder"))
{
int folderID=oInfoObject.getID();
IInfoObjects boReportInfoObjects=oInfoStore.query("SELECT SI_ID FROM CI_INFOOBJECTS WHERE SI_PARENTID="+folderID);
for(int j=0;j<boReportInfoObjects.size();j++)
{
IInfoObject boReportInfoObject=(IInfoObject)boReportInfoObjects.get(j);
String objectKind=boReportInfoObject.getKind();
if(objectKind.equals("Folder"))
{
getReportObjectsInFolder(oEnterpriseSession,widocRepEngine,boReportInfoObject.getID(),out);
}
else if(objectKind.equals("Webi"))
{
out.println("<h3><b>"+boReportInfoObject.getTitle()+"</B></h3>");
getReportSQL(oEnterpriseSession,widocRepEngine,boReportInfoObject.getID(),out);
}
}
}
else if(objectKind1.equals("Webi"))
{
out.println("<h3><b>"+oInfoObject.getTitle()+"</B></h3>");
getReportSQL(oEnterpriseSession,widocRepEngine,oInfoObject.getID(),out);
}
}
}
catch(Exception exe)
{
out.println(exe);
}
}
%>