/*
* File : BasicReport.java
* Created : 04-feb-2003 15:12
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.report.rp;
import edu.xtec.jclic.report.SessionData;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.17
*/
public abstract class BasicReport extends Basic{
public static final int USR=0, GRP=1, PRJ=2, UNKNOWN=-1;
public static final String EDIT="edit",
CHANGE="change", NEW="new", GROUP="group", USER="user", PROJECT="project",
ACTIVITY="activity", DATE="date", PID="pid";
public static final String WILDCARD="-1";
//public static final String FROM="from", TO="to";
public static final String[] KCC={"sessionKey", "sessionCode", "sessionContext"};
public static final File SDIR=new File(System.getProperty("java.io.tmpdir"));
//protected Date dFrom, dTo, firstDate, today;
protected String groupId;
protected String userId;
protected String projectName;
protected String activityName;
protected String[] kcc;
protected int type=UNKNOWN;
//private GregorianCalendar calendar;
protected String pageId;
protected DateManager dm;
@Override
public boolean init() throws Exception{
if(!super.init())
return false;
dm=new DateManager(this);
userId=getParamNotNull(USER);
if(userId.length()>0 && (int)userId.charAt(0)==160)
userId=userId.replace((char)160,' ');
groupId = getParamNotNull(GROUP);
projectName=getParamNotNull(PROJECT);
activityName=getParamNotNull(ACTIVITY);
kcc=new String[3];
for(int i=0; i<KCC.length; i++)
kcc[i]=getParam(KCC[i]);
pageId=getParam(PID);
if(pageId==null || pageId.length()==0)
pageId=Long.toString(100000000L+(long)(Math.random()*100000000L));
/*
firstDate=bridge.getMinSessionDate();
today=new Date();
if(firstDate.compareTo(today)>0)
firstDate=today;
dFrom=getDateParam(FROM, firstDate, false);
dTo=getDateParam(TO, today, true);
if(dFrom.compareTo(dTo)>0)
dFrom=dTo;
*/
return dm.init();
}
protected List<SessionData> getSessionList() throws Exception{
List<SessionData> v;
/*
* Removed serialization to File
*
File f=new File(SDIR, "report_"+pageId+".ser");
if(f.exists()){
FileInputStream in = new FileInputStream(f);
ObjectInputStream s = new ObjectInputStream(in);
v=(List<SessionData>)s.readObject();
}
else{
*/
switch(type){
case USR:
v=bridge.getInfoSessionUser(userId, projectName, dm.dFrom, dm.dTo, kcc, false);
break;
case GRP:
v=bridge.getInfoSessionGroup(groupId, projectName, dm.dFrom, dm.dTo, kcc, true);
break;
case PRJ:
v=bridge.getInfoSessionAct(projectName, activityName, dm.dFrom, dm.dTo, kcc, true);
break;
default:
v=new ArrayList<SessionData>();
}
/*
FileOutputStream out = new FileOutputStream(f);
ObjectOutputStream s = new ObjectOutputStream(out);
s.writeObject(v);
f.deleteOnExit();
}
*/
return v;
}
public String[][] vToArray(List<String> v, String wildCardKey, String wildCardMsg){
String[][] result=null;
if(wildCardKey!=null || (v!=null && v.size()>0)){
int l=(v!=null ? v.size() : 0);
result=new String[l+(wildCardKey!=null ? 1 : 0)][];
int k=0;
if(wildCardKey!=null){
String s=wildCardKey;
if(wildCardMsg!=null)
s=getMsg(wildCardMsg);
result[k++]=new String[]{wildCardKey, s};
}
if(v!=null){
for(String s : v){
s=s.trim();
result[k++]=new String[]{s, s};
}
}
}
return result;
}
public String[][] vToArray(List<Object[]> v, int keyIndex, int valueIndex){
String[][] result=null;
if(v!=null && v.size()>0){
int l=v.size();
result=new String[l][];
for(int i=0; i<l; i++){
Object[] o=(Object[])v.get(i);
result[i]=new String[2];
result[i][0]=((String)o[keyIndex]).trim();
result[i][1]=((String)o[valueIndex]).trim();
}
}
return result;
}
}