/* * Copyright 2011-2013 PrimeFaces Extensions. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id$ */ package org.primefaces.extensions.showcase.controller.exporter; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; /** * DynamicColumnsTableController * * @author Sudheer Jonna / last modified by $Author$ * @since 0.7.0 * @version $Revision: 1.0 $ */ @ManagedBean @ViewScoped public class DynamicColumnsTableController implements Serializable { private static final List<String> VALID_COLUMN_KEYS = Arrays.asList("subject", "text", "country", "textLength", "deliveryStatus"); private static final long serialVersionUID = 20111020L; private List<Message> messages; private List<Message> messageDetails; private List<Message> filteredMessages; private String columnTemplate = "subject text country textLength"; private List<ColumnModel> columns = new ArrayList<ColumnModel>(); public DynamicColumnsTableController() { if (messages == null) { messages = new ArrayList<Message>(); for (int i = 0; i < 10; i++) { Message message = new Message(); message.setSubject("subject " + i); message.setText("text " + i); message.setTextLength(((i * 10) + 10) + ""); message.setCountry("country" + i); message.setDeliveryStatus("successfull"); messages.add(message); } } createDynamicColumns(); } private String getRandomModel() { return UUID.randomUUID().toString().substring(0, 8); } public List<ColumnModel> getColumns() { return columns; } public List<Message> getMessages() { return messages; } public void setMessages(final List<Message> messages) { this.messages = messages; } public List<Message> getFilteredMessages() { return filteredMessages; } public void setFilteredMessages(List<Message> filteredMessages) { this.filteredMessages = filteredMessages; } public static class ColumnModel implements Serializable { private String header; private String property; public ColumnModel(String header, String property) { this.header = header; this.property = property; } public String getHeader() { return header; } public String getProperty() { return property; } } public class Message implements Serializable { private String subject; private String text; private long time; private String textLength; private String country; private String deliveryStatus; public Message() { time = System.currentTimeMillis() + (long) (Math.random() * 10); textLength = Math.random() * 10 + ""; } public final String getSubject() { return subject; } public final void setSubject(String subject) { this.subject = subject; } public final String getText() { return text; } public final void setText(String text) { this.text = text; } public long getTime() { return time; } public void setTime(long time) { this.time = time; } public String getTextLength() { return textLength; } public void setTextLength(String textLength) { this.textLength = textLength; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getDeliveryStatus() { return deliveryStatus; } public void setDeliveryStatus(String deliveryStatus) { this.deliveryStatus = deliveryStatus; } } public String getColumnTemplate() { return columnTemplate; } public void setColumnTemplate(String columnTemplate) { this.columnTemplate = columnTemplate; } public void updateColumns() { createDynamicColumns(); } public void createDynamicColumns() { String[] columnKeys = columnTemplate.split(" "); columns.clear(); for (String columnKey : columnKeys) { String key = columnKey.trim(); if (VALID_COLUMN_KEYS.contains(key)) { columns.add(new ColumnModel(columnKey.toUpperCase(), columnKey)); } } } }