use of CustomerContracts.ACustomerExceptions.CustomerNotConnected in project SmartCity-Market by TechnionYP5777.
the class RemoveProductFromCartTest method setup.
@Before
public void setup() {
PropertyConfigurator.configure("../log4j.properties");
customer = new Customer(clientRequestHandler);
try {
Mockito.when(clientRequestHandler.sendRequestWithRespond(new CommandWrapper(CustomerDefs.loginCommandSenderId, CommandDescriptor.ADD_PRODUCT_TO_GROCERY_LIST, Serialization.serialize(pp)).serialize())).thenReturn(new CommandWrapper(ResultDescriptor.SM_OK).serialize());
} catch (IOException ¢) {
fail();
}
try {
Mockito.when(clientRequestHandler.sendRequestWithRespond(new CommandWrapper(CustomerDefs.loginCommandSenderId, CommandDescriptor.VIEW_PRODUCT_FROM_CATALOG, Serialization.serialize(sc)).serialize())).thenReturn(new CommandWrapper(ResultDescriptor.SM_OK, Serialization.serialize(catalogProduct)).serialize());
} catch (IOException ¢) {
fail();
}
try {
customer.addProductToCart(sc, amount);
} catch (CriticalError | CustomerNotConnected | AmountBiggerThanAvailable | ProductPackageDoesNotExist | InvalidParameter e1) {
fail();
}
}
use of CustomerContracts.ACustomerExceptions.CustomerNotConnected in project SmartCity-Market by TechnionYP5777.
the class Customer method login.
@Override
public void login(String username, String password, boolean updateProductPictures) throws CriticalError, AuthenticationError {
CommandWrapper cmdwrppr = null;
String serverResponse = null;
log.info("Creating login command wrapper for customer");
establishCommunication(CustomerDefs.port, CustomerDefs.host, CustomerDefs.timeout);
try {
serverResponse = sendRequestWithRespondToServer((new CommandWrapper(CustomerDefs.loginCommandSenderId, CommandDescriptor.LOGIN_CUSTOMER, Serialization.serialize(new Login(username, password)))).serialize());
} catch (SocketTimeoutException e) {
log.fatal("Critical bug: failed to get respond from server");
throw new CriticalError();
}
terminateCommunication();
cmdwrppr = getCommandWrapper(serverResponse);
try {
resultDescriptorHandler(cmdwrppr.getResultDescriptor());
} catch (InvalidCommandDescriptor | InvalidParameter | CustomerNotConnected | ProductCatalogDoesNotExist | AmountBiggerThanAvailable | ProductPackageDoesNotExist | GroceryListIsEmpty | UsernameAlreadyExists | ForgotPasswordWrongAnswer ¢) {
log.fatal("Critical bug: this command result isn't supposed to return here");
throw new CriticalError();
}
id = cmdwrppr.getSenderID();
if (this instanceof RegisteredCustomer)
customerProfile = Serialization.deserialize(cmdwrppr.getData(), CustomerProfile.class);
//check for new product pictures asynchronous
if (updateProductPictures)
new UpdateProductPictures().start();
log.info("Customer Login to server as succeed. Client id is: " + id);
}
use of CustomerContracts.ACustomerExceptions.CustomerNotConnected in project SmartCity-Market by TechnionYP5777.
the class RemoveCustomerTest method setup.
@Before
public void setup() {
PropertyConfigurator.configure("../log4j.properties");
customer = new RegisteredCustomer(clientRequestHandler);
try {
Mockito.when(clientRequestHandler.sendRequestWithRespond(new CommandWrapper(CustomerDefs.loginCommandSenderId, CommandDescriptor.UPDATE_CUSTOMER_PROFILE, Serialization.serialize(customerProfile)).serialize())).thenReturn(new CommandWrapper(ResultDescriptor.SM_OK).serialize());
} catch (IOException ¢) {
fail();
}
try {
customer.updateCustomerProfile(customerProfile);
} catch (CustomerNotConnected | InvalidParameter | AuthenticationError | CriticalError e) {
fail();
}
}
use of CustomerContracts.ACustomerExceptions.CustomerNotConnected in project SmartCity-Market by TechnionYP5777.
the class Customer method resume.
@Override
public void resume(int _id) throws CriticalError, CustomerNotConnected {
CommandWrapper $ = null;
String serverResponse;
log.info("Creating customer Load grocery list command wrapper with id: " + id);
establishCommunication(CustomerDefs.port, CustomerDefs.host, CustomerDefs.timeout);
try {
serverResponse = sendRequestWithRespondToServer((new CommandWrapper(id, CommandDescriptor.LOAD_GROCERY_LIST)).serialize());
} catch (SocketTimeoutException e) {
log.fatal("Critical bug: failed to get respond from server");
throw new CriticalError();
}
terminateCommunication();
try {
$ = getCommandWrapper(serverResponse);
resultDescriptorHandler($.getResultDescriptor());
id = _id;
groceryList = Serialization.deserialize($.getData(), GroceryList.class);
} catch (InvalidCommandDescriptor | InvalidParameter | ProductCatalogDoesNotExist | AmountBiggerThanAvailable | ProductPackageDoesNotExist | GroceryListIsEmpty | AuthenticationError | UsernameAlreadyExists | ForgotPasswordWrongAnswer ¢) {
log.fatal("Critical bug: this command result isn't supposed to return here");
throw new CriticalError();
}
/* Restoring Grocery list */
try {
loadCartProductCacheAndUpdateCartData();
} catch (ProductCatalogDoesNotExist | CriticalError | CustomerNotConnected e) {
log.fatal("Critical bug: Failed to fetch grocery list items from server");
}
log.info("load grocery list from server succeed.");
}
use of CustomerContracts.ACustomerExceptions.CustomerNotConnected in project SmartCity-Market by TechnionYP5777.
the class Customer method registerNewCustomer.
@Override
public void registerNewCustomer(CustomerProfile p) throws CriticalError, InvalidParameter, UsernameAlreadyExists {
String serverResponse;
log.info("Creating registerNewCustomer command wrapper to customer with username: " + p.getUserName());
establishCommunication(CustomerDefs.port, CustomerDefs.host, CustomerDefs.timeout);
/* first: getting the product from the server */
try {
serverResponse = sendRequestWithRespondToServer(new CommandWrapper(id, CommandDescriptor.REGISTER_NEW_CUSTOMER, Serialization.serialize(p)).serialize());
} catch (SocketTimeoutException e) {
log.fatal("Critical bug: failed to get respond from server");
throw new CriticalError();
}
terminateCommunication();
CommandWrapper $ = getCommandWrapper(serverResponse);
try {
resultDescriptorHandler($.getResultDescriptor());
} catch (InvalidCommandDescriptor | CriticalError | AmountBiggerThanAvailable | ProductPackageDoesNotExist | GroceryListIsEmpty | AuthenticationError | CustomerNotConnected | ProductCatalogDoesNotExist | ForgotPasswordWrongAnswer ¢) {
log.fatal("Critical bug: this command result isn't supposed to return here");
throw new CriticalError();
}
log.info("registerNewCustomer command succeed.");
}
Aggregations