Skip to content
Snippets Groups Projects
User.java 5.01 KiB
Newer Older
package project;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import exceptions.CategoryInvalidException;
import exceptions.DateInvalidException;
import exceptions.LoginInvalidException;
import exceptions.MailInvalidException;
import exceptions.PasswordInvalidException;
import exceptions.PriceInvalidException;
import exceptions.TitleInvalidException;
import exceptions.UsernameEmailEmptyException;

public class User {

	static int idCounter;
	public static ArrayList<User> users = new ArrayList<User>();
	private ArrayList<Item> myItem = new ArrayList<Item>();
	private int id;
	private String username, email, password;
	public User() {
		username = "";
		email = "";
		password = "";

		this.id = idCounter++;
		users.add(this);

cristiano's avatar
cristiano committed
	
	public User(int id) {

		username = "";
		email = "";
		password = "";

		this.id = id;
		users.add(this);

	}
	public User(String usernameInput, String mailInput, String passwordInput) {

		username = usernameInput;
		email = mailInput;
		password = passwordInput;
		this.id = idCounter++;
		users.add(this);

	}

	public static User getInstance() {

		User u = new User();
		return u;

	public static boolean login(String username, String email, String password)
			throws UsernameEmailEmptyException, PasswordInvalidException, MailInvalidException, LoginInvalidException {
		if (username.equals("") && email.equals("")) {
			throw new UsernameEmailEmptyException();
		} else {

			if (password.equals("")) {

				throw new PasswordInvalidException();

			} else if (!username.equals("")) {

				User toCheck = null;

				for (User u : users) {
					if (u.username.equals(username)) {
						toCheck = u;

					}

				}

				if (toCheck == null) {

					throw new LoginInvalidException();
					if (password.equals(toCheck.password)) {

						return true;

					} else {

						throw new LoginInvalidException();

					}
			} else if (!email.matches("\\S+@\\S+\\.\\S+")) {

				throw new MailInvalidException();

				User toCheck = null;

				for (User u : users) {

					if (u.email.equals(email)) {

						toCheck = u;

					}

				}

				if (toCheck == null) {

					throw new LoginInvalidException();

				} else {

					if (password.equals(toCheck.password)) {

						return true;

					} else {

						throw new LoginInvalidException();

					}

				}

	public ArrayList<Auction> retrieveSubscribedAuction() {
		// TODO Auto-generated method stub
		return null;
	}

	public ArrayList<Item> searchItem(String title, String category)
			throws CategoryInvalidException, TitleInvalidException {

		if (!title.matches("^[a-zA-Z\\s]+$") || title.length() > 30 || title.length() < 1) {

			throw new TitleInvalidException();

		} else {

			Category c = Category.getCategory(category);

			if (c == null) {

				throw new CategoryInvalidException();

			} else {

				ArrayList<Item> toReturn = new ArrayList<Item>();

				for (Item i : Item.items) {

					if (i.getTitle().equals(title) && i.getCategory().equals(c)) {
	public ArrayList<Auction> searchAuction(String startTime, String endTime, double price, String title,
cristiano's avatar
cristiano committed
			String category)
			throws CategoryInvalidException, TitleInvalidException, DateInvalidException, PriceInvalidException {

		String format = "dd/MM/yyyy hh:mm:ss";
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date start, end;

		if (!title.matches("^[a-zA-Z]+$") || title.length() > 30 || title.length() < 1) {

			throw new TitleInvalidException();

		} else {

			Category c = Category.getCategory(category);

			if (c == null) {

				throw new CategoryInvalidException();

			} else if (!Seller.isValidFormat(format, startTime) || !Seller.isValidFormat(format, endTime)) {

				throw new DateInvalidException();

			} else if (price <= 0) {

				throw new PriceInvalidException();

			} else {

				try {

					start = sdf.parse(startTime);
					end = sdf.parse(endTime);

				} catch (ParseException p) {

					throw new DateInvalidException();

				}

				ArrayList<Auction> toReturn = new ArrayList<Auction>();

				for (Auction a : Auction.auctions) {

					if (a.getTitle().equals(title) || a.getCategory().equals(c) || a.getStart().equals(start)
							|| a.getEnd().equals(end) || a.getPrice() - price <= 0.01) {

						toReturn.add(a);

					}

				}

				return toReturn;
			}

		}

	public boolean addItem(int itemId) {
		if (myItem.contains(Item.getItem(itemId))) {

			return myItem.add(Item.getItem(itemId));

		}

		return false;

	}

	public void setId(int i) {

		this.id = i;

	}

	public int getId() {
	public void setUsername(String usernameInput) {

		this.username = usernameInput;
	}

	public void setEmail(String emailInput) {

		this.email = emailInput;

	}

	public void setPassword(String passwordInput) {

		this.password = passwordInput;
	}

cristiano's avatar
cristiano committed
	public static User getUserById(int user) {
		for (User u : users) {
			if (u.getId() == user) {
				return u;
			}
		}
		return null;
	}