My name is Ramzi Haddad. I'm a talented programmer who has graduated from George Brown College with a distinguishing GPA of 3.66 out of 4.0. I have started my journey with computers at a young age. I wanted to learn everything about them. I had an ICDL certificate at the age of 14. Now I know much more about computers and programming. At my current stage, I can analyze many Softwares behaviors right when I start using them. Also, I'm very good at designing software. My favorite programming languages are Java and C#. In addition, I have developed other skills that will help through my career including people skills. I have worked in customer service area for few years with different roles.
Outside of work or school, I'm a very adventarues person. I like to go places and do things. I don't fear challenges and I don't miss opportunities. One of the things I believe in is that if you fear the unknown, you will never do anything. I like to take on
challenges and face any difficult situation. Here is a video of me doing something exciting. Hope you enjoy it.
Develop simple web applications using Servlet technology.
Examine the use of session objects to manage sessions.
Implement web applications using JavaServer Pages (JSP)
Create and deploy JavaBeans and employ Model-View Controller Architecture.
Explore the JSF framework for building robust web applications based.
Apply best practices for designing, developing and deploying web applications.
Implement a multi-tier web application by utilizing a variety of Java technologies.
Technologies Used
JavaServer Pages (JSP), JSF, MySQL
Group Composition
Ramzi Haddad, Michael Jimma, Daniel Dos Santos, Rany Akkad, Flex Chan
Code Sample
@WebServlet("/CommentController")
public class CommentController extends HttpServlet
{
private static final long serialVersionUID = 1L;
private ICommentService commentService;
private IBlogService blogService;
RequestDispatcher dispatcher;
Blog blog = null;
@Resource(name="jdbc/comp3095")
private DataSource ds;
public CommentController()
{
super();
}
@Override
public void init() throws ServletException
{
super.init();
try
{
//Injecting the dependencies during initial
commentService = new CommentRepository(ds);
blogService = new BlogRepository(ds);
}
catch(Exception ex)
{
throw new ServletException(ex);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//get the id of the post from the query string
String id = request.getParameter("id");
if(!isEmpty(id))
{
try
{
//get the blog object from the service provider
this.blog = blogService.find(Integer.parseInt(id));
//send the blog object to comment.jsp to view the post detail
request.setAttribute("blog",blog);
RequestDispatcher dispacher = request.getRequestDispatcher("/comment.jsp");
dispacher.forward(request, response);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
response.sendRedirect("/BlogManager/comment.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//get the comment from the request parameter
String comment = request.getParameter("comment");
//get the user from the current session
User currentUser = (User) request.getSession().getAttribute("user");
//validate string
if(isEmpty(comment))
{
request.setAttribute("blog",blog);
request.setAttribute("invalidComment",true);
dispatcher = request.getRequestDispatcher("/comment.jsp");
dispatcher.forward(request, response);
}
else
{
//create a new comment object by passing the current user, the blog and the comment content
Comment comm = new Comment(currentUser,blog,comment);
try
{
//send the new comment to the comment service to store the data in the database
commentService.add(comm);
//redirect the user to the welcome page
dispatcher = request.getRequestDispatcher("WelcomeController");
dispatcher.forward(request, response);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
private boolean isEmpty(String value)
{
//check if the value is empty or contains no string
return (value == null || value.isEmpty() || value.replace(" ", "").length() <= 0);
}
}
Flight Search
Project Outcomes
Demonstrate understanding of Android platform
Design, code and test wireless applications using Android Studio
Demonstrate good understanding of some of the security issues in developing mobile applications
Technologies Used
Android Studio, Java, XML
Sct Portfolio
Project Overview
We build this application for the final year capstone project. The project sponsor was George Brown College faculty of Computer Technologies. The main purpose of the project was the faculty needs to provide its teachers an easy way to create their teaching portfolio and make it available for students and others outside the campus. In addition, the faculty needs the app to allow students to write review about their teachers.
Project Outcomes and Objectives
Utilize primary and secondary research techniques for the purpose of identifying one key ICT opportunity and/or barrier for a specific industry/sector of your choosing.
Synthesize an ICT solution, as well as corresponding and supporting documentation based on the opportunity and/or barrier identified.
Utilize project management practices and techniques throughout an IT project life-cycle.
Apply concepts of human relations and organizational behaviors to establish and maintain effective working teams.
Demonstrate leadership skills while working with diverse teams.
Apply customer service principles and practices when interacting with industry and/or stakeholders.
Communicate effectively and persuasively through oral, graphic and/or print media.
Develop and activate life-long learning and professional development to maintain technological currency.
Apply software development techniques to design and construct an IT project.
Apply various software testing techniques.
Deploy the IT project and build the project closure report.
using SCT_Teaching_Portfolio.DAL;
using SCT_Teaching_Portfolio.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Web.UI.WebControls;
namespace SCT_Teaching_Portfolio.DLL
{
public class MediaHandler
{
IRepository<Media> _repository;
AzureBlobHandler blob = new AzureBlobHandler();
public MediaHandler(MediaRepository repository)
{
_repository = repository;
}
public int AddMedia(Media media)
{
int currentID = 0;
try
{
if (IsValidMedia(media))
{
if (_repository.Insert(media))
return SQLDBHelper.GetCurrentId("media");
}
}
catch (Exception ex)
{
throw ex;
}
return currentID;
}
public void AddMedia(List<Media> media)
{
if (media.Count < 1)
throw new PortfolioException("Empty collection object has been submited.");
try
{
foreach (var file in media)
{
AddMedia(file);
}
}
catch (Exception ex)
{
throw ex;
}
}
public bool UpdateMedia(Media media)
{
try
{
if (IsValidMedia(media))
return _repository.Update(media);
}
catch (Exception ex)
{
throw ex;
}
return false;
}
public bool DeleteMedia(int? mediaID)
{
return _repository.Delete(mediaID);
}
public Media FindMedia(int? id)
{
return _repository.SelectByID(id);
}
public IEnumerable<Media> ListMedia()
{
return _repository.SelectAll();
}
public Media UploadFile(FileUpload fileUpload)
{
string uri = "";//will hold the uri of the newly uploadded image
Media media = null;
try
{
string fileName = Path.GetFileName(fileUpload.PostedFile.FileName);
string extension = Path.GetExtension(fileUpload.PostedFile.FileName);
uri = blob.UploadBlob(fileUpload);//upload the image in azure blob storage and returns the uri of the image
if (!string.IsNullOrEmpty(uri))//if the returned uri is not null, create a new media object and return it
{
media = new Media(fileName, FileTypeHelper.GetFileType(extension).ToString(), uri);
}
}
catch (Exception ex)
{
throw ex;
}
return media;
}
public void DeleteFile(string fileName)
{
try
{
//remove it from the cloud
blob.DeleteBlob(fileName);
}
catch (Exception ex)
{
throw ex;
}
}
private bool IsValidMedia(Media media)
{
if (media == null)
throw new PortfolioException("Empty media object has been submited.");
if (ValidationHelper.IsEmpty(media.FileName))
throw new PortfolioException("File name is a required field.");
if (ValidationHelper.IsEmpty(media.PathURI))
throw new PortfolioException("File path is a required field.");
return true;
}
}
}
Z survivor
Project Overview
This main purpose of this project is to develop game creating skills, we used unity as our game engine and applied some proffesional methods of assests organizing.
Project Outcomes
Create a complete game with some basic design principles
get exposed to unity engine.
Use and explore professional project management skills in Unity.
Technologies Used
Unity engine,C#
Note: Game is available for testing and forther developing , if you need to try it , please contact me.
Flex Task
Project Outcomes
create a design plan for a software
implements the design plan for the software development
follow the software planning disciplines and practices
Expenses Tracker
Project Overview
This a full stack project, it is and end to end Database project that uses core java , Java spring MVC , and angular for forntend developlment, it implents the basic CRUd operations.
Project Outcomes
create Database and seeds it using Angular and java spring MVC.
creates RESTful API points using java .
make HTTP calls using Angular
create a complete Database application using Spring MVC and hibernate.
Technologies Used
Angular,Java, Spring MVC, HTML, CSS,Hibernate,Javascript,REST API
Code Sample
package com.example.demo.controller;
import com.example.demo.model.Expense;
import com.example.demo.service.ExpenseService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@CrossOrigin("*")
@RestController
@RequestMapping("/api/v1")
public class ExpenseController {
@Autowired
ExpenseService expenseService;
@GetMapping("/expenses")
public ResponseEntity> get(){
List expenses= expenseService.findAll();
return new ResponseEntity>(expenses,HttpStatus.OK);
}
@PostMapping("/expenses")
public ResponseEntity save(@RequestBody Expense expense){
Expense expenseOne= expenseService.save(expense);
return new ResponseEntity(expenseOne,HttpStatus.OK);
}
@GetMapping("/expenses/{id}")
public ResponseEntity get(@PathVariable("id") Long id){
Expense expense =expenseService.findById(id);
return new ResponseEntity(expense,HttpStatus.OK);
}
@DeleteMapping("/expenses/{id}")
public ResponseEntity delete(@PathVariable("id") Long id){
expenseService.delete(id);
return new ResponseEntity("Expense is deleted successfully.!",HttpStatus.OK);
}
}
Luv2Shop Ecommerce
Project Overview
This is a full stack E-commerce application.The goal of it is to use Java and Java spring to build a fully functoning application from Scratch .
Project Outcomes
Create a database using MySql and seed it using Java Spring
creates RESTful API points using Java Spring Boot .
make HTTP calls using Angular to end points
Display data from database using Angular.
Place orders using angular and add the orders to database.
Create user accounts and secure the application using Okta.
Process Payments using Stripe framework.
secure the endpoints using Okta framework.
create a VIP area using okta login
Technologies Used
Angular,Java,Java Spring MVC, HTML, CSS,Hibernate,Javascript,REST API, Bootstrap, Stripe, Okta, MySql
Code Sample
ppackage com.luv2code.ecommarce.service;
import com.luv2code.ecommarce.dao.CustomerRepository;
import com.luv2code.ecommarce.dto.PaymentInfo;
import com.luv2code.ecommarce.dto.Purchase;
import com.luv2code.ecommarce.dto.PurchaseResponse;
import com.luv2code.ecommarce.entity.Customer;
import com.luv2code.ecommarce.entity.Order;
import com.luv2code.ecommarce.entity.OrderItem;
import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.PaymentIntent;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.*;
@Service
public class CheckoutServiceImpl implements CheckoutService{
private CustomerRepository customerRepository;
public CheckoutServiceImpl(CustomerRepository customerRepository, @Value("${stripe.key.secret}") String secretKey){
this.customerRepository=customerRepository;
//intialize Stripe API with secret Key
Stripe.apiKey= secretKey;
}
@Override
@Transactional
public PurchaseResponse placeOrder(Purchase purchase) {
//retrieve the order info from dto
Order order=purchase.getOrder();
//generate tracking number
String orderTrackingNumber=generateOrderTrackingNumber();
order.setOrderTrackingNumber(orderTrackingNumber);
//populate order with orderItems
Set orderItems=purchase.getOrderItems();
orderItems.forEach(item -> order.add(item));
//populate order with billing and shipping address
order.setBillingAddress(purchase.getBillingAddress());
order.setShippingAddress(purchase.getShippingAddress());
//populate customer with order
Customer customer = purchase.getCustomer();
//check if this is an existing customer
String theEmail=customer.getEmail();
Customer customerFromDB =customerRepository.findByEmail(theEmail);
if(customerFromDB !=null){
customer =customerFromDB;
}
customer.add(order);
//save to database
customerRepository.save(customer);
//return a response
return new PurchaseResponse(orderTrackingNumber);
}
@Override
public PaymentIntent createPaymentIntent(PaymentInfo paymentInfo) throws StripeException {
List paymentMethodTypes=new ArrayList<>();
paymentMethodTypes.add("card");
Map params=new HashMap<>();
params.put("amount",paymentInfo.getAmount());
params.put("currency",paymentInfo.getCurrency());
params.put("payment_method_types",paymentMethodTypes);
params.put("description","luv2Shop purchase");
params.put("receipt_email",paymentInfo.getReceiptEmail());
return PaymentIntent.create(params);
}
private String generateOrderTrackingNumber() {
//generate a random UUID number(UUID version=4)
return UUID.randomUUID().toString();
}
}