This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
task-manager-app/Task_Managment_application/src/Account_Module.java
2016-06-01 22:49:01 -07:00

273 lines
5.7 KiB
Java

import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
public class Account_Module extends VBox
{
private class User
{
private String username;
private String password;
User()
{
}
User(String username, String password)
{
this.username = username;
this.password = password;
}
public String get_password()
{
return password;
}
public String get_username()
{
return username;
}
public void set_password(String password)
{
this.password = password;
}
public void set_username(String username)
{
this.username = username;
}
}
final File FILE;
final boolean DEBUG;
private LinkedList<User> user_list;
Account_Module()
{
DEBUG = true;
FILE = new File("user_data.txt");
user_list = new LinkedList<User>();
this.setPadding(new Insets(15, 15, 15, 15));
this.setStyle("-fx-background-color: #336699;");
this.setSpacing(11);
this.setMinSize(500, 500);
TextField usernameField = new TextField();
PasswordField passwordField = new PasswordField();
Button registerButton = new Button();
Button loginButton = new Button();
passwordField.setText("Enter Password");
usernameField.setText("Enter Username");
loginButton.setText("Login");
registerButton.setText("Register");
registerButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent arg0)
{
try
{
add_user_to_list(usernameField.getText(), passwordField.getText());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
loginButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
try
{
if (attemptLogin(usernameField.getText(), passwordField.getText()))
{
if(DEBUG)System.out.println("Attempted login");
Manager_Module hbox = new Manager_Module(usernameField.getText());
System.out.println("LOGIN SUCCESS");
Scene mod_scene = new Scene(hbox, 600, 600);
Main.get_stage().setScene(mod_scene);
} else
{
if (DEBUG)
System.out.println("LOGIN FAIL");
}
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// if(this.getScene() != null)
HBox buttonContainer = new HBox();
buttonContainer.getChildren().addAll(registerButton, loginButton);
buttonContainer.setSpacing(10);
this.getChildren().addAll(usernameField, passwordField, buttonContainer);
}
private boolean add_user_to_list(String username, String password) throws IOException
{
User user = new User(username, password);
refresh_user_list();
if (user_list.isEmpty())
{
if (DEBUG)
System.out.println("user list is empty");
user_list.add(user);
} else
{
if (DEBUG)
System.out.println("user list is not empty");
for (int i = 0; i < user_list.size(); ++i)
{
if (user_list.get(i).get_username().equalsIgnoreCase(user.get_username()))
{
if (DEBUG)
System.out.println("user name already exists, not adding");
return false;
}
}
if (DEBUG)
System.out.println("Adding user to list");
user_list.add(user);
}
save_user_list();
return true;
}
private boolean attemptLogin(String username, String password) throws IOException
{
refresh_user_list();
for (int i = 0; i < user_list.size(); ++i)
{
if (user_list.get(i).get_username().equalsIgnoreCase(username))
{
if (user_list.get(i).get_password().equals(password))
{
return true;
}
}
}
return false;
}
private void debug_print_list()
{
for (int i = 0; i < user_list.size(); ++i)
{
System.out.println("size is " + i);
System.out.print(user_list.get(i).get_username() + ' ');
System.out.println(user_list.get(i).get_password());
}
}
private void refresh_user_list() throws IOException
{
if (DEBUG)
System.out.println("getting user list");
user_list.clear();
if (!FILE.exists())
{
user_list.clear();
System.out.println("file wasnt found");
return;
}
else
{
System.out.println("file was found");
BufferedReader bufferedReader = new BufferedReader(new FileReader(FILE));
String line;
line = bufferedReader.readLine();
while (line != null)
{
User temp = new User();
temp.set_username(line.substring(0, line.indexOf(',')));
temp.set_password(line.substring(line.indexOf(',') + 1));
if (DEBUG)
System.out.println(temp.get_username());
if (DEBUG)
System.out.println(temp.get_password());
user_list.add(temp);
line = bufferedReader.readLine();
}
bufferedReader.close();
}
}
private void save_user_list() throws IOException
{
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(FILE));
for (int i = 0; i < user_list.size(); ++i)
{
if (DEBUG)
System.out.println("size is " + i);
if (DEBUG)
debug_print_list();
if (i != 0)
{
bufferedWriter.write('\n');
}
bufferedWriter.write(user_list.get(i).get_username());
bufferedWriter.write(',');
bufferedWriter.write(user_list.get(i).get_password());
}
bufferedWriter.close();
}
}