import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.*;
import org.lustin.trac.xmlprc.Ticket;
import org.lustin.trac.xmlprc.TrackerDynamicProxy;
public class Main {
public static void main(String [] args)
{
XmlRpcClientConfigImpl conf = new XmlRpcClientConfigImpl();
conf.setBasicUserName("xxxx");
conf.setBasicPassword("xxxx");
try {
conf.setServerURL(new URL("https://xxx.de/trac/xxx/login/xmlrpc"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
XmlRpcClient client = new XmlRpcClient();
client.setConfig(conf);
Object o = null;
try {
o = client.execute("ticket.getTicketFields", new Object[]{});
} catch (XmlRpcException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(o);
TrackerDynamicProxy tdp = new TrackerDynamicProxy(client);
Ticket t = (Ticket)tdp.newInstance(Ticket.class);
Vector query = t.query("type=defect");
System.out.println(query);
SimpleDateFormat dfm = new SimpleDateFormat("yyyy-MM-dd");
Date start = null;
Date now = null;
try {
start = dfm.parse("2011-12-16");
now = dfm.parse("2012-02-21");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Entry>entries = new ArrayList<Entry>();
for(int i = 0; i< query.size(); i++)
{
int id = (Integer)query.get(i);
Vector vector = t.get(id);
Date created = (Date)vector.get(1);
Date modified = (Date)vector.get(2);
HashMap two = (HashMap) vector.get(3);
created.setHours(0);
created.setMinutes(0);
created.setSeconds(0);
modified.setHours(0);
modified.setMinutes(0);
modified.setSeconds(0);
Object statusob = two.get("status");
String status = (String)statusob;
Object resolutionob = two.get("resolution");
if(resolutionob == null || !("duplicate".contentEquals((String)resolutionob)) ){
entries.add(new Entry(id,created,modified,status));
}
}
System.out.println(start+ " "+now);
Date current = start;
while(!(current.compareTo(now)>0))
{
int opened_count=0;
int open_count=0;
int closed_count=0;
for(Entry e: entries)
{
// System.out.println(" "+e.id+e.created+ " "+ e.modified+" "+e.status);
// System.out.println(!e.status.equals("closed") +":"+current.compareTo(e.created));
if(e.created.compareTo(current) == 0) {
opened_count ++;
}
if(e.status.equals("closed") && e.modified.compareTo(current) == 0) {
closed_count ++;
}
if(!e.status.equals("closed") && !(current.compareTo(e.created)<0)) {
open_count++;
}
if(e.status.equals("closed") && !(current.compareTo(e.created)<0) && current.compareTo(e.modified)<0) {
open_count++;
}
}
System.out.println(current+";"+open_count+";"+opened_count+";"+closed_count);
Calendar c = Calendar.getInstance();
c.setTime(current);
c.add(Calendar.DATE, 1);
current = c.getTime();
}
}
}