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
- KnownColorTable.cs
- ServicesExceptionNotHandledEventArgs.cs
- ping.cs
- XPathSelectionIterator.cs
- InputMethod.cs
- FormClosedEvent.cs
- IItemContainerGenerator.cs
- InfiniteTimeSpanConverter.cs
- TextRangeBase.cs
- HMACSHA384.cs
- DropSource.cs
- HttpResponse.cs
- RenderTargetBitmap.cs
- DetailsViewRow.cs
- SliderAutomationPeer.cs
- SetterBaseCollection.cs
- RequestCachePolicyConverter.cs
- HtmlObjectListAdapter.cs
- AnnotationService.cs
- HybridDictionary.cs
- LocationChangedEventArgs.cs
- TextBoxDesigner.cs
- UpdateTranslator.cs
- MissingFieldException.cs
- TextElementEditingBehaviorAttribute.cs
- DoubleAverageAggregationOperator.cs
- AbstractExpressions.cs
- DragEvent.cs
- TableHeaderCell.cs
- XmlUtf8RawTextWriter.cs
- NetStream.cs
- WindowCollection.cs
- BindingContext.cs
- shaper.cs
- WindowsFormsSynchronizationContext.cs
- UriTemplateCompoundPathSegment.cs
- HtmlWindowCollection.cs
- TableItemPatternIdentifiers.cs
- SimpleWebHandlerParser.cs
- ManipulationStartedEventArgs.cs
- securitymgrsite.cs
- PostBackTrigger.cs
- Triangle.cs
- keycontainerpermission.cs
- IgnoreDataMemberAttribute.cs
- updatecommandorderer.cs
- TargetException.cs
- SettingsPropertyWrongTypeException.cs
- MissingSatelliteAssemblyException.cs
- AuthenticationServiceManager.cs
- pingexception.cs
- ConnectionStringsExpressionEditor.cs
- SecurityDocument.cs
- DataGridViewTextBoxColumn.cs
- _NestedSingleAsyncResult.cs
- XmlSchemaCollection.cs
- DBSqlParserTable.cs
- SessionParameter.cs
- XmlSortKey.cs
- JulianCalendar.cs
- UndoUnit.cs
- DesigntimeLicenseContext.cs
- RegistryKey.cs
- ActiveXHost.cs
- MarkupProperty.cs
- QueueException.cs
- DataBoundControlAdapter.cs
- ValueUtilsSmi.cs
- Int64Animation.cs
- ListParagraph.cs
- OrderedDictionary.cs
- _NtlmClient.cs
- SelectionUIHandler.cs
- BooleanExpr.cs
- SqlPersonalizationProvider.cs
- CFStream.cs
- BuildProviderAppliesToAttribute.cs
- SoapObjectInfo.cs
- DocComment.cs
- COSERVERINFO.cs
- PnrpPermission.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- ReadOnlyPropertyMetadata.cs
- ActivityTrace.cs
- ToolStripGripRenderEventArgs.cs
- SystemWebExtensionsSectionGroup.cs
- StrokeCollection2.cs
- XmlHierarchicalDataSourceView.cs
- ParameterBuilder.cs
- IgnoreFileBuildProvider.cs
- SafeArchiveContext.cs
- ToolStripSplitStackLayout.cs
- StaticExtension.cs
- TextLine.cs
- xsdvalidator.cs
- DurableInstancingOptions.cs
- FieldBuilder.cs
- ForEachAction.cs
- TagElement.cs
- Control.cs