Mam problem z wczytaniem do programu danych z pliku XML. Chcę je wczytać do własnej klasy Meeting, w której jedno pole jest typu GregorianCalendar. Docelowo chcę to wczytywać do arraylist.

Stworzyłam Converter dla tego pola i zapisuje się wszystko ok, ale już z odczytem nie mogę sobie poradzić. Mam nadzieję, że ktoś będzie mógł mi pomóc :)

Kod klasy Meeting (pomijam gettersy i settersy itp):

public class Meeting {
@XStreamConverter(SingleValueCalendarConverter.class)	
private GregorianCalendar data=new GregorianCalendar() ;
private String place;
private String description;
private String person;

public Meeting(int year, int month, int day, int hour, int minute, String place, String description, String person) {
	super();
	
	data.set(year,month,day,hour,minute);
	this.place = place;
	this.description = description;
	this.person = person;
}

Converter dla daty:

public class SingleValueCalendarConverter implements Converter {
	
	   public void marshal(Object source, HierarchicalStreamWriter writer,
	            MarshallingContext context) {
	        GregorianCalendar calendar = (GregorianCalendar) source;
	        writer.startNode("year");
	        writer.setValue(String.valueOf(calendar.get(Calendar.YEAR)));
	        writer.startNode("month");
	        writer.setValue(String.valueOf((calendar.get(Calendar.MONTH)+1)));
	        writer.startNode("day");
	        writer.setValue(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)));
	        writer.startNode("hour");
	        writer.setValue(String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)));
	        writer.startNode("minutes");
	        writer.setValue(String.valueOf(calendar.get(Calendar.MINUTE)));
	        writer.endNode();
	        writer.endNode();
	        writer.endNode();
	        writer.endNode();
	    }

public Object unmarshal(HierarchicalStreamReader reader,
	            UnmarshallingContext context) {
			
	        GregorianCalendar calendar = new GregorianCalendar();
	        calendar.set(Calendar.YEAR, Integer.parseInt(reader.getValue()));
	        reader.moveDown();
	        calendar.set(Calendar.MONTH, Integer.parseInt(reader.getValue()));
	        reader.moveDown();
	        calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(reader.getValue()));
	        reader.moveDown();
	        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(reader.getValue()));
	        reader.moveDown();
	        calendar.set(Calendar.MINUTE, Integer.parseInt(reader.getValue()));
	        reader.moveUp();
	        reader.moveUp();
	        reader.moveUp();
	        reader.moveUp();
	        return calendar;
	    }

	    @SuppressWarnings("rawtypes")
		public boolean canConvert(Class type) {
	        return type.equals(GregorianCalendar.class);
	    }
}

Z góry dzięki za pomoc :)