Skip to content
Snippets Groups Projects
Commit 95dd379d authored by zabiulla.ahmadi's avatar zabiulla.ahmadi
Browse files

POO project

parent 44f0ef93
No related branches found
No related tags found
No related merge requests found
package Config;
public class Config {
// text color
public static final String RED = "\u001B[31m";
public static final String BLACK = "\u001B[30m";
public static final String GREEN = "\u001B[32m";
public static final String BLUE = "\u001B[34m";
public static final String RESET = "\u001B[0m";
public static final String PURPLE = "\u001B[35m";
public static final String CYAN = "\u001B[36m";
public static final String YELLOW = "\u001B[33m";
public static final String WHITE = "\u001B[37m";
public static final String YELLOW_BACKGROUND = "\u001B[43m";
public static final String BLUE_BACKGROUND = "\u001B[44m";
public static final String BLACK_BACKGROUND = "\u001B[40m";
public static final String PURPLE_BACKGROUND = "\u001B[45m";
public static final String CYAN_BACKGROUND = "\u001B[46m";
public static final String GREEN_BACKGROUND = "\u001B[42m";
public static final String WHITE_BACKGROUND = "\u001B[47m";
public static final int ASK_USER_INPUT = 110;
public static final int SHOW_CONTACTS = 1;
public static final int ADD_CONTACTS = 2;
public static final int UPDATE_CONTACTS = 3;
public static final int DELETE_CONTACT = 4;
public static final int EXIT_CONSOLE = 5;
}
\ No newline at end of file
package Contacts;
import Config.Config;
import Helper.Helper;
import Person.Person;
import java.util.Scanner;
public class Contacts {
static Person[] contact;
public Contacts() {
}
public Contacts(Person[] persons) {
contact = persons;
}
public static Contacts of(Person... persons) {
return new Contacts(persons);
}
public Person[] getContacts() {
return contact;
}
public void setContacts(Person[] person) {
contact = person;
}
private int getCharNumericValue(String value) {
return (int) (value.charAt(0));
}
private void shift(int index) {
Person tempContact = contact[index];
contact[index] = contact[index - 1];
contact[index - 1] = tempContact;
}
private void bubbleSort() {
for (int i = 0; i < contact.length; i++) {
for (int j = contact.length - 1; j >= 1; j--) {
int firstPersonNameValue = getCharNumericValue(contact[j].getName().toUpperCase());
int firstPersonLastNameValue = getCharNumericValue(contact[j].getLastname()[0].toUpperCase());
int secondPersonNameValue = getCharNumericValue(contact[j - 1].getName().toUpperCase());
int secondPersonLastNameValue = getCharNumericValue(contact[j - 1].getLastname()[0].toUpperCase());
// sort by last name if first names are equals
if (firstPersonNameValue == secondPersonNameValue) {
if (firstPersonLastNameValue < secondPersonLastNameValue) {
shift(j);
}
// sort by first name
} else if (firstPersonNameValue < secondPersonNameValue) {
shift(j);
}
}
}
}
public void add(Person newContact) {
Person[] temp = new Person[contact.length + 1];
for (int i = 0; i < contact.length; i++) {
temp[i] = contact[i];
}
temp[contact.length] = newContact;
contact = temp;
// bubble sort
bubbleSort();
}
public Person createOrupdate(String flag) {
Helper.clearConsoleScreen();
Helper.PrintInColor(" ==================================================================================\n",
Config.GREEN);
Helper.PrintInColor(String.format("%s\n", flag), Config.BLUE);
Helper.PrintInColor("==================================================================================\n",
Config.GREEN);
Person person = new Person();
Scanner sc = new Scanner(System.in);
System.out.print(" Enter a name [] : ");
String name = sc.nextLine();
while (name.length() < 3) {
System.out
.println(
String.format("\n %sName should contain at least 3 character %s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter a name [] : ");
name = sc.nextLine();
}
person.setName(name);
System.out.print(" Enter one or more last name separated by , [] : ");
String lastName = sc.nextLine();
while (lastName.length() < 3) {
System.out
.println(
String.format("\n %slast name should contain at least 3 character %s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter one or more last name separated by , [] : ");
name = sc.nextLine();
}
person.setLastname(lastName.split(","));
System.out.print(" Enter Address [] : ");
String address = sc.nextLine();
while (address.length() < 15) {
System.out
.println(
String.format("\n %sAddress should at least contain 15 character length%s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter Address [] : ");
address = sc.nextLine();
}
person.setAddress(address);
System.out.print(" Enter one or more email separated by , [] : ");
String email = sc.nextLine();
while (email.length() < 10 || !email.contains("@") || !email.contains(".")) {
System.out
.println(
String.format("\n %sPlease Insert a correct Email !%s%s", Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter one or more email separated by , [] : ");
email = sc.nextLine();
}
person.setEmailAddresses(email.split(","));
System.out.print(" Enter one or more telephone number separated by , [] : ");
String telephonNumber = sc.nextLine();
while (telephonNumber.length() < 12 || !telephonNumber.contains("+")
|| telephonNumber.replaceAll(" ", telephonNumber).length() < 12) { // +4178 223 22 44
System.out.println(
String.format("\n %sPLEASE INSERT A CORRECT TELEPHONE NUMBER !%s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter one or more telephone number separated by , [] : ");
email = sc.nextLine();
}
person.setTelelphoneNumbers(telephonNumber.split(","));
System.out.print(" Enter one or more social acount URL separated by , [] :");
String socialAcount = sc.nextLine();
while (!socialAcount.contains("https://")) {
System.out
.println(
String.format("\n %sPLEASE INSERT A CORRECT URL PREFIXED BY HTTPS:// !%s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter one or more social acount URL separated by , [] :");
socialAcount = sc.nextLine();
}
person.setSocialAcounts(socialAcount.split(","));
System.out.print(" Enter Your Contact Profession [] : ");
String profession = sc.nextLine();
while (profession.length() < 5) {
System.out
.println(
String.format("\n %sPLEASE INSERT A CORRECT PROFESSION !%s%s",
Config.RED,
Config.RED,
Config.RESET));
System.out.println();
System.out.print(" Enter Your Contact Profession [] : ");
profession = sc.nextLine();
}
person.setProfession(profession);
return person;
}
public boolean delete(int id) {
int elementId = id - 1;
if (elementId >= 0 && elementId < contact.length) {
// delete
Person[] temp = new Person[contact.length - 1];
int j = 0;
for (int i = 0; i < contact.length; i++) {
if (i != elementId) {
temp[j] = contact[i];
j++;
}
}
contact = temp;
return true;
} else {
return false;
}
}
public boolean update(int id) {
int elementId = id - 1;
if (elementId >= 0 && elementId < contact.length) {
contact[elementId] = this.createOrupdate("UPDATE A CONTACT");
return true;
} else {
return false;
}
}
}
package Helper;
import Config.Config;
import Contacts.Contacts;
import Person.Person;
import java.util.Scanner;
public class Helper extends Config {
// clear console screen
public static void clearConsoleScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
// print in color a given text or change background color
public static void PrintInColor(String text, String color) {
System.out.format("%s %s %s", color, text, color);
System.out.format("%s", RESET);
}
// Print header of our console application
public static void PrintHeader() {
clearConsoleScreen();
PrintInColor(" ==================================================================================\n",
YELLOW);
PrintInColor("WELLCOME TO CONTACT MANAGEMENT SYSTEM \n", GREEN);
PrintInColor("==================================================================================\n",
YELLOW);
PrintInColor("[1]: \tshow contacts\t\t\t\t\n", CYAN);
PrintInColor("[2]: \tadd contact\t\t\t\t\n", CYAN);
PrintInColor("[3]: \tupdate a contact\t\t\t\t\n", CYAN);
PrintInColor("[4]: \tdelete a contact\t\t\t\t\n", CYAN);
PrintInColor("[5]: \texit\t\t\t\t\n", CYAN);
PrintInColor("==================================================================================\n",
YELLOW);
}
// print OPTION ERROR
public static void PrintErrorAndReturn() {
PrintInColor(" ----------------------------------------------------------------------------------\n",
YELLOW);
PrintInColor("ERROR: WRONG OPTION ID \n", RED);
PrintInColor("----------------------------------------------------------------------------------\n",
YELLOW);
PrintInColor("[1]: \treturn to main menu\t\t\t\t\n", CYAN);
PrintInColor("[2]: \texit\t\t\t\t\n", CYAN);
PrintInColor("----------------------------------------------------------------------------------\n",
YELLOW);
}
public static void printFooter() {
PrintInColor(" ----------------------------------------------------------------------------------\n",
YELLOW);
PrintInColor("RETURN TO HOME \n", CYAN);
PrintInColor("----------------------------------------------------------------------------------\n",
YELLOW);
PrintInColor("[1]: \treturn to main menu\t\t\t\t\n", CYAN);
PrintInColor("[2]: \texit\t\t\t\t\n", CYAN);
PrintInColor("----------------------------------------------------------------------------------\n",
YELLOW);
}
public static void deleteOption() {
PrintInColor(" ==================================================================================\n",
YELLOW);
PrintInColor("DELETE A CONCTACT\n", CYAN);
PrintInColor("==================================================================================\n",
YELLOW);
}
public static void showContacts(Person[] person) {
clearConsoleScreen();
PrintInColor(" ==================================================================================\n",
YELLOW);
PrintInColor(String.format("SHOW CONTACTS \t\t\t\t\t\t\tTOTAL [%s %d %s]\n", WHITE,
(person != null) ? person.length : 0,
CYAN), CYAN);
PrintInColor("==================================================================================\n\n",
YELLOW);
if (person == null) {
System.out.println(" No contacts yet !\n");
}
if (person != null) {
for (int i = 0; i < person.length && person[i] != null; i++) {
System.out.println(
"----------------------------------------------------------------------------------");
System.out.println();
System.out.println(String.format(" %sId : %s", BLUE, BLUE)
+ String.format("\t\t\t\t%s" + "[ " + (i + 1) + " ]", RESET));
System.out.println();
System.out.println(String.format(" %sName : %s", BLUE, BLUE)
+ String.format("\t\t\t%s" + person[i].getName(), RESET));
System.out.println();
String lastnames = String.join(",", person[i].getLastname());
System.out.println(String.format(" %sLast Name : %s", BLUE,
BLUE)
+ String.format("\t\t\t%s" + lastnames, RESET));
System.out.println();
System.out.println(String.format(" %sAddress : %s", BLUE, BLUE)
+ String.format("\t\t\t%s" + person[i].getAddress(), RESET));
System.out.println();
String emails = String.join(", ", person[i].getEmailAddresses());
System.out.println(String.format(" %sEmail : %s", BLUE, BLUE)
+ String.format("\t\t\t%s" + emails, RESET));
System.out.println();
String telephone_numbers = String.join(", ",
person[i].getTelelphoneNumbers());
System.out.println(String.format(" %sTelephone Number : %s", BLUE,
BLUE)
+ String.format("\t\t%s" + telephone_numbers, RESET));
System.out.println();
String social_acounts = String.join(", ", person[i].getSocialAcounts());
System.out.println(String.format(" %sSocial Acount : %s", BLUE,
BLUE)
+ String.format("\t\t%s" + social_acounts, RESET));
System.out.println();
System.out.println(String.format(" %sProfession : %s", BLUE,
BLUE)
+ String.format("\t\t\t%s" + person[i].getProfession(), RESET));
System.out.println();
System.out.println(
"----------------------------------------------------------------------------------\n");
}
}
}
public static int populateErrorOrReturnHome(int option) {
if (option == 1) {
return ASK_USER_INPUT;
}
if (option == 2) {
System.exit(0);
}
return 0;
}
public static void runApplication() {
int option = ASK_USER_INPUT;
Contacts contacts = new Contacts();
while (true) {
Scanner scanner = new Scanner(System.in);
if (option == ASK_USER_INPUT) {
Helper.PrintHeader();
Helper.PrintInColor("Enter your option : ", WHITE);
option = scanner.nextInt();
if (option == EXIT_CONSOLE) {
System.exit(0);
}
if (option == ADD_CONTACTS) {
Person[] newContact = { contacts.createOrupdate("Add A NEW CONTACT") };
if (contacts.getContacts() == null) {
contacts = new Contacts(newContact);
} else {
contacts.add(newContact[0]);
}
option = ASK_USER_INPUT;
continue;
}
if (option == SHOW_CONTACTS) {
Helper.showContacts(contacts.getContacts());
Helper.printFooter();
Helper.PrintInColor("Enter your option : ", WHITE);
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
continue;
}
// update contact
if (option == UPDATE_CONTACTS) {
Helper.showContacts(contacts.getContacts());
if (contacts.getContacts() != null) {
System.out.print("Enter a contact id to update : ");
int id = scanner.nextInt();
boolean updated = contacts.update(id);
if (updated) {
option = ASK_USER_INPUT;
} else {
System.out.println(String.format(
" Contact with id %d doesn't exists", id));
Helper.PrintErrorAndReturn();
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
}
} else {
Helper.showContacts(contacts.getContacts());
Helper.printFooter();
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
}
continue;
}
// delete contact
if (option == DELETE_CONTACT) {
Helper.showContacts(contacts.getContacts());
if (contacts.getContacts() != null) {
Helper.deleteOption();
System.out.print("Enter contact id to delete: ");
int id = scanner.nextInt();
boolean deleted = contacts.delete(id);
if (deleted) {
option = ASK_USER_INPUT;
} else {
System.out.println(String.format(
" Contact with id %d doesn't exists", id));
Helper.PrintErrorAndReturn();
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
}
} else {
Helper.printFooter();
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
}
continue;
}
}
if (option < 1 || option > 4) {
Helper.clearConsoleScreen();
Helper.PrintErrorAndReturn();
option = scanner.nextInt();
option = populateErrorOrReturnHome(option);
}
}
}
}
import Helper.Helper;
public class Main extends Helper {
public static void main(String[] args) {
Helper.runApplication();
}
}
\ No newline at end of file
package Person;
public class Person {
private String name;
private String[] lastname;
private String address;
private String[] telelphoneNumbers;
private String[] emailAddresses;
private String[] socialAcounts;
private String profession;
public Person(){}
public Person(String name, String[] lastname, String address, String[] telelphoneNumbers, String[] emailAddresses, String[] socialAcounts, String profession) {
this.name = name;
this.lastname = lastname;
this.address = address;
this.telelphoneNumbers = telelphoneNumbers;
this.emailAddresses = emailAddresses;
this.socialAcounts = socialAcounts;
this.profession = profession;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getLastname() {
return lastname;
}
public void setLastname(String[] lastname) {
this.lastname = lastname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String[] getTelelphoneNumbers() {
return telelphoneNumbers;
}
public void setTelelphoneNumbers(String[] telelphoneNumbers) {
this.telelphoneNumbers = telelphoneNumbers;
}
public String[] getEmailAddresses() {
return emailAddresses;
}
public void setEmailAddresses(String[] emailAddresses) {
this.emailAddresses = emailAddresses;
}
public String[] getSocialAcounts() {
return socialAcounts;
}
public void setSocialAcounts(String[] socialAcounts) {
this.socialAcounts = socialAcounts;
}
public String getProfession() {
return profession;
}
public void setProfession(String profession) {
this.profession = profession;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment