public RecognizedInstallationLogic(ExistingInstallationLogic existingInstallationLogic, KnownSystemLogic knownSystemLogic)
        {
            this.existingInstallationLogic = existingInstallationLogic;
            this.knownSystemLogic          = knownSystemLogic;

            var rsisSystem = this.knownSystemLogic.RsisSystem;

            var rsisSecondaryDatabases = rsisSystem.SecondaryDatabases.Where(sd => sd.DataPackageRank.HasValue).OrderBy(sd => sd.DataPackageRank.Value);

            secondaryDatabasesIncludedInDataPackages = new List <DatabaseAbstraction.Database>();
            foreach (var rsisSecondaryDatabase in rsisSecondaryDatabases)
            {
                var secondaryDatabaseInfo = this.existingInstallationLogic.RuntimeConfiguration.GetSecondaryDatabaseInfo(rsisSecondaryDatabase.Name);
                secondaryDatabasesIncludedInDataPackages.Add(DatabaseAbstraction.DatabaseOps.CreateDatabase(secondaryDatabaseInfo));
            }
        }
        public RecognizedInstallationLogic( ExistingInstallationLogic existingInstallationLogic, KnownSystemLogic knownSystemLogic )
        {
            this.existingInstallationLogic = existingInstallationLogic;
            this.knownSystemLogic = knownSystemLogic;

            var rsisSystem = this.knownSystemLogic.RsisSystem;
            database = DatabaseAbstraction.DatabaseOps.CreateDatabase( existingInstallationLogic.RuntimeConfiguration.PrimaryDatabaseInfo,
                                                                       rsisSystem.PrimaryDatabaseOracleTableSpaces );

            var rsisSecondaryDatabases = rsisSystem.SecondaryDatabases.Where( sd => sd.DataPackageRank.HasValue ).OrderBy( sd => sd.DataPackageRank.Value );
            secondaryDatabasesIncludedInDataPackages = new List<DatabaseAbstraction.Database>();
            foreach( var rsisSecondaryDatabase in rsisSecondaryDatabases ) {
                var secondaryDatabaseInfo = this.existingInstallationLogic.RuntimeConfiguration.GetSecondaryDatabaseInfo( rsisSecondaryDatabase.Name );
                secondaryDatabasesIncludedInDataPackages.Add( DatabaseAbstraction.DatabaseOps.CreateDatabase( secondaryDatabaseInfo, rsisSecondaryDatabase.OracleTableSpaces ) );
            }
        }
        private static DevelopmentInstallation getInstallation( string path )
        {
            var generalInstallationLogic = new GeneralInstallationLogic( path );
            var existingInstallationLogic = new ExistingInstallationLogic(
                generalInstallationLogic,
                new InstallationConfiguration( ConfigurationStatics.MachineIsStandbyServer, path, true ) );

            if( existingInstallationLogic.RuntimeConfiguration.RsisInstallationId.HasValue ) {
                ConfigurationLogic.Init2();
                SystemListStatics.RefreshSystemList();
                var knownSystemLogic =
                    new KnownSystemLogic(
                        SystemListStatics.RsisSystemList.Systems.Single(
                            i => i.DevelopmentInstallationId == existingInstallationLogic.RuntimeConfiguration.RsisInstallationId.Value ) );
                var recognizedInstallationLogic = new RecognizedInstallationLogic( existingInstallationLogic, knownSystemLogic );
                return new RecognizedDevelopmentInstallation( generalInstallationLogic, existingInstallationLogic, knownSystemLogic, recognizedInstallationLogic );
            }

            return new UnrecognizedDevelopmentInstallation( generalInstallationLogic, existingInstallationLogic );
        }