package er.modern.movies.demo;
import webobjectsexamples.businesslogic.movies.common.Talent;
import webobjectsexamples.businesslogic.movies.common.Voting;
import com.webobjects.appserver.WOComponent;
import com.webobjects.directtoweb.D2W;
import com.webobjects.directtoweb.EditPageInterface;
import com.webobjects.directtoweb.ErrorPageInterface;
import com.webobjects.directtoweb.QueryPageInterface;
public class MoviesNavigationController {
public static final String MOVIE = "Movie";
public static final String STUDIO = "Studio";
public static final String REVIEW = "Review";
private Session _session;
public MoviesNavigationController(Session s) {
super();
_session = s;
}
// NAV ACTIONS
public WOComponent homeAction() {
return D2W.factory().defaultPage(session());
}
// ADMIN
public WOComponent adminAction() {
return queryPageForEntityName(Talent.ENTITY_NAME);
}
// MOVIES
public WOComponent queryMovieAction() {
return queryPageForEntityName(MOVIE);
}
public WOComponent createMovieAction() {
return newObjectForEntityName(MOVIE);
}
// STUDIOS
public WOComponent queryStudioAction() {
return queryPageForEntityName(STUDIO);
}
public WOComponent createStudioAction() {
return newObjectForEntityName(STUDIO);
}
// TALENT
public WOComponent queryTalentAction() {
return queryPageForEntityName(Talent.ENTITY_NAME);
}
public WOComponent createTalentAction() {
return newObjectForEntityName(Talent.ENTITY_NAME);
}
// VOTING
public WOComponent queryVotingAction() {
return queryPageForEntityName(Voting.ENTITY_NAME);
}
public WOComponent createVotingAction() {
return newObjectForEntityName(Voting.ENTITY_NAME);
}
// REVIEW
public WOComponent queryReviewAction() {
return queryPageForEntityName(REVIEW);
}
public WOComponent createReviewAction() {
return newObjectForEntityName(REVIEW);
}
// GENERIC ACTIONS
public WOComponent queryPageForEntityName(String entityName) {
QueryPageInterface newQueryPage = D2W.factory().queryPageForEntityNamed(entityName, session());
return (WOComponent) newQueryPage;
}
public WOComponent newObjectForEntityName(String entityName) {
WOComponent nextPage = null;
try {
EditPageInterface epi = D2W.factory().editPageForNewObjectWithEntityNamed(entityName, session());
epi.setNextPage(session().context().page());
nextPage = (WOComponent) epi;
} catch (IllegalArgumentException e) {
ErrorPageInterface epf = D2W.factory().errorPage(session());
epf.setMessage(e.toString());
epf.setNextPage(session().context().page());
nextPage = (WOComponent) epf;
}
return nextPage;
}
// ACCESSORS
public Session session() {
return _session;
}
public void setSession(Session s) {
_session = s;
}
}