Here are drafts of a source code and a class diagram of what it should be about the usage of the database.

//-----------------------------------------------------------------------------
[Serializable]
public class AlarmPeriodicity
{
public int PeriodType { get; set; };
public DateTime Value { get; set; };
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmPeriodicityProperty : EntityProperty < AlarmPeriodicity >
{
public AlarmPeriodicityProperty(EntityItem owneritem)
: base(owneritem) { }
public AlarmPeriodicityProperty(EntityItem owneritem, AlarmPeriodicity value)
: base(owneritem, value) { }
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmItem : EntityItem
{
public StringEntityProperty Title { get { return _Title; } }
private StringEntityProperty _Title;
public AlarmPeriodicityProperty Periodicity { get { return _Periodicity; } }
private AlarmPeriodicityProperty _Periodicity;
public AlarmItem(IEntityCollection ownerset, UserItem creator)
: base(ownerset, creator)
{
}
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmsCollection : EntityCollection < AlarmItem >
{
public AlarmsCollection(SessionManager manager)
: base(manager, "Alarms")
{
}
}
//-----------------------------------------------------------------------------
// Methods raise an exception if user have no access right to the element.
//-----------------------------------------------------------------------------
[Serializable]
public class DatabaseConnexion : SessionManager
{
public AlarmsCollection Alarms { get { return _Alarms; } }
static private AlarmsCollection _Alarms;
public DatabaseConnexion(string usercode, string userpwd)
: base(usercode, userpwd) { }
static public void RunSample()
{
DatabaseConnexion session = new DatabaseConnexion("user", "password");
AlarmItem item1 = (AlarmItem)session.Alarms.CreateEntity();
item1.Lock();
item1.Edit();
item1.Title.Value = "Title";
item1.Periodicity.Value.PeriodType = 1;
item1.Apply();
item1.Unlock();
AlarmItem item2 = (AlarmItem)session.Alarms.CreateEntity();
item2.LockEdit();
item2.Title.Value = "Title";
item2.Periodicity.Value.PeriodType = 2;
item2.ApplyUnlock();
var list = from AlarmItem item
in session.Alarms
where ( item.Title.Value == "Title" )
select item;
session.Alarms.Lock();
session.Alarms.Edit();
foreach ( var item in list )
{
Console.WriteLine(item.Title.Value);
item.Title.Value = "Another Title";
}
session.Alarms.Cancel();
session.Alarms.Remove(item2);
session.Alarms.Unlock();
}
}
Projects have been started on May 2007 and the progress of the developments are:
- 80% for the Code Model: 1st release is scheduled for late 2009.
- 20% for the Entity Model: 1st release is scheduled for 2010 to 2012.