Sunday, November 3, 2013

SMS Management System

Project Name : SMS Management System
Client : iZone Developers
Duration : 12 Months
What I learned  Java , JSP , Hibernate, Maven , Spring, JavaScript, Agile , JqueryUI, Jquery ,  MVC
What I Implemented : 1. Scheduled SMS
                                     2. SMS gateway server 

This was my 3rd year project. We developed this system for the iZone developers. In this project I have worked on the server development. We were able to finish this withing 6 months. To do this project we followed the agile methodology and we used the bitbucket as our repository. From here I'll explain a bit about our project. 

SMS Management System is a concept of integration of mobile technology with information management system. This allows consistent connection with the enterprise no matter where the clients are located. Short messaging services in mobile technology as a tool to manipulate enterprise data and services reduces traditional traveling costs, communicational costs for both the enterprise and the customers. The main objective of the system is to reduce the cost involved with traditional communication methods and stay in touch with the clients for various business endeavors those results in efficiency and increased productivity.



System Diagram


The system consists of few components. The front-end web application developed using Java Server Pages will be used for basic configuration and SMS manipulation. This application uses a remotely hosted database for storing the clients’ information, configuration and the monitoring of SMSs received, sent and to be sent. The gateway application will use various 3g dongles to send and receive SMSs to/from clients while being 24 hours responsive. The administrator can define the SMS campaigns and the configuration to send and receive SMSs. Once received a SMS it will be checked whether it is valid .If it is a valid SMS that needs response from the system the response will be taken from the database and will route the outgoing SMS to the appropriate port with a working dongle attached. When sending SMSs the user can define the content, receivers and the time for sending the SMSs. The server periodically will check for pending SMSs and send the messages if it is the appropriate situation to send the SMS.

The core part of this system is the Gateway Server. It's managing thousands of sms and selecting relevant dongle to send sms considering the budget. It is capable of sending messages from all the dongles simultaneously. Messages are sending according to an algorithm which is guaranteed that the recipient will received the message very quickly. In algorithm each SMS will assigned to a priority level, because of that user can send an emergency SMS at anytime he want and no matter how many messages are in the queue the algorithm will give the first place to the messages who has the higher priority. 

In below you can see a simple video of our project. Note that in the video I'm highlighting the area which was developed by me.So the video will not contain the all project functions.




Transparent JButton, JLabel...J-anything you want

When I was doing my 2nd year project I wanted to transparent a jpanel and several buttons. After searching and reading several posts I founded a way to do it easier. Using this you can transparent most of swing controls. To do this is very easy. you just need to rewrite the class that you want to transparent with adding alpha value. 

public class TransparentButton extends JButton{
     static float value = 1.0f;
    public TransparentButton(float t) {
        super();
        value=t;
        setOpaque(false); 
    }

    @Override
    public void paint(Graphics g) { 
            Graphics2D g2 = (Graphics2D) g.create(); 
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, value)); 
            super.paint(g2); 
            g2.dispose(); 
        } 
}

Here you can see I have extended the JButton class and creating another jbutton called TransparentButton. "value" is the alpha value. After I implemented a constructor to pass that alpha value. So I can use that when I'm creating the button. It's not a must to declare the value variable as static. Finally override the paint method and add your alpha value. 

Now you have to do is run this constructor when you're creating a button. I'll show you how to do it in Netbeans.

First drag and drop the button you want to transparent. I'll add two buttons and I'm going to transparent the right button.





Then right click on that button and from the list choose Customize Code... 

In the code customizer window you can see the constructor of button is there. Now we have to change that constructor and run our constructor there. To change that, from the drop down menu select custom creation.



Then you can edit the constructor. Delete the Jbutton constructor and run the TransparentButton's constructor with passing the alpha value.




Now save the project and run. Tadaa !!!



Like this you can extend most of the swing controls like Jlabel, JToggleButton, JPanel, ... etc.  
You can download a sample project by clicking the link below. 

TransparentTuteAnjula GitHub Project