FinTP Application GUI #3

GitHub Repository – FinTP Configuration Wizzard


On this third post for RSoC program, I will present you the user interface i am working at for FinTP project. If you read my last post you should know by now that in order to configurate FinTP you have to write XML configuration files for all the connectors parts of the application.

Here is an example of a possible XML file for a particular connector.

There are some mappings for the interface, every sectionGroup in XML goes to a separate tab in UI and all its child tags goes on tab’s page as elements which can be labels, fields, drop-down menus, etc.

The purpose of this application is to read the Xml file and create the interface for it. You can then modify fields and update the current Xml or write a new one.

Until now this is how it looks. I’m using QDomDocument which is a DOM parser, while it parse the xml file it populates the UI with Qt widgets. Depending on a tag’s name, its attributes or inner text can become combo-boxes, line edits or labels.

I have also added a menu for this interface where user can open another xml file, can save the interface into a new one or it can update the existing file. These function are still under work at this time, I have to learn more about Qt signals and slots mechanism.
Until next time I will try to fix them and add some new functionalities that my mentor told me, one of them is to use XSLT files to transform our xml files into something else.

#3 User-Interface Improvements


In the last two weeks I have continued to work at the user interface for the FinTp project. I finished the jQuery part for the populating of the table with the entries from the data base, the pagination option, the add, edit and delete option for each entry in the table and now I am doing small improvements to the way the interface looks.

I am doing these little improvements using jQuery and CSS, and as an example of what I am doing, I had to make sure that the header of the table doesn’t disappear when the user scrolls down or that the columns of the table are resizable.

Week III

Hello there,

I hope you’re doing well. These weeks I’ve been busy with working on the user-interface. I finished the logical part with javascript so now I am arranging it (so a lot of CSS). Our interface should contain all the facilities that we’ve implement at the begining. I had to pay very much attention to details and keep in mind that out interface should run on every browser from chrome to IE. And one command were supported by a browser and not by other so you should keep this in mind when you work with web pages.

I have learned about gradient, invisible pixels and other things to make my interface more stylish. I have also worked on some tests for our java application for one of our resources to make it more general.



FinTP – Configuration Wizzard


This is my second post for RSoC. Last time i was telling you how vast this project is and how many things are involved to create a secured and reliable product which can be used by financial institutions.

Until now i have been working on the core part of it and i wrote cpp unit tests for some of the methods that the Transport library contains. This library have all the functions necessary to manage message queueing. As a side note, C++ is incredibly fast but sometimes it’s a bit difficult to read because all that boilerplate code.

As i was telling you in the end of my first post , I was going to work on a GUI for FinTP. A very important part of FinTP are the connectors which put messages in a local queue to be sent to a remote queue manager.
Here is an easy to understand schema i recieved from my mentor.

This application will be dinamically configured through an XML file. The main usage scenario will be something like this:

a. Application -> Load FinTPGui.config: contains user interface components description ( tab, labels, fields… )
b. User -> Choose configuration file type to be generated: read from FinTPGui.config ( tags)
c. User -> Fill in all generated fields
d. Application -> Validate fields (using xmlschema)
e. Application -> Save field values to FinTPGui.config
f. User->Confirm to generate FinTP.config file
g. Application -> Validate section constraints (eg. if last filter for Fetcher has type WMQ)
h. Application -> Save final config file to disk

The first problem I have encountered was how to parse an XML file ? Luckily the qt library already had a class for it called QXmlReader. With it I could parse an XML and generate separate fields in GUI for all xml section/tags.
I use qt 5.x and i have to say i’m impressed of the capabilities of Widgets .

Until next time i will develop some more features for this app, and in the future it will also be available on mobile devices. See you soon.

#2 User-Interface

A month has nearly passed since the start of the FinTp project in which I managed to learn new and interesting things and complete all of my tasks. In the last 2 weeks I started to work with JQuery, which is a multi-browser JavaScript library designed to simplify the client-side scripting of HTML, and HTML5.

First was the documentation process in which I learn how to work with these tools and also the power of JQuery and HTML5. I used them to create a user-interface witch interrogates the server, retrieves the data and displays it in a table, which had different options, such as adding a new entry in the table, deleting and editing an existing entry.

The server that I used returned the data in a JSON (JavaScript Object Notation) format and because I used JQuery it was very simple to parse through the data. For the pagination of the table I used a plugin named JPages which offered a lot of interesting and useful features and made my life easier.

As an environment I used Eclipse because it offers support for HTML5 and JQuery.

# Week II

