Core
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.IO;
|
||||
using Sarand.PatientMgr.Win.Dbas.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.PatientMgr.Win.Dbas.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.App
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmSystem_WinDbas : SpmSystem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Static initialisation.
|
||||
public static void InitStatics ()
|
||||
{
|
||||
// Initialise static environment values.
|
||||
ComputerName = System.Environment.MachineName;
|
||||
UserName = Environment.UserName;
|
||||
ApplicationPath = System.Reflection.Assembly.GetEntryAssembly().Location;
|
||||
ApplicationFolder = Path.GetDirectoryName(ApplicationPath);
|
||||
AssemblyBuildAt = FileUtil.GetFileLastWriteTime(ApplicationPath);
|
||||
|
||||
// Initialise other statics.
|
||||
SpmFileUtil.InitStatics();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmSystem_WinDbas (PropertySet properties) : base(properties)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// D a t a M a n a g e r s
|
||||
//-------------------------------------------------------------------
|
||||
public override SpmAdmissionMgr CreateAdmissionMgr (SpmUserContext userContext)
|
||||
{
|
||||
return new SpmAdmissionMgr_Dbas(userContext);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmAdmissionMgr_Dbas : SpmAdmissionMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmAdmissionMgr_Dbas (SpmUserContext userContext) :
|
||||
base(userContext)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.IO;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Utils
|
||||
{
|
||||
//=======================================================================
|
||||
public static class SpmDbDfnGenerator
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
public class DbDfnGeneratorResultData
|
||||
{
|
||||
public bool Success { get; internal set; }
|
||||
public String ErrorMessage { get; internal set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
//private static string messageBoxTitle = "PatientMgr database definition generator";
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Generate database definitions.</summary>
|
||||
public static DbDfnGeneratorResultData Generate (String connectionString)
|
||||
{
|
||||
DbDfnGeneratorResultData resultData = new DbDfnGeneratorResultData();
|
||||
|
||||
// Locate output folder:
|
||||
String directory = GetOutputFolder(resultData);
|
||||
if (String.IsNullOrEmpty(directory) || !FileUtil.IsDirectory(directory)) return resultData;
|
||||
|
||||
// Open database.
|
||||
// NB Must be ODBC connection - especially to retrieve index columns.
|
||||
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
|
||||
config.connectionString = connectionString;
|
||||
SacsDatabase database = SacsDatabaseConsole.OpenOdbcDatabase(config);
|
||||
|
||||
// Generate database definition:
|
||||
GenerateDatabaseDefinition(database, directory, resultData);
|
||||
return resultData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private static bool GenerateDatabaseDefinition (SacsDatabase database, String directory, DbDfnGeneratorResultData resultData)
|
||||
{
|
||||
|
||||
DatabaseDefinitionGenerator.Config config = new DatabaseDefinitionGenerator.Config();
|
||||
config.Database = database;
|
||||
config.OutputDirectory = directory;
|
||||
config.NamespaceDefinition = "Sarand.PatientMgr.Core.App";
|
||||
config.NamespaceTableObjects = "Sarand.PatientMgr.Win.Dbas.Internal";
|
||||
config.ClassnameDefinition = "SpmDbDfn";
|
||||
config.TablesExcluded.AddRange(new String[] { "NextId", "SaCode", "SaCodeType", "SaSecItem", "SaSecurityItem", "SaSecLink", "SaSecurityLink", "SaItemData", "SaItemDoc", "SaItemOption", "SaInterface", "SaInterfaceProcess", "SaInterfaceProcessMessage", "SaInterfaceDataItem", "SaInterfaceProcessDataItem", "SaAttrUpdate" });
|
||||
// Columns to exclude from update.
|
||||
config.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost");
|
||||
// Table class.
|
||||
config.TableClass.NamespaceBaseClass = "Sarand.PatientMgr.Win.Dbas.Data";
|
||||
config.TableClass.BaseClass = "SpmDbDataItem";
|
||||
config.TableClass.MandatoryConstructorDbInfo = true;
|
||||
// Generate database definition.
|
||||
DatabaseDefinitionGenerator generator = new DatabaseDefinitionGenerator();
|
||||
resultData.Success = generator.Generate(config);
|
||||
return resultData.Success;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private static String GetOutputFolder (DbDfnGeneratorResultData resultData)
|
||||
{
|
||||
String fn = "SpmDbDfnGenerator.GetOutputFolder";
|
||||
String assemblyDirectory = FileUtil.GetParentDirectory((Assembly.GetAssembly(typeof(DatabaseDefinitionGenerator)).Location));
|
||||
String directory = assemblyDirectory;
|
||||
Logger.Debug(fn + " Assembly folder: " + directory);
|
||||
// Locate the parent of the 'Workspace' solution root folder.
|
||||
String projectFolder = "Workspace";
|
||||
while (!String.IsNullOrEmpty(directory))
|
||||
{
|
||||
if (FileUtil.IsDirectory(directory + Path.DirectorySeparatorChar + projectFolder))
|
||||
{
|
||||
break;
|
||||
}
|
||||
directory = FileUtil.GetParentDirectory(directory);
|
||||
}
|
||||
if (String.IsNullOrEmpty(directory))
|
||||
{
|
||||
resultData.ErrorMessage = "Failed to find '" + projectFolder + "' solution root folder in assembly path:\n\n" + assemblyDirectory;
|
||||
Logger.Warn(resultData.ErrorMessage);
|
||||
return String.Empty;
|
||||
}
|
||||
// Code files are generated to '..\Dbas\Generated\PatientMgr\' folder.
|
||||
directory += Path.DirectorySeparatorChar + "Database" + Path.DirectorySeparatorChar + "Generated" + Path.DirectorySeparatorChar + "PatientMgr";
|
||||
Logger.Debug(fn + " Output folder: " + directory);
|
||||
if (!FileUtil.ValidateDirectory(directory, true))
|
||||
{
|
||||
resultData.ErrorMessage = "Output folder not found:\n\n" + directory;
|
||||
Logger.Warn(resultData.ErrorMessage);
|
||||
return String.Empty;
|
||||
}
|
||||
return directory;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.IO;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Utils
|
||||
{
|
||||
//=======================================================================
|
||||
/// <summary>
|
||||
/// Static implementations of fucntions required by FileUtil.
|
||||
/// </summary>
|
||||
public class SpmFileUtil
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Initialise statics.
|
||||
public static void InitStatics ()
|
||||
{
|
||||
FileUtil.DirectoryExists = IsDirectory;
|
||||
FileUtil.DirectoryGetParent = GetParentDirectory;
|
||||
FileUtil.DirectoryCreateDirectory = CreateDirectory;
|
||||
FileUtil.FileExists = IsFile;
|
||||
FileUtil.FileReadAllLines = FileReadAllLines;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// D i r e c t o r y
|
||||
//-------------------------------------------------------------------
|
||||
public static bool IsDirectory (String directoryPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Directory.Exists(directoryPath);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("SlmFileUtil.IsDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return false;
|
||||
}
|
||||
public static String GetParentDirectory (String filepath)
|
||||
{
|
||||
try
|
||||
{
|
||||
DirectoryInfo parentDirectoryInfo = Directory.GetParent(filepath);
|
||||
if (parentDirectoryInfo != null)
|
||||
return parentDirectoryInfo.FullName;
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("SlmFileUtil.GetParentDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return String.Empty;
|
||||
}
|
||||
public static bool CreateDirectory (String directoryPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
DirectoryInfo info = Directory.CreateDirectory(directoryPath);
|
||||
return info.Exists;
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("SlmFileUtil.CreateDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return false;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// F i l e
|
||||
//-------------------------------------------------------------------
|
||||
public static bool IsFile (String filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.Exists(filePath);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("SlmFileUtil.IsFile " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return false;
|
||||
}
|
||||
public static String[] FileReadAllLines (String filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.ReadAllLines(filePath);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("SlmFileUtil.FileReadAllLines " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return new String[0];
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user