Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / ImportFileRequest.cs / 1 / ImportFileRequest.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Collections; using System.IO; using System.Collections.Generic; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Import a set of cards to the store: // Saves a list of cards into the store and implements the overwrite logic for roaming // class ImportFileRequest :UIAgentRequest { public ImportFileRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent ) : base( rpcHandle, inArgs, outArgs, parent ) { } // // Summary // Read the cards to be imported // protected override void OnMarshalInArgs() { } // // Summary // Save the cards to the store. If a card already exists // in the store, then the last card to be updated wins. // protected override void OnProcess() { RoamingStoreFile roamingFile = ParentRequest.GetContext(); if( null != roamingFile && null != roamingFile.Cards ) { try { StoreConnection connection = StoreConnection.GetConnection(); try { connection.BeginTransaction(); try { foreach ( InfoCard card in roamingFile.Cards ) { // // check if the card needs to be overwritten // The default overwrite logic overwrites the card based on time of last update // List param = new List (); param.Add( new QueryParameter( SecondaryIndexDefinition.ObjectTypeIndex, ( Int32 )StorableObjectType.InfoCard ) ); param.Add( new QueryParameter( SecondaryIndexDefinition.GlobalIdIndex, GlobalId.DeriveFrom( card.Id.ToString() ) ) ); DataRow row = connection.GetSingleRow( QueryDetails.FullRow, param.ToArray() ); // // If a card exists, compare the LastUpdate time // if ( null != row ) { using ( MemoryStream ms = new MemoryStream( row.GetDataField() ) ) { InfoCard existingCard = new InfoCard( ms ); if ( existingCard.LastUpdate < card.LastUpdate ) { IDT.TraceDebug( "Overwrite the existing card with id {0}", card.Id.AbsoluteUri ); card.IsImported = true; card.InstalledOn = DateTime.Now; card.Save( connection ); } } } else { IDT.TraceDebug( "Add a new card with id {0} to the store", card.Id.AbsoluteUri ); card.IsImported = true; card.InstalledOn = DateTime.Now; card.Save( connection ); } } connection.CommitTransaction(); AuditLog.AuditStoreImport(); } catch( Exception e ) { connection.RollbackTransaction(); if( IDT.IsFatal( e ) ) { throw; } throw IDT.ThrowHelperError( new ImportStoreException( SR.GetString( SR.InvalidImportFile ), e ) ); } } finally { connection.Close(); } } finally { // // Clear the roaming store file on completion. // roamingFile.Clear(); } } } protected override void OnMarshalOutArgs() { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MembershipPasswordException.cs
- EditorBrowsableAttribute.cs
- DataBindingList.cs
- ActivityTrace.cs
- COM2ComponentEditor.cs
- TriggerAction.cs
- TypeDescriptionProviderAttribute.cs
- UpdateExpressionVisitor.cs
- NoneExcludedImageIndexConverter.cs
- ConnectionStringsExpressionBuilder.cs
- UshortList2.cs
- SQLDoubleStorage.cs
- NTAccount.cs
- DataColumnPropertyDescriptor.cs
- EntityCodeGenerator.cs
- Gdiplus.cs
- Tokenizer.cs
- TickBar.cs
- EncodingInfo.cs
- PeerName.cs
- XmlnsDefinitionAttribute.cs
- SqlTrackingQuery.cs
- DrawListViewItemEventArgs.cs
- ListSortDescription.cs
- ThrowHelper.cs
- SineEase.cs
- CommandArguments.cs
- AlgoModule.cs
- PropertiesTab.cs
- XmlSchemaProviderAttribute.cs
- IdentityReference.cs
- SourceChangedEventArgs.cs
- ConstantProjectedSlot.cs
- TreeNodeCollection.cs
- TransactionalPackage.cs
- AppPool.cs
- PropertyValue.cs
- OdbcDataAdapter.cs
- StylusTouchDevice.cs
- DataGridViewRowCancelEventArgs.cs
- XPathNodeInfoAtom.cs
- CalloutQueueItem.cs
- CatalogPart.cs
- SessionParameter.cs
- CompilationLock.cs
- DataView.cs
- GC.cs
- GridView.cs
- ITextView.cs
- DataTableNewRowEvent.cs
- KeyValueInternalCollection.cs
- Int32Rect.cs
- DbProviderSpecificTypePropertyAttribute.cs
- ClientTarget.cs
- HtmlUtf8RawTextWriter.cs
- DesignerActionListCollection.cs
- UserPersonalizationStateInfo.cs
- ButtonFieldBase.cs
- TableLayoutPanelCellPosition.cs
- DefaultBindingPropertyAttribute.cs
- StrokeDescriptor.cs
- UntypedNullExpression.cs
- ToolboxService.cs
- WebPartMinimizeVerb.cs
- PrePostDescendentsWalker.cs
- SqlTopReducer.cs
- BaseProcessor.cs
- MenuItemStyleCollectionEditor.cs
- ParallelQuery.cs
- GenericsNotImplementedException.cs
- LineBreak.cs
- ZipIOLocalFileBlock.cs
- SubMenuStyleCollection.cs
- RichTextBoxConstants.cs
- ServiceOperationListItem.cs
- FastEncoderWindow.cs
- MeasurementDCInfo.cs
- XslVisitor.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- GlobalEventManager.cs
- _TransmitFileOverlappedAsyncResult.cs
- CheckBoxAutomationPeer.cs
- ProfessionalColorTable.cs
- TreeSet.cs
- EntityDataSourceContextCreatedEventArgs.cs
- DateTimePickerDesigner.cs
- DataSet.cs
- userdatakeys.cs
- StylusOverProperty.cs
- DataGridViewSortCompareEventArgs.cs
- ReliabilityContractAttribute.cs
- PublisherIdentityPermission.cs
- MonthCalendar.cs
- ComponentRenameEvent.cs
- ToolStripRenderEventArgs.cs
- SecurityKeyIdentifierClause.cs
- PipelineModuleStepContainer.cs
- IriParsingElement.cs
- Calendar.cs
- MarkedHighlightComponent.cs