UserCartView.java 3.84 KB
package fi.codecrew.moya.web.cdiview.user;

import java.io.ByteArrayInputStream;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named
@ConversationScoped
public class UserCartView extends GenericCDIView {

	private static final long serialVersionUID = 5294631925744474031L;

	private static final Charset UTF8 = Charset.forName("UTF-8");

	private Integer current = 0;

	@Inject
	private UserView userview;

	private List<EventUser> usercart;

	private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");

	public StreamedContent getDownloadCsv() {
		StringBuilder sb = new StringBuilder();

		sb.append("firstname").append(";");
		sb.append("lastname").append(";");
		sb.append("nick").append(";");
		sb.append("login").append(";");
		sb.append("birthday").append(";");
		sb.append("phone").append(";");
		sb.append("email").append(";");
		sb.append("\n");
		for (EventUser uc : usercart)
		{
			sb.append(uc.getFirstnames()).append(";");
			sb.append(uc.getLastname()).append(";");
			sb.append(uc.getNick()).append(";");
			sb.append(uc.getLogin()).append(";");
			sb.append(uc.getBirthday() != null ? dateformat.format(uc.getBirthday()) : "").append(";");
			sb.append(uc.getPhone()).append(";");
			sb.append(uc.getEmail()).append(";");
			sb.append("\n");

		}
		DefaultStreamedContent ret = new DefaultStreamedContent(new ByteArrayInputStream(sb.toString().getBytes(UTF8)));
		ret.setContentType("text/csv");
		return ret;
	}

	private static final Logger logger = LoggerFactory.getLogger(UserCartView.class);

	public String next() {
		++current;
		updateCurrent();
		return null;
	}

	public String prev() {
		--current;
		updateCurrent();
		return null;
	}

	public String getUserCartSize() {
		String ret = "0";
		if (usercart != null) {
			ret = Integer.toString(usercart.size());
		}
		return ret;
	}

	public String removeCurrent() {
		EventUser removed = usercart.remove(current.intValue());
		logger.debug("Removed idx {} from usercart {}", current, removed);

		if (!usercart.isEmpty()) {
			updateCurrent();
		}
		return null;
	}

	public String traverse() {
		if (usercart != null) {
			current = 0;
			updateCurrent();
			return "/useradmin/userCartShow";
		}
		else
			return "/useradmin/list";
	}

	public String saveUser() {
		userview.saveUser();
		return null;
	}

	private void updateCurrent() {
		logger.debug("Updating current user to {}", current);
		if (current >= usercart.size()) {
			current = usercart.size() - 1;
		} else if (current < 0) {
			current = 0;
		}
		EventUser u = usercart.get(current);
		logger.debug("usercart current {}, got {}", current, u);
		if (u != null) {
			userview.setUserid(u.getUser().getId());
			userview.setUser(null);
			userview.initView();
		}
	}

	public void addUsers(List<EventUser> results) {
		if (usercart == null) {
			usercart = new ArrayList<EventUser>();
		}
		usercart.removeAll(results);
		usercart.addAll(results);

	}

	public String clearCart() {
		if (usercart != null)
			usercart.clear();
		return null;
	}

	public boolean isEmpty() {
		return usercart == null || usercart.isEmpty();
	}

	public UserView getUserview() {
		return userview;
	}

	public void setUserview(UserView userview) {
		this.userview = userview;
	}

	public List<EventUser> getUsercart() {
		return usercart;
	}

	public void setUsercart(List<EventUser> usercart) {
		this.usercart = usercart;
	}

	public Integer getCurrent() {
		return current;
	}

	public void setCurrent(Integer current) {
		this.current = current;
	}

}