protected override void OnSave(Stream outStrm) { if (_setupOp == null) { return; } // NOTE: Do not close or dispose BinaryWriter, as this will close the Stream BinaryWriter writer = new BinaryWriter(outStrm); int version = 3; writer.Write(version); // ************** VERSION 3 ************** //// Item 1: FeatureClassName: The orphan junction feature class of the Geometric Network for the underground conveyance system. FeatureClassName networkDataset = null; if (_setupOp.GeometricNetwork != null) { networkDataset = ((IDataset)_setupOp.GeometricNetwork.OrphanJunctionFeatureClass).FullName as FeatureClassName; } PersistenceHelper.Save <FeatureClassName>(outStrm, networkDataset); //// Item 2: FeatureClassName: The inlet feature class FeatureClassName inletClass = null; if (_setupOp.InletClass != null) { inletClass = ((IDataset)_setupOp.InletClass).FullName as FeatureClassName; } PersistenceHelper.Save <FeatureClassName>(outStrm, inletClass); //// Item 3: RasterDatasetName: The DEM dataset RasterDatasetName demDataset = null; if (_setupOp.DEM != null) { IDataset dem = ((IRasterAnalysisProps)_setupOp.DEM).RasterDataset as IDataset; if (dem != null) { demDataset = dem.FullName as RasterDatasetName; } } PersistenceHelper.Save <RasterDatasetName>(outStrm, demDataset); //// Item 4: Boolean: Whether to smooth boundaries writer.Write(_setupOp.SmoothBoundaries); //// Item 5: Boolean: Whether to include upstream pipe ends writer.Write(_setupOp.IncludeUpstreamPipeEnds); //// Item 6: Boolean: Whether to exclude downstream pipe ends writer.Write(_setupOp.ExcludeDownstreamPipeEnds); //// Item 7: RasterDatasetName: The flow direction dataset RasterDatasetName flowDirDataset = null; if (_setupOp.FlowDirection != null) { IDataset flowDir = ((IRasterAnalysisProps)_setupOp.FlowDirection).RasterDataset as IDataset; if (flowDir != null) { flowDirDataset = flowDir.FullName as RasterDatasetName; } } PersistenceHelper.Save <RasterDatasetName>(outStrm, flowDirDataset); //// Item 8: FeatureClassName: The catchment feature class FeatureClassName catchmentClass = null; if (_setupOp.Catchments != null) { catchmentClass = ((IDataset)_setupOp.Catchments).FullName as FeatureClassName; } PersistenceHelper.Save <FeatureClassName>(outStrm, catchmentClass); //// Item 9: Boolean: Whether to exclude disabled nodes writer.Write(_setupOp.ExcludeDisabledNodes); }
//TODO: Implement load and save protected override void OnLoad(Stream inStrm) { SetupOp setupOp = null; try { // NOTE: Do not close or dispose BinaryReader, as this will close the Stream BinaryReader reader = new BinaryReader(inStrm); int version = reader.ReadInt32(); // NOTE: With change to Add-In architecture, this extension is NOT backwards compatible with versions 1 and 2 if (version == 3) { //// Version 3: //// Item 1: FeatureClassName: The orphan junction feature class of the Geometric Network for the underground conveyance system. //// Item 2: FeatureClassName: The inlet feature class //// Item 3: RasterDatasetName: The DEM dataset //// Item 4: Boolean: Whether to smooth boundaries //// Item 5: Boolean: Whether to include upstream pipe ends //// Item 6: Boolean: Whether to exclude downstream pipe ends //// Item 7: RasterDatasetName: The flow direction dataset //// Item 8: FeatureClassName: The catchment feature class //// Item 9: Boolean: Whether to exclude disabled nodes setupOp = new SetupOp(); setupOp.ResultsDirectory = this.MxDocDirectoryName; setupOp.ScratchDirectory = this.TemporaryDirectory; FeatureClassName networkJunctionName = null; PersistenceHelper.Load <FeatureClassName>(inStrm, ref networkJunctionName); INetworkClass junctionClass = _SafeOpen(networkJunctionName) as INetworkClass; if (junctionClass != null) { setupOp.GeometricNetwork = junctionClass.GeometricNetwork; } FeatureClassName inletClassName = null; PersistenceHelper.Load <FeatureClassName>(inStrm, ref inletClassName); setupOp.InletClass = _SafeOpen(inletClassName) as IFeatureClass; RasterDatasetName demName = null; PersistenceHelper.Load <RasterDatasetName>(inStrm, ref demName); IRasterDataset demDataset = _SafeOpen(demName) as IRasterDataset; if (demDataset != null) { setupOp.DEM = demDataset.CreateDefaultRaster(); } setupOp.SmoothBoundaries = reader.ReadBoolean(); setupOp.IncludeUpstreamPipeEnds = reader.ReadBoolean(); setupOp.ExcludeDownstreamPipeEnds = reader.ReadBoolean(); RasterDatasetName flowDirName = null; PersistenceHelper.Load <RasterDatasetName>(inStrm, ref flowDirName); IRasterDataset flowDirDataset = _SafeOpen(flowDirName) as IRasterDataset; if (flowDirDataset != null) { setupOp.FlowDirection = flowDirDataset.CreateDefaultRaster(); } FeatureClassName catchmentClassName = null; PersistenceHelper.Load <FeatureClassName>(inStrm, ref catchmentClassName); setupOp.Catchments = _SafeOpen(catchmentClassName) as IFeatureClass; setupOp.ExcludeDisabledNodes = reader.ReadBoolean(); } _setupOp = setupOp; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.GetType().FullName + ": " + ex.Message); } }