Huawei Neis Manager
Huawei Neis manager is a PC program, designed to generate network transition dependencies in a more efficient way!
In Lithuania, all major network providers like TeliaSonera Omnitel, Bite, Tele2 are using Huawei networking gear, so this tool has an enormous value!
Before, network engineers were used to create new and remove old transitions manually, by hand. But with new telephony stations number increase, it became a very time consuming process, because they needed to establish links depending on existing stations, so that was a really complex process.
My superior company, OSOS, got a request to create this tool and I was the one, suitable for this work!
Since the beginning it was a very rough process, because there was no proper documentation available and even telephony engineers, with whom I needed to consult, didn't know how exactly everything should work.
First of all, I needed to know, what kind of algorithms I need to design. First step was to create transition algorithms between GSM-EDGE and HSDPA broadbands. With a help of network engineers, I managed to create transitions between 2G->2G, 2G->3G, 3G->2G and 3G->3G broadbands. Whole process was not easy, because it was not clear, which parameters should be included in certain algorithms and what kind of output it should produce.
Another step was to create algorithms, dealing with LTE broadband, which was a more complex task, because it included plenty of data files, sctplinks and various parameters, but finally, I created algorithm transitions between 2G->4G, 4G->2G, 4G->3G, 4G->4G broadbands.
Previous step was a sugar, because the following step was just horrendous. Network engineers receive new transition instructions in excel documents and whole station databases are fragmented between tens of files in different extensions, containing all possible data about current network node links, sctp links, blind carbon copies, sectors etc. So I needed to find a proper way of scanning those files, because despite being in different extensions (xls, xlsx, txt, xlsm), they could weight up to gigabyte.
I designed a way of distinguishing and prioritizing database files and wrote different methods of reading their data. Txt files were scanned using Unix regular expressions, so it was as efficient scan as it could be. Microsoft excel files were scanned with a help of Apache POI library - maybe it was not the most efficient way to do this, but at least it worked, because those files contained different types of formatting, and POI did it's job well.
The hardest part of this task was done. Next step - pick up best data structures and sorting algorithm available.
For the data structures - I picked Java HashMap and ArrayList, nothing custom or unexpected. While scanning databases, I was writing data into separate data containers for each node type (2G, 3G, 4G, SCTPLINK etc.).
As for data sort - I used quick sort. Data sort was an essential part, because almost in all cases, new network nodes were inserted only from one part of the country.
During this task, I realized, how important communication quality between company and client is, so for the most challenging part of this task, I select quality of communication!
Anyway, I am extremely happy to receive and accomplish this task, because I realize now, that I am probably the only person in Lithuania, who fully understands, how this networking system works and that more than a million of TeliaSonera Omnitel customers in Lithuania are directly affected by my work! Can you believe it? Million!
So the final result is here:
* Efficient GSM, HSDPA, LTE broadband transitioning algorithms.
* Well working scan of fragmented databases in different formats.
* Efficient data processing and sorting algorithms.
* Comfortable way of loading database files (without any preprocessing) and getting required output.
* Easy way to insert new network nodes or remove old ones.
* Compatibility with Windows, Linux and OS X operating systems.
* Smooth, clear and refreshing UI with an informative logcat.
* Tons of saved network engineering time, which won't be wasted by doing everything manually again.