package org.netevolved.reporting; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.entermediadb.asset.MediaArchive; import org.openedit.Data; import org.openedit.hittracker.HitTracker; import org.openedit.money.Money; import org.openedit.store.Store; import org.openedit.users.User; public abstract class BaseReport { protected Date fieldDate;//when report was generated protected User fieldUser; // who called it protected HitTracker fieldHitTracker; protected List fieldReportGroups; protected Map fieldMoneyMap;// tallies of various money values protected Map fieldFloatMap;// tallies of various float values protected int fieldCount;// total # of occurrences protected MediaArchive fieldMediaArchive; protected Store fieldStore; protected boolean fieldIncludeRefunds = false; public boolean isIncludeRefunds() { return fieldIncludeRefunds; } public void setIncludeRefunds(boolean inIncludeRefunds) { fieldIncludeRefunds = inIncludeRefunds; } public MediaArchive getMediaArchive() { return fieldMediaArchive; } public void setMediaArchive(MediaArchive inMediaArchive) { fieldMediaArchive = inMediaArchive; } public Store getStore() { return fieldStore; } public void setStore(Store inStore) { fieldStore = inStore; } public HitTracker getHitTracker() { return fieldHitTracker; } public void setHitTracker(HitTracker inHitTracker) { fieldHitTracker = inHitTracker; } public List getReportGroups() { if (fieldReportGroups == null){ fieldReportGroups = new ArrayList(); } return fieldReportGroups; } public void setReportGroups(List inReportGroups) { fieldReportGroups = inReportGroups; } public Date getDate() { return fieldDate; } public void setDate(Date inDate) { fieldDate = inDate; } public User getUser() { return fieldUser; } public void setUser(User inUser) { fieldUser = inUser; } public Map getMoneyMap() { if (fieldMoneyMap == null){ fieldMoneyMap = new HashMap(); } return fieldMoneyMap; } public void setMoneyMap(Map inMoneyMap) { fieldMoneyMap = inMoneyMap; } public Map getFloatMap() { if (fieldFloatMap == null){ fieldFloatMap = new HashMap(); } return fieldFloatMap; } public void setFloatMap(Map inFloatMap) { fieldFloatMap = inFloatMap; } public int getCount() { return fieldCount; } public void setCount(int inCount) { fieldCount = inCount; } public abstract void generateGroups(); public void generateSummary(){ resetSummary(); Iterator itr = getReportGroups().iterator(); while(itr.hasNext()){ ReportGroup group = itr.next(); int count = getCount() + group.getCount(); setCount(count); Iterator keys = group.getMoneyMap().keySet().iterator(); while(keys.hasNext()){ String key = keys.next(); Money value = group.getMoneyMap().get(key); Money current = new Money("0"); if (getMoneyMap().containsKey(key)){ current = getMoneyMap().get(key); } current = current.add(value); getMoneyMap().put(key, current); } keys = group.getFloatMap().keySet().iterator(); while(keys.hasNext()){ String key = keys.next(); Float value = group.getFloatMap().get(key); Float current = new Float(0); if (getFloatMap().containsKey(key)){ current = getFloatMap().get(key); } current = new Float(value.floatValue() + current.floatValue()); getFloatMap().put(key, current); } } } protected void resetSummary(){ setCount(0); getMoneyMap().clear(); getFloatMap().clear(); } public Float getFloat(String inKey, String inDefault){ Float f = Float.parseFloat(inDefault); if (inKey!=null && getFloatMap().containsKey(inKey)){ return getFloatMap().get(inKey); } return f; } public Money getMoney(String inKey, String inDefault){ Money money = new Money(inDefault); if (inKey!=null && getMoneyMap().containsKey(inKey)){ return getMoneyMap().get(inKey); } return money; } public Object loadObjectByField(String inSearcher, String inField, String inValue){ if (inSearcher!=null && inField!=null && inValue!=null){ if (inSearcher.equals("user")){ return getMediaArchive().getSearcherManager().getSearcher("system",inSearcher).searchByField(inField, inValue); } return getMediaArchive().getSearcher(inSearcher).searchByField(inField, inValue); } return null; } public Object loadObjectByField(String inCatalog, String inSearcher, String inField, String inValue){ if (inCatalog == null){ return loadObjectByField(inSearcher,inField,inValue); } if (inSearcher!=null && inField!=null && inValue!=null){ return getMediaArchive().getSearcherManager().getSearcher(inCatalog,inSearcher).searchByField(inField, inValue); } return null; } public Object getDisplayValue(String inSearcher, String inField, String inValue, String inDisplay, Object inDefault){ if (inSearcher!=null && inField!=null && inValue!=null){ Data data = (Data) getMediaArchive().getSearcher(inSearcher).searchByField(inField, inValue); if (data != null && data.get(inDisplay)!=null){ return data.get(inDisplay); } } return inDefault; } }