/*
* Created on 23.8.2004
*
* Copyright (C) 2004 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.presentation.ui.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
/**
* @author aron
*
* EventHistoryList a represents and formats a list of event entries
*/
public class EventHistoryList extends Block{
//private TreeSet eventEntries = new TreeSet(new EventEntryComparator());
private List eventEntries = new LinkedList();
private String bundleIdentifier = null;
private boolean showUser = true;
private boolean showSource = true;
private boolean showEvent = true;
/* (non-Javadoc)
* @see com.idega.presentation.PresentationObject#main(com.idega.presentation.IWContext)
*/
public void main(IWContext iwc) throws Exception {
if(this.eventEntries!=null && !this.eventEntries.isEmpty()){
Collections.sort(this.eventEntries,new EventEntryComparator());
IWBundle iwb = getBundle(iwc);
IWResourceBundle iwrb = getResourceBundle(iwc);
Table eventTable = new Table();
eventTable.setCellspacing(1);
eventTable.setCellpadding(2);
eventTable.setBorder(0);
eventTable.setWidth(Table.HUNDRED_PERCENT);
eventTable.setNoWrap();
String dateFormatString = iwb.getProperty("EventHistoryList.date_format_string","");
String timeFormatString = iwb.getProperty("EventHistoryList.time_format_string","");
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT,iwc.getCurrentLocale());
if(dateFormatString!=null && !"".equalsIgnoreCase(dateFormatString)){
df = new SimpleDateFormat(dateFormatString);
}
DateFormat tf = DateFormat.getTimeInstance(DateFormat.MEDIUM,iwc.getCurrentLocale());
if(timeFormatString!=null && !"".equals(timeFormatString)){
tf = new SimpleDateFormat(timeFormatString);
}
int row = 1;
int col = 1;
Text eventTypeText = getText(iwrb.getLocalizedString("eventhistory.event_type","Type"));
eventTypeText.setBold();
Text dateText = getText(iwrb.getLocalizedString("eventhistory.date","Date"));
dateText.setBold();
Text timeText = getText(iwrb.getLocalizedString("eventhistory.time","Time"));
timeText.setBold();
Text eventText = getText(iwrb.getLocalizedString("eventhistory.event","Event"));
eventText.setBold();
Text sourceText = getText(iwrb.getLocalizedString("eventhistory.source","Source"));
sourceText.setBold();
Text userText = getText(iwrb.getLocalizedString("eventhistory.user","User"));
userText.setBold();
eventTable.add(eventTypeText,col++,row);
eventTable.add(dateText,col++,row);
eventTable.add(timeText,col++,row);
if(this.showEvent) {
eventTable.add(eventText,col++,row);
}
if(this.showSource) {
eventTable.add(sourceText,col++,row);
}
if(this.showUser) {
eventTable.add(userText,col++,row);
}
eventTable.setCellpadding(0);
eventTable.setLineAfterRow(row);
row++;
col = 1;
for (Iterator iter = this.eventEntries.iterator(); iter.hasNext();) {
EventEntry event = (EventEntry) iter.next();
eventTable.add(getText(event.getType()),col++,row);
eventTable.add(getText(df.format(event.getDate())),col++,row);
eventTable.add(getText(tf.format(event.getDate())),col++,row);
if(this.showEvent) {
eventTable.add(getText(event.getEvent()),col++,row);
}
if(this.showSource) {
eventTable.add(getText(event.getSource()),col++,row);
}
if(this.showUser) {
eventTable.add(getText(event.getUser()),col++,row);
}
row++;
col =1;
}
add(eventTable);
}
else{
}
}
private Text getText(String text){
return new Text(text);
}
/**
* Adding EventEntry object
* @param entry
*/
public void addEvent(EventEntry entry){
this.eventEntries.add(entry);
}
/**
* Adding collection of EventEntry objects
* @param events
*/
public void addEvents(Collection events){
this.eventEntries.addAll(events);
}
/* (non-Javadoc)
* @see com.idega.presentation.PresentationObject#getBundleIdentifier()
*/
public String getBundleIdentifier() {
// TODO Auto-generated method stub
if(this.bundleIdentifier!=null) {
return this.bundleIdentifier;
}
else {
return super.getBundleIdentifier();
}
}
private class EventEntryComparator implements Comparator{
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object arg0, Object arg1) {
EventEntry entryOne = (EventEntry) arg0;
EventEntry entryTwo = (EventEntry) arg1;
int ret = entryOne.getDate().compareTo(entryTwo.getDate());
ret *=-1;
return ret;
}
}
/**
* @param showEvent The showEvent to set.
*/
public void setShowEvent(boolean showEvent) {
this.showEvent = showEvent;
}
/**
* @param showSource The showSource to set.
*/
public void setShowSource(boolean showSource) {
this.showSource = showSource;
}
/**
* @param showUser The showUser to set.
*/
public void setShowUser(boolean showUser) {
this.showUser = showUser;
}
}