use java
Task1: In Oman, the Oman Water and Wastewater Services Company bills its clients at various rates per gallon depending on use (Gallons). The total consumption usage * 0.002 (rate per unit) is used to calculate customer bills for residential customers, while the total consumption usage 0.0035 is used to calculate customer bills for commercial customers (rate per unit). Keep in mind that when a consumer consumes more units, the charge per unit increases Oman Water and Wastewater Services Company has asked you to create an interactive system (AlonGraphical User Interface) to calculate the water bills of its consumers. Allow the user to input the bill number, the kind of customer, and the total amount used (in gallons) on the client side. The client will then forward the type of customer and total consumption usage (in gallons). Assume that number 1 represents the residential customer, whereas number 2 represents the commercial customer. The server will choose the tariff rate to use, calculate the bill, and then transmit the bill and the tariff rate used back to the client after receiving the kind of customer and the total consumption usage (in gallons) from the client. The client must display the bill as soon as they are received, and the tariff rate applied. Implement the Java program with the option of the server connecting to a database for answering user queries. The specification of your program should be as follow, 1- Client-Side Program: Implement the client-side requirements (non-graphical user interface) and then provide code snippets for each function with clear explanations/comments of key statements used. The client-side would enter the Bill Number, the Customer Type, and the consumption via keyboard. The client will then forward the Customer Type and consumption to the server. Include input field validation wherever possible. i. Create a thread using extending thread class or implementing a runnable interface and implement a run method. ii. Request connection to the server. iii. Accept and forward the necessary data to the server. iv. iv. Receive and display the results from the server. v. v. Close the connection after use. vi. vi. Create a main class called custClient, define the main method, creation of client object, and start the thread. 2- Server-side program: Implement the server-side requirements and then provide code snippets for each function with clear explanations/comments of key statements used. i. Create a thread using extending thread class or implementing a runnable interface and implement a run method. ii. ii. After receiving the Customer Type and consumption from the client side, the server should make a connection to the database. iii. iii. Search the database using the Customer Type and retrieve the appropriate tariff rate. iv. Use the retrieved tariff rate to calculate the bill. v. Return to the client the bill, and the tariff rate used. vi. Close the connection with the database when done. vii. Create a main class called custSerxer, define the main method, creation of client object, and start the thread