unit model.intf;
{$mode ObjFPC}{$H+}
{-$define usepli}
interface
uses bc_datetime,model.memitem,bc_pluginapih,help.crt;
type
{ alias from memitem }
InvnItem = model.memitem.InvnItem;
ImemItem = model.memitem.ImemItem;
ImemTransaction = model.memitem.ImemTransaction;
{ alias from bc_datetime }
IbcDateTime = bc_datetime.IbcDateTime;
{$interfaces corba}
ImemItemList = interface(IbcIterable)['{9A14F454-7F13-497C-AD49-71B8A69E35B7}']
function get_Item(anIndex: ptrint): TmemBaseItem;
procedure set_Item(anIndex: ptrint;aValue: TmemBaseItem);
{ adds and returns a new item of type provided in constructor }
function AddItem: TmemBaseItem;
{ clears the list of any items }
procedure Clear;
{ deletes and frees the item @ index }
procedure DeleteItem(anIndex: ptrint);
{ removes and returns the item with "anID", if found in list else returns NIL;
param: "anID"(to find) ~ if -1 is passed, it will return the first item in list or nil on empty }
function ExtractItem(anID: ptrint): TmemBaseItem;
{ returns the index of "anItem" in list, or returns -1 on NOT found }
function IndexOf(anItem: TmemBaseItem): ptrint;
{ positions the cursor just before the first item, used with "MoveNext" & "Peek" }
procedure MoveBeforeFirst;
{ steps to the next item in the list, used with "MoveBeforeFirst" & "Peek" }
function MoveNext: boolean;
{ provides access to the current item @ cursor, used with "MoveBeforeFirst" & "MoveNext" }
function Peek: TmemBaseItem;
{ provides access to the individual items, default property }
property Items[anIndex: ptrint]: TmemBaseItem read get_Item write set_Item; default;
end; { ImemItemList }
ItiItem = interface['{6AE7CCF8-911A-4E8B-A94F-2893F8C0DEBC}']
function get_Dati: IbcDateTime;
function get_ID: ptrint;
function get_Spare: string;
function get_Title: string;
function Obj: TObject;
procedure set_ID(aValue: ptrint);
procedure set_Spare(aValue: string);
procedure set_Title(aValue: string);
procedure Assign(const aSrc: ItiItem);
property DateTime: IbcDateTime read get_Dati;
property ID: ptrint read get_ID write set_ID;
property Spare: string read get_Spare write set_Spare;
property Title: string read get_Title write set_Title;
end; { ItiItem }
{ ItiItemList }
ItiItemList = interface(IbcIterable)['{0B7E0D98-8CC5-4026-BA11-E4D1D57D354F}']
function get_Item(anIdx: ptrint): ItiItem;
procedure set_Item(anIdx: ptrint;aValue: ItiItem);
function AddItem(anItem: ItiItem): ptrint;
function AddItemSorted(anItem: ItiItem): ptrint;
function AddNewItem: ItiItem;
procedure Clear;
procedure DeleteItem(anIndex: ptrint);
function GetItemFromID(anID: ptrint): ItiItem;
function GetItemFromTitle(const aTitle: string): ItiItem;
function IndexOf(anItem: ItiItem): ptrint;
procedure UpdateItem(var anItem: ItiItem); { free's the incoming item afterwards!!! }
property Count: ptrint read CountItems;
property Items[anIdx: ptrint]: ItiItem read get_Item write set_Item; default;
end; { ItiItemList }
{ ImemImporter is a service that imports memento-items from an external source,
takes the name of a source- table/file/webaddress and imports the data into the
"aTarget" list in raw text-format, returns the number of items imported as result;
params: NO creation-params just do:
pointer(fImporter):= PluginMgr.GetPliSvcDefaultWeak('ImemImporter');
...use it...and remember to:
fImporter.Obj.Free; fImporter:= nil; when you're done }
ImemImporter = interface(IbcCorba)['{3601C1ED-789A-4D41-B38C-00D497E564B8}']
{ takes the name of a source- table/file/webaddress and imports the data into the
"aTarget" list in raw text-format, returns the number of items imported as result }
function ImportData(const aSourceName: shortstring;aTarget: ImemItemList): ptrint;
end; { ImemImporter }
{ the actual model/datastore api, service gets automagically destroyed on program-end }
ImemModelMain = interface(IbcCorba)['{5AE326B6-AA94-43FA-BDF6-A05A5F3B0636}']
function get_Databasename: string;
procedure set_Databasename(aValue: string);
function AddMemItem(const aMemItem: ImemItem): ptrint;
function GetMemItemByID(anID: ptrint;out aMemItem: ImemItem): boolean; overload;
function GetMemItemByID(anID: ptrint): ImemItem; overload;
function GetMemItemList(anItemList: ImemItemList): boolean;
function GetMemTitleIdList(aTitleIdList: ItiItemList): boolean;
function ImportMementos(const aSourceName: shortstring): ptrint; // returns -97..0 on error, positive is count of items
procedure RemoveMemItemByID(anID: ptrint);
procedure UpdateMemItem(const aMemItem: ImemItem);
property Databasename: string read get_Databasename write set_Databasename;
end; { ImemModel }
{ ImemTransactionManager reacts to user actions }
ImemTransactionManager = interface(IbcCorba)['{9118526B-15B6-453C-BE15-16EECE8251C3}']
procedure EditMementoByID(const anId: ptrint);
procedure FetchMementoByID(const anIdStr: string);
procedure FetchTitleList;
function FetchSearchList(const aSearchMask: string;out aList: ItiItemList): boolean;
procedure ImportMementos(const aSourceName: shortstring);
procedure CommitTransaction;
function InTransaction: boolean;
procedure RollbackTransaction;
function StartTransaction: ImemTransaction;
end; { ImemTransactionManager }
{ }
ImemViewModelMain = interface(IbcCorba)['{DD9FD4C9-C5E8-4A34-A3BF-BA0FF0B87E1D}']
function get_Provider: IobsProvider;
function get_TitleIdList: ItiItemList;
function get_TrxMan: ImemTransactionManager;
procedure set_Provider(aValue: IobsProvider);
function DataStoreName: string;
function HandlePliNotify(aHandle,aMsg,aWParam,aLParam: ptrint;const aText: shortstring): ptrint;
property Provider: IobsProvider read get_Provider write set_Provider;
property TitleIdList: ItiItemList read get_TitleIdList;
property TrxManager: ImemTransactionManager read get_TrxMan;
end; { ImemViewModelMain }
{ }
ImemViewMain = interface(IbcCorba)['{14E0C6AF-65E9-4F1A-950C-3FF8115858AF}']
function get_Observer: IobsSubscriber;
function get_Form: TcrtView;
function get_ViewModel: ImemViewModelMain;
procedure set_Observer(aValue: IobsSubscriber);
procedure set_Form(aValue: TcrtView);
procedure set_ViewModel(aValue: ImemViewModelMain);
procedure HandleObsNotify(aReason: ptrint; aNotifyClass: TObject; UserData: pointer);
procedure Show;
property Observer: IobsSubscriber read get_Observer write set_Observer;
property Form: TcrtView read get_Form write set_Form;
property ViewModel: ImemViewModelMain read get_ViewModel write set_ViewModel;
end; { ImemViewMain }
{$interfaces com}
implementation
end.