private void button1_Click(object sender, System.EventArgs e) { // OK, what are we supposed to retrieve System.Data.DataRow dtRow; int i = dgrdContainees.CurrentRowIndex; dtRow = g_dtblResults.Rows[i]; string strId = (string)dtRow["Id"]; string strContentSize = (string)dtRow["ContentSize"]; MessageBox.Show("Retrieving content for document [" + strId + "] size= " + strContentSize + " bytes."); // Retrieve the document CEWSI.ObjectRequestType objContentRequest = new CEWSI.ObjectRequestType(); CEWSI.ObjectSpecification objContentSpec = new CEWSI.ObjectSpecification(); objContentSpec.classId = "Document"; objContentSpec.objectId = strId; objContentSpec.objectStore = MainForm.Library; objContentRequest.SourceSpecification = objContentSpec; objContentRequest.id = "1"; // Ask for the content properties... CEWSI.FilterElementType[] incContentProps; if (UseGetContent) { incContentProps = new CEWSI.FilterElementType[1]; } else { incContentProps = new CEWSI.FilterElementType[2]; } incContentProps[0] = new CEWSI.FilterElementType(); incContentProps[0].Value = "ContentElements"; if (!UseGetContent) { incContentProps[1] = new CEWSI.FilterElementType(); incContentProps[1].Value = "Content"; incContentProps[1].maxSize = 1000000; incContentProps[1].maxSizeSpecified = true; } objContentRequest.PropertyFilter = new CEWSI.PropertyFilterType(); objContentRequest.PropertyFilter.IncludeProperties = incContentProps; objContentRequest.PropertyFilter.maxRecursion = 1; objContentRequest.PropertyFilter.maxRecursionSpecified = true; // Create the request array CEWSI.ObjectRequestType[] objRequestArray = new CEWSI.ObjectRequestType[1]; objRequestArray[0] = objContentRequest; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.ObjectResponseType[] objResponses = null; try { objResponses = objBinding.GetObjects(WSIUtil.GetLocalization(), objRequestArray); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while querying for containees: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } // Did we get some content? if (objResponses.Length < 1) { MessageBox.Show("No content found"); return; } if (objResponses[0].GetType() == typeof(CEWSI.ErrorStackResponse)) { CEWSI.ErrorStackResponse errStackResponse = (CEWSI.ErrorStackResponse)objResponses[0]; CEWSI.ErrorStackType objStack = errStackResponse.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return; } // Extract the document object from the response CEWSI.ObjectValue objDoc = null; if (objResponses[0].GetType() == typeof(CEWSI.SingleObjectResponse)) { CEWSI.SingleObjectResponse objResponse = (CEWSI.SingleObjectResponse)objResponses[0]; objDoc = objResponse.Object; } else if (objResponses[0].GetType() == typeof(CEWSI.ObjectSetResponse)) { CEWSI.ObjectSetResponse objSetResponse = (CEWSI.ObjectSetResponse)objResponses[0]; CEWSI.ObjectSetType objSet = objSetResponse.ObjectSet; objDoc = objSet.Object[0]; } else { MessageBox.Show("Unknown data type returned in ObjectReponse: [" + objResponses[0].GetType().ToString() + "]"); return; } // OK, we got some content. Get the bits from the response packet // First find the ContentElements property /* * if( objDoc.Property == null ) * { * MessageBox.Show("Received a document with no properties!"); * return; * } */ // Extract the content for each content element foreach (CEWSI.PropertyType objProp in objDoc.Property) { if (objProp.propertyId.ToLower().CompareTo("contentelements") == 0) { CEWSI.DependentObjectType[] contTrans = (CEWSI.DependentObjectType[])((CEWSI.ListOfObject)objProp).Value; if (contTrans == null) { MessageBox.Show("The selected document has no content"); break; } for (int nItem = 0; nItem < contTrans.Length; nItem++) { Byte[] byteContent = null; if (UseGetContent) { CEWSI.ContentRequestType crt = new CEWSI.ContentRequestType(); crt.cacheAllowed = true; crt.cacheAllowedSpecified = true; crt.id = "1"; crt.maxBytes = 100 * 1024; crt.maxBytesSpecified = true; crt.startOffset = 0; crt.startOffsetSpecified = true; crt.continueFrom = null; CEWSI.ElementSpecificationType est = new CEWSI.ElementSpecificationType(); est.itemIndex = nItem; est.itemIndexSpecified = true; est.elementSequenceNumber = 0; est.elementSequenceNumberSpecified = false; crt.ElementSpecification = est; CEWSI.ObjectSpecification objSpec = new CEWSI.ObjectSpecification(); objSpec.classId = "Document"; objSpec.objectId = strId; objSpec.objectStore = MainForm.Library; crt.SourceSpecification = objSpec; CEWSI.ContentRequestType[] contReqArray = new CEWSI.ContentRequestType[1]; contReqArray[0] = crt; CEWSI.FNCEWS40PortTypeClient binding2 = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.GetContentRequest gcr = new CEWSI.GetContentRequest(); gcr.ContentRequest = contReqArray; gcr.validateOnly = false; gcr.validateOnlySpecified = true; CEWSI.ContentResponseType[] contResponses = null; try { contResponses = binding2.GetContent(WSIUtil.GetLocalization(), gcr); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while fetching content for a content element: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } CEWSI.ContentResponseType crt2 = contResponses[0]; if (crt2 is CEWSI.ContentErrorResponse) { CEWSI.ContentErrorResponse cer = (CEWSI.ContentErrorResponse)crt2; CEWSI.ErrorStackType objStack = cer.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return; } else if (crt2 is CEWSI.ContentElementResponse) { CEWSI.ContentElementResponse elem = (CEWSI.ContentElementResponse)crt2; CEWSI.InlineContent ic = (CEWSI.InlineContent)elem.Content; byteContent = ic.Binary; } else { MessageBox.Show("Unknown data type returned in content response: [" + crt.GetType().ToString() + "]"); return; } } // end if (UseGetContent) else { CEWSI.DependentObjectType contTran = (CEWSI.DependentObjectType)contTrans[nItem]; CEWSI.PropertyType[] props = (CEWSI.PropertyType[])contTran.Property; if (props != null) { CEWSI.ContentData contData = (CEWSI.ContentData)props[0]; CEWSI.InlineContent ic = (CEWSI.InlineContent)contData.Value; byteContent = ic.Binary; } } // Write the retrieved content out to a file System.DateTime now = System.DateTime.Now; string strFileName = "C:\\Temp\\ContentElement0"; // + nItem.ToString(); strFileName = strFileName + "_" + now.Month.ToString(); strFileName = strFileName + "_" + now.Day.ToString(); strFileName = strFileName + "_" + now.Year.ToString(); strFileName = strFileName + "_" + now.Hour.ToString(); strFileName = strFileName + "_" + now.Minute.ToString(); strFileName = strFileName + "_" + now.Millisecond.ToString(); MessageBox.Show("Saving content of size " + byteContent.Length.ToString() + " to file: " + strFileName); saveContentToFile(strFileName, byteContent); } } } }
// public static EcmQueryResult QueryFolder(DocumentModel doc, string query, int maxRow = 100) // { // EcmQueryResult ret = new EcmQueryResult(); // CEWSI.ObjectSetType objResponse = null; // // Perform the requested query // try // { // if (doc.IsUseCert == 1) // Addcert(doc.EcmUrl); // // Set up a connection to the web service. // // Fill in the security headers... // CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl); // // Create a search object // // Set up the scope for the query // // Set up the SQL for the search // CEWSI.RepositorySearch objSearch = new CEWSI.RepositorySearch(); // CEWSI.ObjectStoreScope objSearchScope = new CEWSI.ObjectStoreScope(); // objSearchScope.objectStore = doc.ObjectStore; // objSearch.SearchScope = objSearchScope; // objSearch.SearchSQL = query; // objSearch.maxElements = maxRow; // objSearch.maxElementsSpecified = true; // // Execute the search // objResponse = objBinding.ExecuteSearch(WSIUtil.GetLocalization(), objSearch); // } // catch (System.Net.WebException ex) // { // ret.ErrorCode = -1; // ret.ErrorMsg = "An exception occurred while querying: [" + ex.Message + "]\n" + ex.ToString(); // return ret; // } // catch (Exception allEx) // { // ret.ErrorCode = -1; // ret.ErrorMsg = "An exception occurred: [" + allEx.Message + "]\n" + allEx.ToString(); // return ret; // } // // Sanity check the results data // long lColumnCount = 0; // long lRowCount = 0; // long i; // if (objResponse == null || objResponse.Object == null) // { // ret.ErrorCode = 1; // ret.ErrorMsg = "The query completed successfully but the results were null"; // return ret; // } // if (objResponse.Object.Length < 1) // { // ret.ErrorCode = 1; // ret.ErrorMsg = "No results were found for this query - exiting"; // return ret; // } // lColumnCount = objResponse.Object[0].Property.Length; // if (lColumnCount < 1) // { // ret.ErrorCode = 1; // ret.ErrorMsg = "The query succeeded, but the results contain no properties - exiting"; // return ret; // } // /* //if( lColumnCount > 12 ) //{ // MessageBox.Show("The result set has more than 12 columns. Only the first 12 columns will be displayed"); // lColumnCount = 12; //} //*/ // // Query was successful; display a list of result rows // // First create a data table that has one column for each property in the // // returned data // System.Data.DataColumn dtCol; // System.Data.DataRow dtRow; // CEWSI.PropertyType prop; // CEWSI.ObjectValue[] objObjects = objResponse.Object; // lRowCount = objObjects.Length; // System.Data.DataTable dtblResults = new System.Data.DataTable("Results"); // for (i = 0; i < lColumnCount; i++) // { // dtCol = new System.Data.DataColumn(objObjects[0].Property[i].propertyId); // dtCol.DataType = System.Type.GetType("System.String"); // dtCol.DefaultValue = ""; // dtblResults.Columns.Add(dtCol); // } // // Populate the rows // for (i = 0; i < lRowCount; i++) // { // dtRow = dtblResults.NewRow(); // for (long iCol = 0; iCol < lColumnCount; iCol++) // { // prop = objObjects[i].Property[iCol]; // dtRow[prop.propertyId] = IdmObjectType.getPropertyValue(prop); // } // dtblResults.Rows.Add(dtRow); // } // ret.Result = dtblResults; // ret.ErrorCode = 1; // ret.ErrorMsg = "Success"; // return ret; // } // public static EcmQueryResult QueryFolder1(DocumentModel doc, string folderPath) // { // byte[] ret = null; // Addcert(doc.EcmUrl); // CEWSI.FNCEWS40PortTypeClient wseService = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl); // // Add default locale info to SOAP header // Localization objDefaultLocale = new Localization(); // objDefaultLocale.Locale = "en-US"; // // Set a reference to the document to retrieve // ObjectSpecification objDocumentSpec = new ObjectSpecification(); // objDocumentSpec.classId = "Document"; // objDocumentSpec.path = folderPath; // //objDocumentSpec.objectId = docId; // objDocumentSpec.objectStore = doc.ObjectStore; // // Create property filter object and set its attributes // PropertyFilterType objPropFilter = new PropertyFilterType(); // objPropFilter.maxRecursion = 4; // objPropFilter.maxRecursionSpecified = true; // // Create filter element array to hold IncludeProperties specifications // objPropFilter.IncludeProperties = new FilterElementType[4]; // // Create filter element for ContentElements property // objPropFilter.IncludeProperties[1] = new FilterElementType(); // objPropFilter.IncludeProperties[1].Value = "ContentElements"; // // Create an object request for a GetObjects operation // ObjectRequestType[] objObjectRequestTypeArray = new ObjectRequestType[1]; // objObjectRequestTypeArray[0] = new ObjectRequestType(); // objObjectRequestTypeArray[0].SourceSpecification = objDocumentSpec; // objObjectRequestTypeArray[0].PropertyFilter = objPropFilter; // // Call GetObjects operation to get document object and its properties // ObjectResponseType[] objObjectResponseTypeArray; // try // { // objObjectResponseTypeArray = wseService.GetObjects(objDefaultLocale, objObjectRequestTypeArray); // } // catch (System.Net.WebException ex) // { // Console.WriteLine("An exception occurred while requesting a document: [" + ex.Message + "]"); // return null; // } // // Get document object from the GetObjects response // ObjectValue objDocument = null; // if (objObjectResponseTypeArray[0] is SingleObjectResponse) // { // objDocument = ((SingleObjectResponse)objObjectResponseTypeArray[0]).Object; // } // // Get the ContentElements property of the Document object // ListOfObject prpContentElements = null; // foreach (PropertyType prpProperty in objDocument.Property) // { // if (prpProperty.propertyId == "ContentElements") // { // prpContentElements = (ListOfObject)prpProperty; // break; // } // } // // Get number of content elements // int intElementCount = (prpContentElements.Value == null) ? 0 : prpContentElements.Value.Length; // if (intElementCount == 0) // { // Console.WriteLine("The selected document has no content elements"); // Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // return null; // } // // Get the content from each content element of the document // for (int intElem = 0; intElem < intElementCount; intElem++) // { // // Get a ContentTransfer object from the ContentElements property collection // DependentObjectType objContentTransfer = prpContentElements.Value[intElem]; // // Construct element specification for GetContent request // ElementSpecificationType objElemSpecType = new ElementSpecificationType(); // objElemSpecType.itemIndex = intElem; // objElemSpecType.itemIndexSpecified = true; // objElemSpecType.elementSequenceNumber = 0; // objElemSpecType.elementSequenceNumberSpecified = false; // // Construct the GetContent request // ContentRequestType objContentReqType = new ContentRequestType(); // objContentReqType.cacheAllowed = true; // objContentReqType.cacheAllowedSpecified = true; // objContentReqType.id = "1"; // //objContentReqType.maxBytes = 100 * 1024; // //objContentReqType.maxBytesSpecified = true; // objContentReqType.maxBytesSpecified = false; // objContentReqType.startOffset = 0; // objContentReqType.startOffsetSpecified = true; // objContentReqType.continueFrom = null; // objContentReqType.ElementSpecification = objElemSpecType; // objContentReqType.SourceSpecification = objDocumentSpec; // ContentRequestType[] objContentReqTypeArray = new ContentRequestType[1]; // objContentReqTypeArray[0] = objContentReqType; // GetContentRequest objGetContentReq = new GetContentRequest(); // objGetContentReq.ContentRequest = objContentReqTypeArray; // objGetContentReq.validateOnly = false; // objGetContentReq.validateOnlySpecified = true; // // Call the GetContent operation // ContentResponseType[] objContentRespTypeArray = null; // try // { // objContentRespTypeArray = wseService.GetContent(objDefaultLocale, objGetContentReq); // } // catch (System.Net.WebException ex) // { // Console.WriteLine("An exception occurred while fetching content from a content element: [" + ex.Message + "]"); // Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // return null; // } // catch (Exception allEx) // { // Console.WriteLine("An exception occurred: [" + allEx.Message + "]"); // Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // return null; // } // // Process GetContent response // ContentResponseType objContentRespType = objContentRespTypeArray[0]; // if (objContentRespType is ContentErrorResponse) // { // ContentErrorResponse objContentErrorResp = (ContentErrorResponse)objContentRespType; // ErrorStackType objErrorStackType = objContentErrorResp.ErrorStack; // ErrorRecordType objErrorRecordType = objErrorStackType.ErrorRecord[0]; // Console.WriteLine("Error [" + objErrorRecordType.Description + "] occurred. " + " Err source is [" + objErrorRecordType.Source + "]"); // //Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // return null; // } // else if (objContentRespType is ContentElementResponse) // { // ContentElementResponse objContentElemResp = (ContentElementResponse)objContentRespType; // InlineContent objInlineContent = (InlineContent)objContentElemResp.Content; // ret = objInlineContent.Binary; // // Write content to file // //Stream outputStream = File.OpenWrite(strDocContentPath); // //outputStream.Write(objInlineContent.Binary, 0, objInlineContent.Binary.Length); // //outputStream.Close(); // Console.WriteLine("Document content has been written"); // //Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // } // else // { // Console.WriteLine("Unknown data type returned in content response: [" + objContentRespType.GetType().ToString() + "]"); // //Console.WriteLine("Press Enter to end"); // //Console.ReadLine(); // return null; // } // } // return new EcmQueryResult(); // } public static byte[] GetContenFile(DocumentModel doc, string docId) { byte[] ret = null; Addcert(doc.EcmUrl); CEWSI.FNCEWS40PortTypeClient wseService = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl); // Add default locale info to SOAP header Localization objDefaultLocale = new Localization(); objDefaultLocale.Locale = "en-US"; // Set a reference to the document to retrieve ObjectSpecification objDocumentSpec = new ObjectSpecification(); objDocumentSpec.classId = "Document"; objDocumentSpec.objectId = docId; objDocumentSpec.objectStore = doc.ObjectStore; // Create property filter object and set its attributes PropertyFilterType objPropFilter = new PropertyFilterType(); objPropFilter.maxRecursion = 4; objPropFilter.maxRecursionSpecified = true; // Create filter element array to hold IncludeProperties specifications objPropFilter.IncludeProperties = new FilterElementType[4]; // Create filter element for ContentElements property objPropFilter.IncludeProperties[1] = new FilterElementType(); objPropFilter.IncludeProperties[1].Value = "ContentElements"; // Create an object request for a GetObjects operation ObjectRequestType[] objObjectRequestTypeArray = new ObjectRequestType[1]; objObjectRequestTypeArray[0] = new ObjectRequestType(); objObjectRequestTypeArray[0].SourceSpecification = objDocumentSpec; objObjectRequestTypeArray[0].PropertyFilter = objPropFilter; // Call GetObjects operation to get document object and its properties ObjectResponseType[] objObjectResponseTypeArray; try { objObjectResponseTypeArray = wseService.GetObjects(objDefaultLocale, objObjectRequestTypeArray); } catch (System.Net.WebException ex) { Console.WriteLine("An exception occurred while requesting a document: [" + ex.Message + "]"); return(null); } // Get document object from the GetObjects response ObjectValue objDocument = null; if (objObjectResponseTypeArray[0] is SingleObjectResponse) { objDocument = ((SingleObjectResponse)objObjectResponseTypeArray[0]).Object; } // Get the ContentElements property of the Document object ListOfObject prpContentElements = null; foreach (PropertyType prpProperty in objDocument.Property) { if (prpProperty.propertyId == "ContentElements") { prpContentElements = (ListOfObject)prpProperty; break; } } // Get number of content elements int intElementCount = (prpContentElements.Value == null) ? 0 : prpContentElements.Value.Length; if (intElementCount == 0) { Console.WriteLine("The selected document has no content elements"); Console.WriteLine("Press Enter to end"); //Console.ReadLine(); return(null); } // Get the content from each content element of the document for (int intElem = 0; intElem < intElementCount; intElem++) { // Get a ContentTransfer object from the ContentElements property collection DependentObjectType objContentTransfer = prpContentElements.Value[intElem]; // Construct element specification for GetContent request ElementSpecificationType objElemSpecType = new ElementSpecificationType(); objElemSpecType.itemIndex = intElem; objElemSpecType.itemIndexSpecified = true; objElemSpecType.elementSequenceNumber = 0; objElemSpecType.elementSequenceNumberSpecified = false; // Construct the GetContent request ContentRequestType objContentReqType = new ContentRequestType(); objContentReqType.cacheAllowed = true; objContentReqType.cacheAllowedSpecified = true; objContentReqType.id = "1"; //objContentReqType.maxBytes = 100 * 1024; //objContentReqType.maxBytesSpecified = true; objContentReqType.maxBytesSpecified = false; objContentReqType.startOffset = 0; objContentReqType.startOffsetSpecified = true; objContentReqType.continueFrom = null; objContentReqType.ElementSpecification = objElemSpecType; objContentReqType.SourceSpecification = objDocumentSpec; ContentRequestType[] objContentReqTypeArray = new ContentRequestType[1]; objContentReqTypeArray[0] = objContentReqType; GetContentRequest objGetContentReq = new GetContentRequest(); objGetContentReq.ContentRequest = objContentReqTypeArray; objGetContentReq.validateOnly = false; objGetContentReq.validateOnlySpecified = true; // Call the GetContent operation ContentResponseType[] objContentRespTypeArray = null; try { objContentRespTypeArray = wseService.GetContent(objDefaultLocale, objGetContentReq); } catch (System.Net.WebException ex) { Console.WriteLine("An exception occurred while fetching content from a content element: [" + ex.Message + "]"); Console.WriteLine("Press Enter to end"); //Console.ReadLine(); return(null); } catch (Exception allEx) { Console.WriteLine("An exception occurred: [" + allEx.Message + "]"); Console.WriteLine("Press Enter to end"); //Console.ReadLine(); return(null); } // Process GetContent response ContentResponseType objContentRespType = objContentRespTypeArray[0]; if (objContentRespType is ContentErrorResponse) { ContentErrorResponse objContentErrorResp = (ContentErrorResponse)objContentRespType; ErrorStackType objErrorStackType = objContentErrorResp.ErrorStack; ErrorRecordType objErrorRecordType = objErrorStackType.ErrorRecord[0]; Console.WriteLine("Error [" + objErrorRecordType.Description + "] occurred. " + " Err source is [" + objErrorRecordType.Source + "]"); //Console.WriteLine("Press Enter to end"); //Console.ReadLine(); return(null); } else if (objContentRespType is ContentElementResponse) { ContentElementResponse objContentElemResp = (ContentElementResponse)objContentRespType; InlineContent objInlineContent = (InlineContent)objContentElemResp.Content; ret = objInlineContent.Binary; // Write content to file //Stream outputStream = File.OpenWrite(strDocContentPath); //outputStream.Write(objInlineContent.Binary, 0, objInlineContent.Binary.Length); //outputStream.Close(); Console.WriteLine("Document content has been written"); //Console.WriteLine("Press Enter to end"); //Console.ReadLine(); } else { Console.WriteLine("Unknown data type returned in content response: [" + objContentRespType.GetType().ToString() + "]"); //Console.WriteLine("Press Enter to end"); //Console.ReadLine(); return(null); } } return(ret); }