package com.fdar.apress.s2.actions.event;
import org.apache.struts2.config.Results;
import org.apache.struts2.config.ParentPackage;
import org.apache.struts2.config.Result;
import org.apache.struts2.dispatcher.ServletActionRedirectResult;
import java.util.List;
import java.util.ArrayList;
import com.opensymphony.webwork.dispatcher.FlashResult;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator;
import com.opensymphony.xwork2.validator.DelegatingValidatorContext;
import com.fdar.apress.s2.services.LocationService;
import com.fdar.apress.s2.domain.Broadcast;
import com.fdar.apress.s2.domain.Address;
import com.fdar.apress.s2.domain.Location;
@ParentPackage("enterEvent")
@Results( value={
@Result(type= ServletActionRedirectResult.class,value="selectLocation",params={"method","input"}),
@Result(type= FlashResult.class,name="selectType",value="/event/flashedSelectEventType.action")
})
public class EnterLocationDetailsAction extends BaseEventAction implements Preparable {
private String setup;
private String typeClass;
private Object location;
private LocationService service;
public void prepare() throws Exception {
if( typeClass!=null ) {
Class clazz = Class.forName(typeClass);
location = clazz.newInstance();
}
}
public void setLocationService(LocationService service) {
this.service = service;
}
public void setSetup(String setup) {
this.setup = setup;
}
public String getTypeClass() {
return typeClass;
}
public void setTypeClass(String typeClass) {
this.typeClass = typeClass;
}
public Broadcast getBroadcast() {
return (Broadcast)location;
}
public void setBroadcast( Broadcast location ) {
this.location = location;
}
public Address getAddress() {
return (Address)location;
}
public void setAddress( Address location ) {
this.location = location;
}
public String execute() throws Exception {
if( typeClass==null ) {
addFieldError("typeClass",getText("validate.selectType",new String[]{}));
return "selectType";
} else {
String objType = typeClass.substring(typeClass.lastIndexOf(".")+1).toLowerCase();
if( setup!=null ) {
return objType;
} else {
VisitorFieldValidator validator = new VisitorFieldValidator();
validator.setAppendPrefix(true);
validator.setValidatorContext(new DelegatingValidatorContext(this));
validator.setFieldName(objType);
validator.validate(this);
if( hasFieldErrors() ) {
return objType;
}
}
service.create((Location)location);
return SUCCESS;
}
}
}