Another interesting week has passed in which I learned a lot and managed to
complete my tasks. The first two days, I documented all that I have done in the
last week. So remember: any project requires a proper documentation.
After that the exciting part: jquery which is a multi-browser JavaScript library
designed to simplify the client-side scripting of HTML. I had to use jquery and
HTML5 to build a user-interface which would interrogate the server with resources
(see post #WeekI). I spend a day learning JavaScript and then focusing on my tasks.

I used JSON (JavaScript Object Notation) which it would be something like a
collection of name/value pairs: {obj1: [{ key1:valu1 , key2:value2 },
{ "key3":"value3" , "key4":"value4" }]}. I used the jquery to extract, process the
http response and then I put all these data in a table.
There I had to pay attention on pagination; some of the resources may return a
lot of records and we wouldn’t want to display them all on the same page. That’s
how I learned to get parameters from the URL in JavaScript and then interrogating
the WebService with two parameters /itemsPerPage;pageNumber. I used window.location.href
to get the url in JavaScript and then I split it to get my parameters. I also used
some css options for the design.

As an environment, at first I have used VisualWeb which was very cosy but there
were some problem with the server: it didn’t allow the use of the same port for
more services. So I switched to Eclipse and start working.

Now I’m prepared for a new week with all my forces renewed.
So keep calm and code! Ciao!

FinTP – open source alternative for payments transactions

Hello, I am Andrei Gabriel Macavei and i’m working on FinTP project which is an open source version of the qPayIntegrator software from Allevo.

This is a vast project but to understand it I first have to tell you what is Message Queuing (MQ).

Most business companies or financial institution have to use some software to deal with transactions like payment bills, etc.. This category of software is called Message Oriented Middleware and it uses a messaging protocol (MQ) that allow applications running on separate servers to communicate in an asynchronous and failsafe manner without being restricted on the system’s implementation.

Messages are sent in queues which act like a temporary storage location that holds the messages to be validated first and afterwards sends them through the network. There are many and complex layers a message have to pass to be correctly formatted and comply with the international bank regulation and SWIFT standards.

If anyone don’t have anything better to do and want to know more about it , here is a link of the documentation for Apache’s ActiveMQ software we’re using.

After understanding this now I can tell you what I’m working on. Because the purpose of this project is to re-engineer the closed source product qPI, we have to make it work without using some of the current proprietary prerequisites(i.e. ActiveMQ which is open source instead its proprietary brother WebSphereMQ). The best way of doing this is to write unit tests so we can know what went wrong when changing something in the code.

The technologies I’ m working with are

  • C++ – for core engine cause it needs to be fast and with C++ you can optimize that
  • cppunit – a testing framework which is a C+++ port of JUnit framework
  • Qt – for building an appplication interface.

What we hope to achieve in the end is a modular and open source product where clients that are using this software don’t have to know all the details about how a Message Oriented Middleware is implemented and can just use it to create their own version of software adapted for their needs.

I have also discussed with my mentor Gabriel Stanciu and we both agreed on doing a GUI tool in Qt which will be configurable through an XML file. This will give users an easier way for writing configuration files.

This was my first blog post for ROSEdu Summer of Code , I hope it wasn’t that hard to diggest :)

First week – FinTp


My name is Edi Manoloiu and here are some of my impressions after my first week working at FinTP Project.

In my first week I have learned a lot of new and interesting things, some of them hard, but the fact that there was someone who explained them very well to us made it so much easier. The experience here at Allevo is challenging, but rewarding because when you see that after a hard day of word all is good and all of the tests pass.

For technologies, we use JavaEE, WebServices and JPA;

I have used JPA, to create entities from tables (from a SQL database). Based on each entity, I created resources and then I have made tests to see if they work properly.

# Week I

Hello there! My name is Anda and here are some of my impressions after my first week working at FinTP Project. The goal of this project is to refresh the closed source product qPI into an open source application.

After a few days, I realize it will be a big challenge because we are talking about a huge product here, but I have all the willing to succeed, so bring it! I have worked by now at a few personal projects, but this experience here at Allevo is unique and the most challenging and rewarding because what I am learning from my mentors, by working on this project is going to help me a lot later. As we are taking about a real project, every little mistake counts.

For technologies, we use Java, but as a little joke this isn’t Java that I was so familiar with. Here, we have JavaEE and WebServices. I managed to learn JPA, and with the indications and good willing of my mentors I, can proudly say that I have completed my first tasks for this week.

I have used JPA, to create entities from tables ( from a sql database ).Based on each entity, I created resources were I have implemented operations for the database and after this a few tests to see if my code was running right. I have used http-dev client to check my connection with the database and to alter it , manually. I realised links between more tables and I have worked on functions to make the code more flexible.

Now, back to work. Ciao!