<div dir="ltr"><div>Hi Ralf,</div><div>I have now hidden the implementation details of DataUpdater class on your suggestion using a unique_ptr. <br></div><div>How should we proceed on the server side?</div><div>I think you would have to create a directory in files area where the updated databases would be hosted. I could then update the URL in the code.<br> </div><div><br></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><div><p>As bankdata_dir() points to a read only location (by default
/usr/share/ktoblzcheck/ on unix like os), there is some work
required to provide a writeable location, where the updater can
save the download files and ktoblzcheck can read downloaded
bankdata files. The rule is to search the writeable location first
and then, if no file has been found, the readonly location. <br>
</p>
<p>The writeable location would be on unix like os:
/home/xxx/.local/share and on windows: C:\users\xxx\.local\share
where C:\users\xxx can be retrieved from the USERPROFILE
environment variable.</p></div></blockquote><div>Yes, that sounds good, <br></div><div>But in the <b>current </b>code, the dated_file list is populated from the bankdata_dir() first and if no files are found then it checks for BANKDATA_PATH. <br></div><div>Is there any reson for this?</div><div><br></div><div>Thanks.</div><div>Prasun<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 7 Sep 2020 at 03:54, Ralf Habacker <<a href="mailto:ralf.habacker@freenet.de">ralf.habacker@freenet.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<div>Am 27.08.20 um 14:53 schrieb Prasun
Kumar:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Hi Ralf,</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>A static function in the class
AccountNumberCheck::updateDatabase(),<br>
which updates the database when called by the client and
returns the <br>
state of operation e.g<br>
<br>
bool AccountNumberCheck::updateDatabase()</div>
</blockquote>
<div> </div>
<div>As suggested here: <a href="https://mail.kde.org/pipermail/kde-finance-apps/2020-May/000835.html" target="_blank">https://mail.kde.org/pipermail/kde-finance-apps/2020-May/000835.html</a></div>
<div>I have added an API to update databases as a class,
'DataUpdater'. I have created a separate class for this</div>
<div>as the downloading code is too big to put in one method
considering modularity and also since these methods were</div>
<div>independent of the AccountNumberCheck class. The only
required method I see now is the bankdata_dir() for downloaded</div>
<div>file installation but since it's a static method, it can be
accessed without any AccountNumberCheck object.</div>
</div>
</blockquote>
<p>As bankdata_dir() points to a read only location (by default
/usr/share/ktoblzcheck/ on unix like os), there is some work
required to provide a writeable location, where the updater can
save the download files and ktoblzcheck can read downloaded
bankdata files. The rule is to search the writeable location first
and then, if no file has been found, the readonly location. <br>
</p>
<p>The writeable location would be on unix like os:
/home/xxx/.local/share and on windows: C:\users\xxx\.local\share
where C:\users\xxx can be retrieved from the USERPROFILE
environment variable.<br>
</p>
<blockquote type="cite">
<div dir="ltr">
<div>Also, since the class is in the same header file, a client
doesn't need to import extra headers, however, they would
surely</div>
<div>need to create a DataUpdater object.<br>
</div>
</div>
</blockquote>
This looks good except the fact, that there are implementation
details in the public header, which would better to placed into a
private class following the hints mentioned at
<a href="https://herbsutter.com/gotw/_100/" target="_blank">https://herbsutter.com/gotw/_100/</a>.<br>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
</div>
</blockquote>
<p>Regards</p>
<p>Ralf</p>
<blockquote type="cite">
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, 27 Aug 2020 at 12:29,
Ralf Habacker <<a href="mailto:ralf.habacker@freenet.de" target="_blank">ralf.habacker@freenet.de</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am
18.08.20 um 06:54 schrieb Prasun Kumar:<br>
> Hi mentors,<br>
> I have incorporated most of your suggestions into the
project and I am <br>
> working on the few left.<br>
> <br>
> The remaining milestones in the proposed project are the
creation of API <br>
> to integrate the<br>
> databases into other applications and the additional
subtask of a <br>
> download API to fetch<br>
> updated databases from a server.<br>
> <br>
> The downloading API's flow is somewhat clear to me but it
would be <br>
> helpful to have some pointers<br>
> for the first API.<br>
> <br>
<br>
A static function in the class
AccountNumberCheck::updateDatabase(),<br>
which updates the database when called by the client and
returns the <br>
state of operation e.g<br>
<br>
bool AccountNumberCheck::updateDatabase()<br>
<br>
or<br>
<br>
typedef enum {} UpdateState;<br>
<br>
UpdateState AccountNumberCheck::updateDatabase();<br>
<br>
<br>
Regards<br>
Ralf<br>
</blockquote>
</div>
</blockquote>
</div>
</blockquote></div>