package com.casamind.adware.server.servlet.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.casamind.adware.server.dao.ObjectifyGenericDAO;
import com.casamind.adware.server.domain.Company;
import com.casamind.adware.server.domain.Product;
import com.casamind.adware.server.domain.Publisher;
import com.casamind.adware.server.domain.Resource;
import com.casamind.adware.server.domain.Slot;
import com.casamind.adware.server.domain.UserAccount;
import com.casamind.adware.shared.AccessLevels;
import com.casamind.adware.shared.AuthTypes;
@SuppressWarnings("serial")
public class TESTDataBuilder extends HttpServlet {
public static int SLOT_DURATION_IN_MINUTES = 15;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
SLOT_DURATION_IN_MINUTES = Integer.parseInt(getInitParameter("duration"));
response.getWriter().println(buildTestData());
}
public String buildTestData() {
String result = "";
Random rand = new Random();
Calendar calendar = Calendar.getInstance();
Date start, end;
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
ObjectifyGenericDAO<UserAccount> userAccountDAO = new ObjectifyGenericDAO<UserAccount>(UserAccount.class);
ObjectifyGenericDAO<Company> companyDAO = new ObjectifyGenericDAO<Company>(Company.class);
ObjectifyGenericDAO<Publisher> publisherDAO = new ObjectifyGenericDAO<Publisher>(Publisher.class);
ObjectifyGenericDAO<Product> productDAO = new ObjectifyGenericDAO<Product>(Product.class);
ObjectifyGenericDAO<Resource> resourceDAO = new ObjectifyGenericDAO<Resource>(Resource.class);
ObjectifyGenericDAO<Slot> slotDAO = new ObjectifyGenericDAO<Slot>(Slot.class);
UserAccount admin = new UserAccount("mouncif.faqir@gmail.com", AuthTypes.GOOGLE);
admin.setFirstname("Mouncif");
admin.setLastname("FAQIR");
admin.setPhone("+33607677177");
admin.setEmail("mouncif.faqir@gmail.com");
admin.setLastLoginOn(calendar.getTime());
admin.setReceiveNewsLetter(true);
admin.setReceiveNotifications(true);
admin.setAccessLevel(AccessLevels.Administrator);
userAccountDAO.put(admin);
for (int i = 0; i < 2; i++) {
Company company = new Company();
company.setAccessLevel(AccessLevels.Company);
company.setLogin("company" + i + "@example.com");
company.setService(AuthTypes.GOOGLE);
company.setUniqueId(company.getLogin() + "-" + company.getService());
company.setLastname("Company " + i);
company.setFirstname("");
company.setStreet("Street adress for company " + 1);
company.setCity("City " + i);
company.setPhone("+212522" + (100000 + rand.nextInt(999999)));
company.setFax("+212522" + (100000 + rand.nextInt(999999)));
company.setMobile("+2126" + (10000000 + rand.nextInt(99999999)));
company.setEmail("contact@company" + i + ".com");
company.setWebsite("www.company" + i + ".com");
company.setReceiveNewsLetter(false);
company.setReceiveNotifications(false);
company.setLastLoginOn(calendar.getTime());
companyDAO.put(company);
for (int j = 0; j < 2; j++) {
Publisher publisher = new Publisher();
publisher.setAccessLevel(AccessLevels.Publisher);
publisher.setLogin("publisher" + j + "@company" + i + ".com");
publisher.setService(AuthTypes.GOOGLE);
publisher.setUniqueId(publisher.getLogin() + "-" + publisher.getService());
publisher.setFirstname("Publisher");
publisher.setLastname(j + "-" + i);
publisher.setPhone("+212522" + (100000 + rand.nextInt(999999)));
publisher.setEmail("publisher" + j + "@company" + i + ".com");
ArrayList<Long> products = new ArrayList<Long>();
ArrayList<Long> slots = new ArrayList<Long>();
publisherDAO.put(publisher);
publisher.setCompanyId(company.getId());
for (int k = 0; k < 5; k++) {
Product product = new Product();
product.setName("Product" + k + "-" + j + "-" + i);
product.setSlogan("Slogan");
product.setText("Text");
product.setLink("Link");
productDAO.put(product);
product.setPublisherId(publisher.getId());
products.add(product.getId());
for (int n = 0; n < 10; n++) {
Resource resource = new Resource();
resource.setFilename("resource" + n + ".jpeg");
resource.setImageURL("https://lh3.googleusercontent.com/-hQtlZHxpmA0/SMv3w4UUqcI/AAAAAAAACAQ/nPEx0-f9L6Y/s912/DSC02207.JPG");
resource.setUUID((UUID.randomUUID().toString()));
resource.setProductId(product.getId());
resourceDAO.put(resource);
}
productDAO.put(product);
}
for (int n = 0; n < 5; n++) {
start = calendar.getTime();
calendar.add(Calendar.HOUR, 12);
end = calendar.getTime();
Slot slot = new Slot(1, 10, start, end, publisher.getId());
for (int p = 0; p < slot.getNbSlots(); p++) {
slot.getProductIds().add(products.get(rand.nextInt(products.size())));
}
slot.setStatus(rand.nextInt(1));
slotDAO.put(slot);
slot.setOwnerId(publisher.getId());
slots.add(slot.getId());
}
publisherDAO.put(publisher);
}
companyDAO.put(company);
}
result += "\n--------------------- UserAccounts ------------------------\n";
for (UserAccount e : userAccountDAO.listAll()) {
result += e.toString() + "\n\n";
}
result += "\n--------------------- Companies ------------------------\n";
for (Company e : companyDAO.listAll()) {
result += e.toString() + "\n\n";
}
result += "\n--------------------- Publishers ------------------------\n";
for (Publisher e : publisherDAO.listAll()) {
result += e.toString() + "\n\n";
}
result += "\n--------------------- Products ------------------------\n";
for (Product e : productDAO.listAll()) {
result += e.toString() + "\n\n";
}
// result +=
// "\n--------------------- Commercials ------------------------\n";
// for (Commercial e : commercialDAO.listAll()) {
// result += e.toString() + "\n\n";
// }
// result += "\n--------------------- Slots ------------------------\n";
// for (Slot e : slotDAO.listAll()) {
// result += e.toString() + "\n\n";
// }
// result +=
// "\n--------------------- Resources ------------------------\n";
// for (Resource e : resourceDAO.listAll()) {
// result += e.toString() + "\n\n";
// }
return result;
}
}