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
- ClientScriptManagerWrapper.cs
- ReturnEventArgs.cs
- OrderedDictionaryStateHelper.cs
- HttpStreamMessageEncoderFactory.cs
- CommentEmitter.cs
- BrowserCapabilitiesCompiler.cs
- DataTablePropertyDescriptor.cs
- CompilerTypeWithParams.cs
- CompareValidator.cs
- DataControlPagerLinkButton.cs
- DetailsViewUpdateEventArgs.cs
- CodeTypeDeclaration.cs
- KoreanLunisolarCalendar.cs
- DocumentApplicationDocumentViewer.cs
- WorkItem.cs
- SimpleTextLine.cs
- XmlSchemaSimpleContentRestriction.cs
- RelationshipDetailsCollection.cs
- InternalBase.cs
- GridViewColumnHeaderAutomationPeer.cs
- XmlILOptimizerVisitor.cs
- DrawingContextWalker.cs
- UserUseLicenseDictionaryLoader.cs
- AdornerLayer.cs
- input.cs
- ServiceMemoryGates.cs
- XamlDebuggerXmlReader.cs
- EncoderParameters.cs
- DataColumn.cs
- BitmapDownload.cs
- ValueQuery.cs
- OuterGlowBitmapEffect.cs
- TableItemPattern.cs
- SingleConverter.cs
- IgnorePropertiesAttribute.cs
- ChildChangedEventArgs.cs
- Convert.cs
- ListDesigner.cs
- ExceptionUtility.cs
- FileDetails.cs
- TraceListener.cs
- SecurityTokenException.cs
- ReceiveMessageRecord.cs
- DataSourceUtil.cs
- ConversionContext.cs
- SelectedPathEditor.cs
- DESCryptoServiceProvider.cs
- PipeStream.cs
- VisualBasicDesignerHelper.cs
- ISAPIRuntime.cs
- CharacterBuffer.cs
- UpDownBaseDesigner.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- ToolStripInSituService.cs
- EntityViewGenerator.cs
- StagingAreaInputItem.cs
- ToolStripDropDownMenu.cs
- basevalidator.cs
- HTMLTagNameToTypeMapper.cs
- EmptyReadOnlyDictionaryInternal.cs
- SettingsAttributes.cs
- AttributedMetaModel.cs
- SspiSecurityTokenParameters.cs
- unitconverter.cs
- TextTreeInsertElementUndoUnit.cs
- MouseOverProperty.cs
- Delegate.cs
- IntegrationExceptionEventArgs.cs
- CallbackException.cs
- WebRequestModuleElementCollection.cs
- EntityStoreSchemaGenerator.cs
- CultureInfo.cs
- WizardStepBase.cs
- QilStrConcatenator.cs
- WebPartTransformerCollection.cs
- RandomNumberGenerator.cs
- Internal.cs
- EventListener.cs
- HostedImpersonationContext.cs
- ListMarkerSourceInfo.cs
- CopyAttributesAction.cs
- FileChangeNotifier.cs
- Debugger.cs
- CharEnumerator.cs
- CursorConverter.cs
- ContentWrapperAttribute.cs
- WorkflowView.cs
- LongMinMaxAggregationOperator.cs
- CodeIdentifiers.cs
- ProtocolsConfiguration.cs
- SafeRightsManagementHandle.cs
- HierarchicalDataSourceIDConverter.cs
- ImageAutomationPeer.cs
- StaticFileHandler.cs
- Button.cs
- IRCollection.cs
- ChannelFactoryBase.cs
- PresentationTraceSources.cs
- ZipIOExtraField.cs
- QueryRelOp.cs