// public void New( // string applicationPath_in, // string documentationName_in, // dNotifyBack notifyBack_in // ) { // if (notifyBack_in != null) notifyBack_in("creating...", true); // #region DocMetadata _metadata_temp = new DocMetadata(); ...; // XS__documentation _metadata_temp = new XS__documentation(); // _metadata_temp.DocumentationName = documentationName_in; // #endregion // // if (notifyBack_in != null) notifyBack_in("- generating xml file", true); // #region string _xmlfile = ...; // string _xmlfile = string.Format( // "{0}{1}OGenDoc-metadatas{1}MD_{2}.OGenDoc-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/documentationName_in // ); // #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 // ); // } #endregion #region public void Open(...); public void Open( string filename_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format( "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion filename_ = filename_in; if (notifyBack_in != null) { notifyBack_in("opening...", true); } if (notifyBack_in != null) { notifyBack_in("- reading metadata from xml file", true); } diagram_ = XS__diagram.Load_fromFile( filename_ )[0]; diagram_.FilePath = filename_; if (notifyBack_in != null) { notifyBack_in("... finished", true); } }
// #region Methods... #region //public void New(...); // public void New( // string applicationPath_in, //string documentationName_in, // dNotifyBack notifyBack_in // ) { // if (notifyBack_in != null) notifyBack_in("creating...", true); // #region XS_Schema _metadata_temp = new XS_Schema(); ...; // XS_Schema _metadata_temp = new XS_Schema(); // _metadata_temp.DocumentationName = documentationName_in; // #endregion // // if (notifyBack_in != null) notifyBack_in("- generating xml file", true); // #region string _xmlfile = ...; // string _xmlfile = string.Format( // "{0}{1}OGenXSD-metadatas{1}MD_{2}.OGenXSD-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/documentationName_in // ); // #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 // ); // } #endregion // #region public void Open(...); public void Open( string filenameextendedmetadata_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format("{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name)); } } #endregion filenameextendedmetadata_ = filenameextendedmetadata_in; if (notifyBack_in != null) { notifyBack_in("opening...", true); } if (notifyBack_in != null) { notifyBack_in("- reading metadata from xml files", true); } rootmetadata_ = XS__RootMetadata.Load_fromFile( filenameextendedmetadata_, false ); if (notifyBack_in != null) { notifyBack_in("... finished", true); } }
// public void New( // string applicationPath_in, // string documentationName_in, // dNotifyBack notifyBack_in // ) { // if (notifyBack_in != null) notifyBack_in("creating...", true); // #region DocMetadata _metadata_temp = new DocMetadata(); ...; // XS__documentation _metadata_temp = new XS__documentation(); // _metadata_temp.DocumentationName = documentationName_in; // #endregion // // if (notifyBack_in != null) notifyBack_in("- generating xml file", true); // #region string _xmlfile = ...; // string _xmlfile = string.Format( // "{0}{1}OGenDoc-metadatas{1}MD_{2}.OGenDoc-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/documentationName_in // ); // #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 // ); // } #endregion #region public void Open(...); public void Open( string filename_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format( "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion filename_ = filename_in; if (notifyBack_in != null) notifyBack_in("opening...", true); if (notifyBack_in != null) notifyBack_in("- reading metadata from xml file", true); diagram_ = XS__diagram.Load_fromFile( filename_ )[0]; diagram_.FilePath = filename_; if (notifyBack_in != null) notifyBack_in("... finished", true); #region more Checking... if (notifyBack_in != null) notifyBack_in("checking...", true); OGen.lib.datalayer.PostgreSQL.DBUtils_convert_Postgresql _utils_pgsql = new OGen.lib.datalayer.PostgreSQL.DBUtils_convert_Postgresql(); OGen.lib.datalayer.SQLServer.DBUtils_convert_SQLServer _utils_sqls = new OGen.lib.datalayer.SQLServer.DBUtils_convert_SQLServer(); Nullable<System.Data.DbType> _dbtype_psql; Nullable<System.Data.DbType> _dbtype_sqls; bool _isUsingPostgreSQL = false; bool _isUsingSQLServer = false; DBTableField[] _dbtablefields; DBTableField[] _dbtablefields2; XS_objectType.FK[] __fks; System.Collections.Generic.Dictionary<string, XS_objectType.FK> _fks; bool _foundFKTable; bool _foundFKField; for (int l = 0; l < diagram_.LayerCollection.Count; l++) { for (int o = 0; o < diagram_.LayerCollection[l].ObjectCollection.Count; o++) { _dbtablefields = diagram_.Table_search(l, o).TableFields(); diagram_.Table_search(l, o).TableFKs( out __fks, out _fks ); #region checking for invalid foreign keys if ( _fks.ContainsKey("") ) { throw new Exception(string.Format( "invalid foreign key at table: {0}.? -> {1}.?", diagram_.Table_search(l, o).TableName, _fks[""].FK_TableName )); } #endregion #region _isUsingPostgreSQL = ...; _isUsingSQLServer = ...; for (int f = 0; f < _dbtablefields.Length; f++) { if ( (_dbtablefields[f].PostgreSQLTypeName != null) && (_dbtablefields[f].PostgreSQLTypeName.Trim() != "") ) { _isUsingPostgreSQL = true; } if ( (_dbtablefields[f].SQLServerTypeName != null) && (_dbtablefields[f].SQLServerTypeName.Trim() != "") ) { _isUsingSQLServer = true; } if ( _isUsingPostgreSQL && _isUsingSQLServer ) { break; } } #endregion for (int f = 0; f < _dbtablefields.Length; f++) { #region checking if db server type supported if ( !_isUsingPostgreSQL && !_isUsingSQLServer ) { throw new Exception(string.Format( "no db type defined (should use at least one of the supported db servers: PostgreSQL or SQLServer)", _dbtablefields[f].TableName, _dbtablefields[f].Name )); } #endregion #region checking postgresql field type . . . _dbtype_psql = null; if ( _isUsingPostgreSQL ) { if ( (_dbtablefields[f].PostgreSQLTypeName == null) || (_dbtablefields[f].PostgreSQLTypeName.Trim() == "") ) { throw new Exception(string.Format( "invalid table field type - empty postgresql type: {0}.{1}", _dbtablefields[f].TableName, _dbtablefields[f].Name )); } _dbtype_psql = _utils_pgsql.XDbType2DbType( _utils_pgsql.XDbType_Parse( _dbtablefields[f].PostgreSQLTypeName, false ) ); } #endregion #region checking sql server field type . . . _dbtype_sqls = null; if ( _isUsingSQLServer ) { if ( (_dbtablefields[f].SQLServerTypeName == null) || (_dbtablefields[f].SQLServerTypeName.Trim() == "") ) { throw new Exception(string.Format( "invalid table field type - empty sql server type: {0}.{1}", _dbtablefields[f].TableName, _dbtablefields[f].Name )); } _dbtype_sqls = _utils_sqls.XDbType2DbType( _utils_sqls.XDbType_Parse( _dbtablefields[f].SQLServerTypeName, false ) ); } #endregion #region checking if field types match . . . if ( _isUsingPostgreSQL && _isUsingSQLServer ) { if ( (_dbtype_psql == null) || (_dbtype_sqls == null) || ( _dbtype_psql.Value != _dbtype_sqls.Value ) ) { throw new Exception(string.Format( "table field types don't match: {0}.{1}", _dbtablefields[f].TableName, _dbtablefields[f].Name )); } } #endregion #region //checking FKs . . . //if ( // (_dbtablefields[f].FK_TableName != null) // && // (_dbtablefields[f].FK_TableName.Trim() != "") //) { // _foundFKTable = false; // _foundFKField = false; // for (int l2 = 0; l2 < diagram_.LayerCollection.Count; l2++) { // for (int o2 = 0; o2 < diagram_.LayerCollection[l2].ObjectCollection.Count; o2++) { // if ( // diagram_.Table_search(l2, o2).TableName // == // _dbtablefields[f].FK_TableName // ) { // _dbtablefields2 = diagram_.Table_search(l2, o2).TableFields(); // for (int f2 = 0; f2 < _dbtablefields2.Length; f2++) { // if ( // _dbtablefields2[f2].Name // == // _dbtablefields[f].FK_FieldName // ) { // if ( // _dbtablefields2[f2].PostgreSQLTypeName // != // _dbtablefields[f].PostgreSQLTypeName // ) { // throw new Exception(string.Format( // "foreign key postgresql db type mismatch: {0}.{1}", // _dbtablefields[f].FK_TableName, // _dbtablefields[f].FK_FieldName // )); // } // if ( // _dbtablefields2[f2].SQLServerTypeName // != // _dbtablefields[f].SQLServerTypeName // ) { // throw new Exception(string.Format( // "foreign key sql server db type mismatch: {0}.{1}", // _dbtablefields[f].FK_TableName, // _dbtablefields[f].FK_FieldName // )); // } // _foundFKField = true; // break; // } // } // _foundFKTable = true; // break; // } // } // } // if (!_foundFKTable) { // throw new Exception(string.Format( // "can't find foreign key TABLE: {0}.{1}", // _dbtablefields[f].FK_TableName, // _dbtablefields[f].FK_FieldName // )); // } // if (!_foundFKField) { // throw new Exception(string.Format( // "can't find foreign key FIELD: {0}.{1}", // _dbtablefields[f].FK_TableName, // _dbtablefields[f].FK_FieldName // )); // } //} #endregion #region checking FKs . . . if ( _fks.ContainsKey( _dbtablefields[f].Name ) ) { _foundFKTable = false; _foundFKField = false; for (int l2 = 0; l2 < diagram_.LayerCollection.Count; l2++) { for (int o2 = 0; o2 < diagram_.LayerCollection[l2].ObjectCollection.Count; o2++) { if ( diagram_.Table_search(l2, o2).TableName == _fks[_dbtablefields[f].Name].FK_TableName ) { _dbtablefields2 = diagram_.Table_search(l2, o2).TableFields(); for (int f2 = 0; f2 < _dbtablefields2.Length; f2++) { if ( _dbtablefields2[f2].Name == _fks[_dbtablefields[f].Name].FK_TableFieldName ) { if ( ( (_dbtablefields2[f2].PostgreSQLTypeName == null) != (_dbtablefields[f].PostgreSQLTypeName == null) ) || ( //_dbtablefields2[f2].PostgreSQLTypeName //!= //_dbtablefields[f].PostgreSQLTypeName !( (_dbtablefields2[f2].PostgreSQLTypeName == _dbtablefields[f].PostgreSQLTypeName) || ( (_dbtablefields2[f2].PostgreSQLTypeName == "serial") && (_dbtablefields[f].PostgreSQLTypeName == "integer") ) || ( (_dbtablefields[f].PostgreSQLTypeName == "serial") && (_dbtablefields2[f2].PostgreSQLTypeName == "integer") ) || ( (_dbtablefields2[f2].PostgreSQLTypeName == "bigserial") && (_dbtablefields[f].PostgreSQLTypeName == "bigint") ) || ( (_dbtablefields[f].PostgreSQLTypeName == "bigserial") && (_dbtablefields2[f2].PostgreSQLTypeName == "bigint") ) ) ) ) { throw new Exception(string.Format( "foreign key postgresql db type mismatch: {0}.{1} -> {2}.{3}", diagram_.Table_search(l, o).TableName, _dbtablefields[f].Name, _fks[_dbtablefields[f].Name].FK_TableName, _fks[_dbtablefields[f].Name].FK_TableFieldName )); } if ( ( (_dbtablefields2[f2].SQLServerTypeName == null) != (_dbtablefields[f].SQLServerTypeName == null) ) || ( _dbtablefields2[f2].SQLServerTypeName != _dbtablefields[f].SQLServerTypeName ) ) { throw new Exception(string.Format( "foreign key sql server db type mismatch: {0}.{1} -> {2}.{3}", diagram_.Table_search(l, o).TableName, _dbtablefields[f].Name, _fks[_dbtablefields[f].Name].FK_TableName, _fks[_dbtablefields[f].Name].FK_TableFieldName )); } _foundFKField = true; break; } } _foundFKTable = true; break; } } } if (!_foundFKTable) { throw new Exception(string.Format( "can't find foreign key TABLE: {0}.{1} -> {2}.{3}", diagram_.Table_search(l, o).TableName, _dbtablefields[f].Name, _fks[_dbtablefields[f].Name].FK_TableName, _fks[_dbtablefields[f].Name].FK_TableFieldName )); } if (!_foundFKField) { throw new Exception(string.Format( "can't find foreign key FIELD: {0}.{1} -> {2}.{3}", diagram_.Table_search(l, o).TableName, _dbtablefields[f].Name, _fks[_dbtablefields[f].Name].FK_TableName, _fks[_dbtablefields[f].Name].FK_TableFieldName )); } } #endregion } } } if (notifyBack_in != null) notifyBack_in("... finished", true); #endregion }
//#endregion // #region public void Open(...); public void Open( string filename_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format( "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion Filename = filename_in; if (notifyBack_in != null) notifyBack_in("opening...", true); if (notifyBack_in != null) notifyBack_in("- reading configuration from xml file", true); metadata_ = XS__RootMetadata.Load_fromFile( Filename, false ); #region - reading metadata from business assembly string _debug_assembly = Path.Combine( ParentDirectoryname, businessAssembly( metadata_.MetadataExtendedCollection[0].ApplicationName, metadata_.MetadataExtendedCollection[0].ApplicationNamespace, false ) ); string _release_assembly = Path.Combine( ParentDirectoryname, businessAssembly( metadata_.MetadataExtendedCollection[0].ApplicationName, 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.lib.metadata.metadataBusiness.XS__metadataBusiness _metadatabusiness; try { _metadatabusiness = OGen.NTier.lib.metadata.metadataBusiness.XS__metadataBusiness.Load_fromAssembly( _assembly, null, 0 ); } catch (Exception _ex) { throw new Exception(string.Format( "\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 = metadata_.MetadataExtendedCollection[0].ApplicationName; _metadatabusiness.SaveState_toFile( Path.Combine( Directoryname, string.Format( "MD_{0}.OGenXSD-metadataBusiness.xml", 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.lib.metadata.metadataDB.XS__metadataDB _metadatadb = OGen.NTier.lib.metadata.metadataDB.XS__metadataDB.Load_fromDB( null, metadata_.MetadataExtendedCollection[0].SubAppName, metadata_, 0, 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 = metadata_.MetadataExtendedCollection[0].ApplicationName; for (int ff, tt, t = 0; t < metadata_.MetadataExtendedCollection[0].Tables.TableCollection.Count; t++) { for (int f = 0; f < metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection.Count; f++) { if (metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].isViewPK) { tt = _metadatadb.Tables.TableCollection.Search( metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].Name, !metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (tt < 0) continue; ff = _metadatadb.Tables.TableCollection[tt].TableFields.TableFieldCollection.Search( metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].Name, !metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (ff < 0) continue; _metadatadb.Tables.TableCollection[ tt ].TableFields.TableFieldCollection[ ff ].isPK = true; } } } for (int i = 0; i < metadata_.MetadataFiles.MetadataFiles.Count; i++) { if ( metadata_.MetadataFiles.MetadataFiles[i].XMLFileType == OGen.NTier.lib.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( Directoryname, metadata_.MetadataFiles.MetadataFiles[i].XMLFilename ) ); break; } } #endregion if (notifyBack_in != null) notifyBack_in("- re-reading configuration from xml file", true); metadata_ = XS__RootMetadata.Load_fromFile( Filename, false ); 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.lib.metadata.metadataExtended.XS_dbType[] dbs_in, dNotifyBack 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( // //"{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); }
// #region Methods... #region //public void New(...); // public void New( // string applicationPath_in, //string documentationName_in, // dNotifyBack notifyBack_in // ) { // if (notifyBack_in != null) notifyBack_in("creating...", true); // #region XS_Schema _metadata_temp = new XS_Schema(); ...; // XS_Schema _metadata_temp = new XS_Schema(); // _metadata_temp.DocumentationName = documentationName_in; // #endregion // // if (notifyBack_in != null) notifyBack_in("- generating xml file", true); // #region string _xmlfile = ...; // string _xmlfile = string.Format( // "{0}{1}OGenXSD-metadatas{1}MD_{2}.OGenXSD-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/documentationName_in // ); // #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 // ); // } #endregion // #region public void Open(...); public void Open( string filenameextendedmetadata_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format("{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name)); } } #endregion filenameextendedmetadata_ = filenameextendedmetadata_in; if (notifyBack_in != null) notifyBack_in("opening...", true); if (notifyBack_in != null) notifyBack_in("- reading metadata from xml files", true); rootmetadata_ = RootMetadata.Load_fromFile( filenameextendedmetadata_, false ); if (notifyBack_in != null) notifyBack_in("... finished", true); }
//#endregion // #region public void Open(...); public void Open( string filename_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format( "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion Filename = filename_in; if (notifyBack_in != null) { notifyBack_in("opening...", true); } if (notifyBack_in != null) { notifyBack_in("- reading configuration from xml file", true); } metadata_ = XS__RootMetadata.Load_fromFile( Filename, false ); #region - reading metadata from business assembly string _debug_assembly = Path.Combine( ParentDirectoryname, businessAssembly( metadata_.MetadataExtendedCollection[0].ApplicationName, metadata_.MetadataExtendedCollection[0].ApplicationNamespace, false ) ); string _release_assembly = Path.Combine( ParentDirectoryname, businessAssembly( metadata_.MetadataExtendedCollection[0].ApplicationName, 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.lib.metadata.metadataBusiness.XS__metadataBusiness _metadatabusiness; try { _metadatabusiness = OGen.NTier.lib.metadata.metadataBusiness.XS__metadataBusiness.Load_fromAssembly( _assembly, null, 0 ); } catch (Exception _ex) { throw new Exception(string.Format( "\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 = metadata_.MetadataExtendedCollection[0].ApplicationName; _metadatabusiness.SaveState_toFile( Path.Combine( Directoryname, string.Format( "MD_{0}.OGenXSD-metadataBusiness.xml", 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.lib.metadata.metadataDB.XS__metadataDB _metadatadb = OGen.NTier.lib.metadata.metadataDB.XS__metadataDB.Load_fromDB( null, metadata_.MetadataExtendedCollection[0].SubAppName, metadata_, 0, 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 = metadata_.MetadataExtendedCollection[0].ApplicationName; for (int ff, tt, t = 0; t < metadata_.MetadataExtendedCollection[0].Tables.TableCollection.Count; t++) { for (int f = 0; f < metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection.Count; f++) { if (metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].isViewPK) { tt = _metadatadb.Tables.TableCollection.Search( metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].Name, !metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (tt < 0) { continue; } ff = _metadatadb.Tables.TableCollection[tt].TableFields.TableFieldCollection.Search( metadata_.MetadataExtendedCollection[0].Tables.TableCollection[t].TableFields.TableFieldCollection[f].Name, !metadata_.MetadataExtendedCollection[0].DBs.Supports_MySQL ); if (ff < 0) { continue; } _metadatadb.Tables.TableCollection[ tt ].TableFields.TableFieldCollection[ ff ].isPK = true; } } } for (int i = 0; i < metadata_.MetadataFiles.MetadataFiles.Count; i++) { if ( metadata_.MetadataFiles.MetadataFiles[i].XMLFileType == OGen.NTier.lib.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( Directoryname, metadata_.MetadataFiles.MetadataFiles[i].XMLFilename ) ); break; } } #endregion if (notifyBack_in != null) { notifyBack_in("- re-reading configuration from xml file", true); } metadata_ = XS__RootMetadata.Load_fromFile( Filename, false ); if (notifyBack_in != null) { notifyBack_in("... finished", true); } }
// public void New( // string applicationPath_in, // string documentationName_in, // dNotifyBack notifyBack_in // ) { // if (notifyBack_in != null) notifyBack_in("creating...", true); // #region DocMetadata _metadata_temp = new DocMetadata(); ...; // XS__documentation _metadata_temp = new XS__documentation(); // _metadata_temp.DocumentationName = documentationName_in; // #endregion // // if (notifyBack_in != null) notifyBack_in("- generating xml file", true); // #region string _xmlfile = ...; // string _xmlfile = string.Format( // "{0}{1}OGenDoc-metadatas{1}MD_{2}.OGenDoc-metadata.xml", // /*0*/applicationPath_in, // /*1*/System.IO.Path.DirectorySeparatorChar, // /*2*/documentationName_in // ); // #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 // ); // } #endregion #region public void Open(...); public void Open( string filename_in, bool force_doNOTsave_in, dNotifyBack notifyBack_in ) { #region Checking... if (this.hasChanges) { if (!force_doNOTsave_in) { throw new Exception(string.Format( "{0}.{1}.Open(): - must save before open", this.GetType().Namespace, this.GetType().Name )); } } #endregion filename_ = filename_in; if (notifyBack_in != null) notifyBack_in("opening...", true); if (notifyBack_in != null) notifyBack_in("- reading metadata from xml file", true); diagram_ = XS__diagram.Load_fromFile( filename_ )[0]; diagram_.FilePath = filename_; if (notifyBack_in != null) notifyBack_in("... finished", true); }