//#endregion // #region public void Open(...); public void Open( string filename_in, bool force_doNOTSave_in, OGen.NTier.Libraries.Generator.NotifyBack notifyBack_in ) { #region Checking... if (this.HasChanges) { if (!force_doNOTSave_in) { throw new Exception(string.Format( System.Globalization.CultureInfo.CurrentCulture, "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion this.FileName = filename_in; if (notifyBack_in != null) { notifyBack_in("opening...", true); } if (notifyBack_in != null) { notifyBack_in("- reading configuration from xml file", true); } this.metadata_ = XS__RootMetadata.Load_fromFile( this.FileName, false, true ); #region - reading metadata from business assembly string _debug_assembly = Path.Combine( this.ParentDirectoryname, businessAssembly( this.metadata_.MetadataExtendedCollection[0].ApplicationName, this.metadata_.MetadataExtendedCollection[0].ApplicationNamespace, false ) ); string _release_assembly = Path.Combine( this.ParentDirectoryname, businessAssembly( this.metadata_.MetadataExtendedCollection[0].ApplicationName, this.metadata_.MetadataExtendedCollection[0].ApplicationNamespace, true ) ); bool _debug_exits = File.Exists(_debug_assembly); bool _release_exits = File.Exists(_release_assembly); if (_debug_exits || _release_exits) { DateTime _debug_datetime = (_debug_exits) ? File.GetLastWriteTime(_debug_assembly) : DateTime.MinValue; DateTime _release_datetime = (_release_exits) ? File.GetLastWriteTime(_release_assembly) : DateTime.MinValue; string _assembly = (_debug_datetime > _release_datetime) ? _debug_assembly : _release_assembly; if (notifyBack_in != null) { notifyBack_in("- reading metadata from business assembly", true); } OGen.NTier.Libraries.Metadata.MetadataBusiness.XS__metadataBusiness _metadatabusiness; try { _metadatabusiness = OGen.NTier.Libraries.Metadata.MetadataBusiness.XS__metadataBusiness.Load_fromAssembly( _assembly, null, 0 ); } catch (Exception _ex) { throw new Exception(string.Format( System.Globalization.CultureInfo.CurrentCulture, "\n---\nfailed to load assembly: {0}\n---\n{1}\n---\n{2}\n---\n{3}\n---", _assembly, _ex.Message, _ex.InnerException, _ex.HelpLink )); //_assembly } _metadatabusiness.ApplicationName = this.metadata_.MetadataExtendedCollection[0].ApplicationName; _metadatabusiness.SaveState_toFile( Path.Combine( this.Directoryname, string.Format( System.Globalization.CultureInfo.CurrentCulture, "MD_{0}.OGenXSD-metadataBusiness.xml", this.metadata_.MetadataExtendedCollection[0].ApplicationName ) ) ); if (notifyBack_in != null) { notifyBack_in("- saving business metadata to xml file", true); } } else { if (notifyBack_in != null) { notifyBack_in("- WARNING: no metadata from business assembly to read from", true); } } #endregion #region - reading metadata from db if (notifyBack_in != null) { notifyBack_in("- reading metadata from db", true); } OGen.NTier.Libraries.Metadata.MetadataDB.XS__metadataDB _metadatadb = OGen.NTier.Libraries.Metadata.MetadataDB.XS__metadataDB.Load_fromDB( null, this.metadata_.MetadataExtendedCollection[0].SubAppName, this.metadata_, 0, this.metadata_dbconnectionstrings().Convert_toArray() ); // NOTE: this is very important, every parameter / information // that's not comming from the database is empty, // and needs to be filled in order to be serialized to the xml file: _metadatadb.ApplicationName = this.metadata_.MetadataExtendedCollection[0].ApplicationName; for (int ff, tt, t = 0; t < this.metadata_.MetadataExtendedCollection[0].Tables.TableCollection.Count; t++) { for (int f = 0; f < this.metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection.Count; f++) { if (this.metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].IsViewPK) { tt = _metadatadb.Tables.TableCollection.Search( this.metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].Name, !this.metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (tt < 0) { continue; } ff = _metadatadb.Tables.TableCollection[tt].TableFields.TableFieldCollection.Search( this.metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].Name, !this.metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (ff < 0) { continue; } _metadatadb.Tables.TableCollection[ tt ].TableFields.TableFieldCollection[ ff ].IsPK = true; } } } for (int i = 0; i < this.metadata_.MetadataFiles.MetadataFiles.Count; i++) { if ( this.metadata_.MetadataFiles.MetadataFiles[i].XMLFileType == OGen.NTier.Libraries.Metadata.MetadataDB.XS__metadataDB.METADATADB ) { if (notifyBack_in != null) { notifyBack_in("- saving db metadata to xml file", true); } //--- BUG: using old db information //metadata_.MetadataDBCollection[0].SaveState_toFile( // Path.Combine( // Directoryname, // metadata_.MetadataFiles.MetadataFiles[i].XMLFileName // ) //); //--- DEBUG: using new db information _metadatadb.SaveState_toFile( Path.Combine( this.Directoryname, this.metadata_.MetadataFiles.MetadataFiles[i].XMLFileName ) ); break; } } #endregion if (notifyBack_in != null) { notifyBack_in("- re-reading configuration from xml file", true); } this.metadata_ = XS__RootMetadata.Load_fromFile( this.FileName, false, true ); if (notifyBack_in != null) { notifyBack_in("... finished", true); } }
//#region public Methods... //#region public void New(...); public void New( string applicationPath_in, string applicationName_in, string namespace_in, OGen.NTier.Libraries.Metadata.MetadataExtended.XS_dbType[] dbs_in, OGen.NTier.Libraries.Generator.NotifyBack notifyBack_in ) { throw new Exception("// ToDos: not implemented!"); //int _justadded; //if (notifyBack_in != null) notifyBack_in("creating...", true); //#region cDBMetadata _metadata_temp = new cDBMetadata(); ...; //cDBMetadata _metadata_temp = new cDBMetadata(); //_metadata_temp.ApplicationName = applicationName_in; //_metadata_temp.Namespace = namespace_in; //_metadata_temp.DBs.Clear(); //for (int d = 0; d < dbs_in.Length; d++) { // _justadded = _metadata_temp.DBs.Add( // dbs_in[d].DBServerType, // false // ); // _metadata_temp.DBs[_justadded].CopyFrom( // dbs_in[d] // ); // //if (d == 0) { // // // ToDos: here! document this behaviour and describe it throught unit testing // // // first item in the array, represents default db connection // // _metadata_temp.Default_DBServerType = _metadata_temp.DBs[_justadded].DBServerType; // // _metadata_temp.Default_ConfigMode = _metadata_temp.DBs[_justadded].Connections[0].ConfigMode; // //} //} //_metadata_temp.GUIDDatalayer = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDatalayer_proxy = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDatalayer_UTs = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDBusinesslayer = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDBusinesslayer_proxy = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDBusinesslayer_UTs = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDBusiness_client = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDistributedlayer_webservices_server = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDistributedlayer_webservices_client = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDistributedlayer_remoting_server = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDDistributedlayer_remoting_client = System.Guid.NewGuid().ToString("D").ToUpper(); //_metadata_temp.GUIDTest = System.Guid.NewGuid().ToString("D").ToUpper(); //#endregion //if (notifyBack_in != null) notifyBack_in("- generating xml file", true); //#region string _xmlfile = ...; //string _xmlfile = string.Format( // System.Globalization.CultureInfo.CurrentCulture, // //"{0}{1}OGen-metadatas{1}MD_{2}-{3}.OGen-metadata.xml", // "{0}{1}OGen-metadatas{1}MD_{2}.OGen-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/applicationName_in // // first item in the array, represents default db connection // ///*3*/, dbs_in[0].DBServerType.ToString() //); //#endregion //_metadata_temp.SaveState_toFile(_xmlfile); //if (notifyBack_in != null) notifyBack_in("... finished!", true); //if (notifyBack_in != null) notifyBack_in("", true); //Open(_xmlfile, true, notifyBack_in); }