package com.fdar.apress.s2.remote.gwt; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.fdar.apress.s2.client.service.GWTService; import com.fdar.apress.s2.services.EventService; import com.fdar.apress.s2.client.GWTEventDTO; import com.fdar.apress.s2.client.GWTLocationDTO; import com.fdar.apress.s2.domain.Event; import com.fdar.apress.s2.domain.Location; import com.fdar.apress.s2.domain.Address; import com.fdar.apress.s2.domain.Broadcast; import java.util.List; import java.util.ArrayList; import java.text.DateFormat; public class GWTServiceAction { protected EventService service; public void setEventService(EventService service) { this.service = service; } public GWTEventDTO[] findRecentEvents(Integer max) { List<Event> list = service.findAllEvents(max); GWTEventDTO[] data = new GWTEventDTO[list.size()]; for( int i=0; i<list.size(); i++ ) { data[i] = createDTO(list.get(i)); } return data; } private GWTEventDTO createDTO( Event event ) { GWTEventDTO result = new GWTEventDTO(); DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); result.setId(event.getId()); result.setEventName(event.getName()); result.setStartTime(df.format(event.getStartTime())); result.setTimeZoneOffset(event.getTimeZoneOffset()); result.setVotingStartTime(df.format(event.getVotingStartTime())); result.setDuration(event.getDuration()); result.setLastUpdateTime(df.format(event.getLastUpdateTime())); result.setLocation(createLocationDTO(event.getLocation())); result.setStatus(event.getStatus().name()); return result; } private GWTLocationDTO createLocationDTO( Location loc ) { GWTLocationDTO result = new GWTLocationDTO(); result.setId(loc.getId()); String cn = loc.getClass().getName(); result.setType(cn.substring(cn.lastIndexOf(".")+1,cn.length())); result.setName(loc.getName()); result.setCity(loc.getCity()); result.setState(loc.getState()); if( loc instanceof Address) { result.setAddress(((Address)loc).getAddress()); result.setZipcode(((Address)loc).getZipcode()); } if( loc instanceof Broadcast) { result.setStationIdentifier(((Broadcast)loc).getStationIdentifier()); result.setNetwork(((Broadcast)loc).getNetwork()); } return result; } }