/// <summary> /// Only constructor /// </summary> /// <param name="identity">Derived class identity</param> /// <param name="derivedComponentType">Derived class Type</param> /// <param name="engineType">Runtime engine Type</param> /// <param name="useNativeDllArgument">Runtime engine requires location details of native engine DLL</param> public LinkableComponentV1Base(IIdentifiable identity, ExternalType derivedComponentType, ExternalType engineType, bool useNativeDllArgument) : base(identity, derivedComponentType, engineType, useNativeDllArgument) { // Null URI's cause problems so initialise to something wrong var uri = new Uri(@"http://sourceforge.net/projects/fluidearth/"); var omiUri = new ArgumentUri(GetArgumentIdentity(Args.V1Omi), uri); // There is a design error should not have to add valueChanged in two ways here! omiUri.ValueChanged += new EventHandler<ArgumentBase.ValueChangedEventArgs>(omiUri_ValueChanged); Arguments.Add(omiUri); var argValue = Argument(GetArgumentIdentity(Args.V1Omi)).Value as ArgumentValueUri; argValue.ValueChanged += new EventHandler<ArgumentValueBase<Uri>.ValueChangedEventArgs>(OnArgOmiUriValueChanged); }
protected virtual ArgumentUri InitialiseArguments(ILinkableComponentVersion1 component1, List<Utilities.Standard1.Argument1> args1) { if (component1 == null) { var uri = new Uri(@"http://sourceforge.net/projects/fluidearth/"); var persistence = new ArgumentUri(GetArgumentIdentity(ArgsV1Wrapper.Persistence), uri); // For Uri's have to use a valid Url to initialise, then change to relevant value Arguments.Add(persistence); Arguments.Add(new ArgumentExternalType(GetArgumentIdentity(ArgsV1Wrapper.EngineExternalType), new ExternalType(DocumentAccessor))); if (_includeUpdateTimeInterval) Arguments.Add(new ArgumentTimeInterval(GetArgumentIdentity(ArgsV1Wrapper.UpdateTimeInterval), new TimeInterval())); if (args1 != null) foreach (var a1 in args1) Arguments.Add(new ArgumentStandard1(a1)); return persistence; } ArgumentTimeHorizon = new Time( component1.TimeHorizon.Start.ModifiedJulianDay, component1.TimeHorizon.End.ModifiedJulianDay); ExternalType component1Type = new ExternalType(DocumentAccessor); component1Type.Initialise(component1.GetType()); var uriP = new Uri( DocumentAccessor.Uri .LocalPath .Substring(0, DocumentAccessor.Uri.LocalPath.LastIndexOf('.')) + Caption + "Persist.xml"); var uriPersistence = new ArgumentUri(GetArgumentIdentity(ArgsV1Wrapper.Persistence), uriP); uriPersistence.ValueAsString = new Uri( DocumentAccessor.Uri .LocalPath .Substring(0, DocumentAccessor.Uri.LocalPath.LastIndexOf('.')) + Caption + "Persist.xml") .AbsoluteUri; Arguments.Add(uriPersistence); Arguments.Add(new ArgumentExternalType(GetArgumentIdentity(ArgsV1Wrapper.EngineExternalType), component1Type)); if (_includeUpdateTimeInterval) Arguments.Add(new ArgumentTimeInterval(GetArgumentIdentity(ArgsV1Wrapper.UpdateTimeInterval), new TimeInterval())); foreach (var a1 in args1) Arguments.Add(new ArgumentStandard1(a1)); return uriPersistence; }
protected void ConstuctComponent(ILinkableComponentVersion1 component1, ArgumentUri uriPersistence, List<Utilities.Standard1.Argument1> args1) { try { _convertingFromV1 = true; Construct(component1, args1); Initialize(); var uri = (uriPersistence.Value as ArgumentValueUri).Value; var xPersistence = new XDocument(Persist(DocumentAccessor)); xPersistence.Save(uri.LocalPath); } finally { _convertingFromV1 = false; } }