partial implementation of conference management; rewrote the whole servlets

layer to eliminate duplicate code and make error checking more efficient
(we now use a system that relies on Throwables to do interesting things)
This commit is contained in:
Eric J. Bowersox 2001-02-10 07:20:27 +00:00
parent a51fa644b7
commit f706cdaf5f
65 changed files with 2914 additions and 3040 deletions

3
TODO
View File

@ -6,7 +6,8 @@ Lots!
- Should we provide the sysadmin the ability to disable SIG creation for
non-admin users? Maybe there needs to be a "global" set of levels that
aren't hardcoded. Where do they get stored? The database?
aren't hardcoded. Where do they get stored? The database? (Maybe the
nice shiny new "globals" table?)
- There's no system admin functionality AT ALL. We need to have this stuff
before we go live. (It plugs into the Administrative SIG features.)

View File

@ -117,4 +117,6 @@ public interface ConferenceContext
public abstract HTMLChecker getNewTopicPreviewChecker();
public abstract void fixSeen() throws DataException;
} // end interface ConferenceContext

View File

@ -74,6 +74,48 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
} // end class ConfCache
/*--------------------------------------------------------------------------------
* Internal class used in the implementation of fixSeen()
*--------------------------------------------------------------------------------
*/
static class FixSeenHelper
{
private int topicid;
private int top_message;
private boolean do_insert;
public FixSeenHelper(int topicid, int top_message, boolean do_insert)
{
this.topicid = topicid;
this.top_message = top_message;
this.do_insert = do_insert;
} // end constructor
public void doFix(Statement stmt, int uid) throws SQLException
{
StringBuffer sql = new StringBuffer();
if (do_insert)
{ // construct an SQL INSERT statement
sql.append("INSERT INTO topicsettings (topicid, uid, last_message) VALUES (").append(topicid);
sql.append(", ").append(uid).append(", ").append(top_message).append(");");
} // end if
else
{ // construct an SQL UPDATE statement
sql.append("UPDATE topicsettings SET last_message = ").append(top_message).append(" WHERE topicid = ");
sql.append(topicid).append(" AND uid = ").append(uid).append(';');
} // end else
// now execute the update
stmt.executeUpdate(sql.toString());
} // end doFix
} // end class FixSeenHelper
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
@ -908,6 +950,68 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
} // end getNewTopicPreviewChecker
public void fixSeen() throws DataException
{
Connection conn = null;
try
{ // retrieve a connection from the datapool
conn = datapool.getConnection();
Statement stmt = conn.createStatement();
// lock the tables that we need
stmt.executeUpdate("LOCK TABLES confsettings WRITE, topicsettings WRITE, topics READ;");
try
{ // get the existing topic list and its top messages list
StringBuffer sql =
new StringBuffer("SELECT topics.topicid, topics.top_message, ISNULL(topicsettings.last_message) "
+ "FROM topics LEFT JOIN topicsettings ON topics.topicid = topicsettings.topicid "
+ "AND topicsettings.uid = ");
sql.append(sig.realUID()).append(" WHERE topics.confid = ").append(confid).append(';');
ResultSet rs = stmt.executeQuery(sql.toString());
// use the results to build up a list of FixSeenHelpers
Vector tmp = new Vector();
while (rs.next())
tmp.add(new FixSeenHelper(rs.getInt(1),rs.getInt(2),rs.getBoolean(3)));
// now iterate over the list and call doFix on each one
Iterator it = tmp.iterator();
while (it.hasNext())
{ // just hit each one in turn
FixSeenHelper fsh = (FixSeenHelper)(it.next());
fsh.doFix(stmt,sig.realUID());
} // end while
// update our last-read indicator, too
touchRead(conn);
} // end try
finally
{ // make sure we unlock everything before we go
Statement ulk_stmt = conn.createStatement();
ulk_stmt.executeUpdate("UNLOCK TABLES;");
} // end finally
} // end try
catch (SQLException e)
{ // this becomes a DataException
logger.error("DB error updating user information: " + e.getMessage(),e);
throw new DataException("unable to update user information: " + e.getMessage(),e);
} // end catch
finally
{ // make sure we release the connection before we go
if (conn!=null)
datapool.releaseConnection(conn);
} // end finally
} // end fixSeen
/*--------------------------------------------------------------------------------
* Implementations from interface UserBackend
*--------------------------------------------------------------------------------

View File

@ -34,6 +34,8 @@ public class Account extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private static final String DISPLAY_LOGIN_ATTR = "com.silverwrist.venice.servlets.internal.DisplayLogin";
private static Category logger = Category.getInstance(Account.class.getName());
/*--------------------------------------------------------------------------------
@ -41,6 +43,12 @@ public class Account extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private void setDisplayLogins(ServletRequest request)
{
request.setAttribute(DISPLAY_LOGIN_ATTR,new Integer(0));
} // end setDisplayLogins
private NewAccountDialog makeNewAccountDialog() throws ServletException
{
final String desired_name = "NewAccountDialog";
@ -122,186 +130,154 @@ public class Account extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
RenderData rdat = createRenderData(request,response);
UserContext user = getUserContext(request);
String page_title = null;
ContentRender content = null;
boolean display_login = false;
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected String getMyLocation(HttpServletRequest request, VeniceEngine engine, UserContext user,
RenderData rdat)
{
if (request.getAttribute(DISPLAY_LOGIN_ATTR)!=null)
return "account?cmd=" + getStandardCommandParam(request);
else
return null;
} // end getMyLocation
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
String tgt = request.getParameter("tgt"); // target location
if (tgt==null)
tgt = "top"; // go back to the Top screen if nothing else
String cmd = request.getParameter("cmd"); // command parameter
String cmd = getStandardCommandParam(request);
if (cmd.equals("L"))
{ // "L" = Log in/out
{ // "L" = Log In/Out
if (user.isLoggedIn())
{ // log the user out and send 'em back to the "top" page
{ // this is a Logout command
clearUserContext(request);
// TODO: here is where the persistent cookie gets nuked, if it does...
rdat.redirectTo("top");
return;
throw new RedirectResult("top"); // take 'em back to the "top" page
} // end if (logging out)
else
{ // display the Login page
LoginDialog dlg = makeLoginDialog();
dlg.setupNew(tgt);
page_title = dlg.getTitle();
content = dlg;
} // end if
} // end else
// this is a Login command - display the Login page
LoginDialog dlg = makeLoginDialog();
dlg.setupNew(tgt);
return dlg;
} // end if ("L" command)
else if (cmd.equals("C"))
if (cmd.equals("C"))
{ // "C" = create new account
if (user.isLoggedIn())
{ // you can't create a new account while logged in on an existing one!
page_title = "Error";
content = new ErrorBox(page_title,"You cannot create a new account while logged in on "
+ "an existing one. You must log out first.",tgt);
if (user.isLoggedIn()) // you can't create a new account while logged in on an existing one!
return new ErrorBox("Error","You cannot create a new account while logged in on an existing "
+ "one. You must log out first.",tgt);
} // end if
else
{ // display the "Create Account" page
NewAccountDialog dlg = makeNewAccountDialog();
dlg.setEngine(getVeniceEngine());
page_title = dlg.getTitle();
dlg.setTarget(tgt);
dlg.setFieldValue("country","US");
content = dlg;
} // end else
// display the "Create Account" dialog
NewAccountDialog dlg = makeNewAccountDialog();
dlg.setEngine(engine);
dlg.setTarget(tgt);
dlg.setFieldValue("country","US");
return dlg;
} // end if ("C" command)
else if (cmd.equals("P"))
if (cmd.equals("P"))
{ // "P" = user profile
if (user.isLoggedIn())
{ // display the User Profile page
EditProfileDialog dlg = makeEditProfileDialog();
try
{ // load the profile information
dlg.setupDialog(user,tgt);
if (!(user.isLoggedIn())) // you have to be logged in for this one!
return new ErrorBox("Error","You must log in before you can modify the profile "
+ "on your account.",tgt);
// set up the Edit Profile dialog
EditProfileDialog dlg = makeEditProfileDialog();
try
{ /// set up the profile information for the dialog
dlg.setupDialog(user,tgt);
// prepare for display
page_title = dlg.getTitle();
content = dlg;
} // end try
catch (DataException e)
{ // unable to load the contact info for the profile
return new ErrorBox("Database Error","Database error retrieving profile: " + e.getMessage(),tgt);
} // end try
catch (DataException e)
{ // we couldn't load the contact info for the profile
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error retrieving profile: " + e.getMessage(),tgt);
} // end catch
} // end catch
} // end if
else
{ // you have to be logged in for this one!
page_title = "Error";
content = new ErrorBox(page_title,"You must log in before you can modify the profile "
+ "on your account.",tgt);
} // end else
return dlg; // display dialog
} // end if ("P" command)
else if (cmd.equals("V"))
if (cmd.equals("V"))
{ // "V" = verify email address
display_login = true;
if (user.isLoggedIn())
{ // display the Verify E-mail Address page
VerifyEmailDialog dlg = makeVerifyEmailDialog();
page_title = dlg.getTitle();
dlg.setTarget(tgt);
content = dlg;
} // end if
else
{ // you have to be logged in for this one!
page_title = "Error";
content = new ErrorBox(page_title,"You must log in before you can verify your account's "
setDisplayLogins(request);
if (!(user.isLoggedIn())) // you have to be logged in for this one!
return new ErrorBox("Error","You must log in before you can verify your account's "
+ "email address.",tgt);
} // end else
// display the "verify email" dialog
VerifyEmailDialog dlg = makeVerifyEmailDialog();
dlg.setTarget(tgt);
return dlg;
} // end else if ("V" command)
else
{ // unknown command
page_title = "Internal Error";
logger.error("invalid command to Account.doGet: " + cmd);
content = new ErrorBox(page_title,"Invalid command to Account.doGet",tgt);
} // end if ("V" command)
} // end else
// command not found!
logger.error("invalid command to Account.doGet: " + cmd);
return new ErrorBox("Internal Error","Invalid command to Account.doGet",tgt);
BaseJSPData basedat = new BaseJSPData(page_title,"account?cmd=" + cmd,content);
basedat.displayLoginLinks(display_login);
basedat.transfer(getServletContext(),rdat);
} // end doVeniceGet
} // end doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
RenderData rdat = createRenderData(request,response);
UserContext user = getUserContext(request);
String page_title = null;
ContentRender content = null;
boolean display_login = false;
changeMenuTop(request); // this is "top" menus
String tgt = request.getParameter("tgt"); // target location
if (tgt==null)
tgt = "top"; // go back to Top screen if nothing else
String cmd = request.getParameter("cmd"); // command parameter
tgt = "top"; // go back to the Top screen if nothing else
String cmd = getStandardCommandParam(request);
if (cmd.equals("L"))
{ // log the user in
{ // "L" = login the user
LoginDialog dlg = makeLoginDialog();
if (dlg.isButtonClicked(request,"cancel"))
{ // go back where we came from - we decided not to log in anyhoo
rdat.redirectTo(tgt);
return;
} // end if (canceled)
throw new RedirectResult(tgt); // we decided not to log in - go back where we came from
if (dlg.isButtonClicked(request,"remind"))
{ // this will email a password reminder to the owner's account
dlg.loadValues(request); // load the dialog values
try
{ // send the password reminder
getVeniceEngine().sendPasswordReminder(dlg.getFieldValue("user"));
engine.sendPasswordReminder(dlg.getFieldValue("user"));
// recycle and redisplay the dialog box
dlg.resetOnError("Password reminder has been sent to your e-mail address.");
page_title = dlg.getTitle();
content = dlg;
} // end try
catch (DataException e1)
{ // this indicates a database error - display an ErrorBox
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding user: " + e1.getMessage(),tgt);
catch (DataException de)
{ // there was a database error finding your email address
return new ErrorBox("Database Error","Database error finding user: " + de.getMessage(),tgt);
} // end catch
catch (AccessError e2)
catch (AccessError ae)
{ // this indicates a problem with the user account or password
page_title = "User E-mail Address Not Found";
content = new ErrorBox(page_title,e2.getMessage(),tgt);
return new ErrorBox("User E-mail Address Not Found",ae.getMessage(),tgt);
} // end catch
catch (EmailException ee)
{ // error sending the confirmation email
page_title = "E-mail Error";
content = new ErrorBox(page_title,"E-mail error sending reminder: " + ee.getMessage(),tgt);
return new ErrorBox("E-mail Error","E-mail error sending reminder: " + ee.getMessage(),tgt);
} // end catch
} // end if ("reminder" button clicked)
else if (dlg.isButtonClicked(request,"login"))
return dlg; // redisplay the dialog
} // end if ("remind" button clicked)
if (dlg.isButtonClicked(request,"login"))
{ // we actually want to try and log in! imagine that!
dlg.loadValues(request); // load the values
@ -313,123 +289,96 @@ public class Account extends VeniceServlet
// assuming it worked OK, redirect them back where they came from
// (or to the verification page if they need to go there)
String url;
if (user.isEmailVerified())
url = tgt;
else // they haven't verified yet - remind them to do so
url = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
clearMenu(request);
rdat.redirectTo(url);
return;
if (user.isEmailVerified())
throw new RedirectResult(tgt);
else // they haven't verified yet - remind them to do so
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
} // end try
catch (DataException e1)
catch (DataException de)
{ // this indicates a database error - display an ErrorBox
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error logging in: " + e1.getMessage(),tgt);
return new ErrorBox("Database Error","Database error logging in: " + de.getMessage(),tgt);
} // end catch
catch (AccessError e2)
catch (AccessError ae)
{ // this indicates a problem with the user account or password
dlg.resetOnError(e2.getMessage());
page_title = dlg.getTitle();
content = dlg;
dlg.resetOnError(ae.getMessage());
} // end catch
} // end else if ("login" button clicked)
else
{ // the button must be wrong!
page_title = "Internal Error";
logger.error("no known button click on Account.doPost, cmd=L");
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
return dlg; // go back and redisplay the dialog
} // end else
} // end if ("login" button clicked)
// the button must be wrong!
logger.error("no known button click on Account.doPost, cmd=L");
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
} // end if ("L" command)
else if (cmd.equals("C"))
{ // C = Create New Account
if (cmd.equals("C"))
{ // "C" = Create New Account
NewAccountDialog dlg = makeNewAccountDialog();
dlg.setEngine(getVeniceEngine());
dlg.setEngine(engine);
if (dlg.isButtonClicked(request,"cancel"))
{ // go back where we came from - we decided not to create the account anyhoo
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
response.sendRedirect(url);
return;
} // end if ("cancel" button clicked)
throw new RedirectResult(tgt); // we decided not to create account - go back where we came from
if (dlg.isButtonClicked(request,"create"))
{ // OK, actually want to create the account!
dlg.loadValues(request); // load field values
try
{ // attempt to create the account
UserContext uc = dlg.doDialog(request);
putUserContext(request,uc); // effectively logging in the new user
user = uc;
// now jump to the Verify page
String partial = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
String url = response.encodeRedirectURL(rdat.getFullServletPath(partial));
response.sendRedirect(url);
return;
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
} // end try
catch (ValidationException ve)
{ // unable to validate some of the data in the form
dlg.resetOnError(ve.getMessage() + " Please try again.");
page_title = dlg.getTitle();
content = dlg;
} // end catch
catch (DataException de)
{ // data error in setting up account
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error creating account: " + de.getMessage(),tgt);
return new ErrorBox("Database Error","Database error creating account: " + de.getMessage(),tgt);
} // end catch
catch (AccessError ae)
{ // access error in setting up the account
dlg.resetOnError(ae.getMessage());
page_title = dlg.getTitle();
content = dlg;
} // end catch
catch (EmailException ee)
{ // error sending the confirmation email
page_title = "E-mail Error";
content = new ErrorBox(page_title,"E-mail error creating account: " + ee.getMessage(),tgt);
return new ErrorBox("E-mail Error","E-mail error creating account: " + ee.getMessage(),tgt);
} // end catch
} // end if ("create" button clicked)
else
{ // the button must be wrong!
page_title = "Internal Error";
logger.error("no known button click on Account.doPost, cmd=C");
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
return dlg; // redisplay me
} // end else
} // end if ("create" button pressed)
} // end else if ("C" command)
else if (cmd.equals("V"))
{ // V = Verify E-mail Address
display_login = true;
// the button must be wrong!
logger.error("no known button click on Account.doPost, cmd=C");
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
} // end if ("C" command)
if (cmd.equals("V"))
{ // "V" = Verify E-mail Address
setDisplayLogins(request);
VerifyEmailDialog dlg = makeVerifyEmailDialog();
if (dlg.isButtonClicked(request,"cancel"))
{ // go back to our desired location
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
response.sendRedirect(url);
return;
} // end if ("cancel" button clicked)
throw new RedirectResult(tgt); // we decided not to bother - go back where we came from
if (dlg.isButtonClicked(request,"again"))
{ // do a "send again"
{ // send the confirmation message again
try
{ // resend the email confirmation
user.resendEmailConfirmation();
@ -437,25 +386,24 @@ public class Account extends VeniceServlet
// now force the form to be redisplayed
dlg.clearAllFields();
dlg.setTarget(tgt);
page_title = dlg.getTitle();
content = dlg;
} // end try
catch (DataException de)
{ // data error in setting up account
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error sending confirmation: " + de.getMessage(),tgt);
{ // database error resending confirmation
return new ErrorBox("Database Error","Database error sending confirmation: " + de.getMessage(),tgt);
} // end catch
catch (EmailException ee)
{ // error sending the confirmation email
page_title = "E-mail Error";
content = new ErrorBox(page_title,"E-mail error sending confirmation: " + ee.getMessage(),tgt);
return new ErrorBox("E-mail Error","E-mail error sending confirmation: " + ee.getMessage(),tgt);
} // end catch
} // end if ("again" clicked)
else if (dlg.isButtonClicked(request,"ok"))
return dlg; // redisplay the dialog
} // end if ("again" button clicked)
if (dlg.isButtonClicked(request,"ok"))
{ // try to verify the confirmation number
dlg.loadValues(request); // load field values
@ -465,119 +413,85 @@ public class Account extends VeniceServlet
user.confirmEmail(dlg.getConfirmationNumber());
// go back to our desired location
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
response.sendRedirect(url);
return;
throw new RedirectResult(tgt);
} // end try
catch (ValidationException ve)
{ // there was a validation error...
dlg.resetOnError(ve.getMessage() + " Please try again.");
page_title = dlg.getTitle();
content = dlg;
} // end catch
catch (DataException de)
{ // data error in setting up account
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error verifying email: " + de.getMessage(),tgt);
{ // data error in confirming account
return new ErrorBox("Database Error","Database error verifying email: " + de.getMessage(),tgt);
} // end catch
catch (AccessError ae)
{ // access error in setting up the account
{ // invalid confirmation number, perhaps?
dlg.resetOnError(ae.getMessage());
page_title = dlg.getTitle();
content = dlg;
} // end catch
} // end else if ("OK" clicked)
else
{ // the button must be wrong!
page_title = "Internal Error";
logger.error("no known button click on Account.doPost, cmd=V");
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
return dlg; // redisplay the dialog
} // end else
} // end if ("ok" button clicked)
} // end else if ("V" command)
else if (cmd.equals("P"))
{ // P = Edit User Profile
display_login = true;
// the button must be wrong!
logger.error("no known button click on Account.doPost, cmd=V");
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
} // end if ("V" command)
if (cmd.equals("P"))
{ // "P" = Edit User Profile
setDisplayLogins(request);
EditProfileDialog dlg = makeEditProfileDialog();
if (dlg.isButtonClicked(request,"cancel"))
{ // go back to our desired location
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
response.sendRedirect(url);
return;
} // end if ("cancel" button clicked)
throw new RedirectResult(tgt); // we decided not to bother - go back where we came from
if (dlg.isButtonClicked(request,"update"))
{ // we're ready to update the user profile
dlg.loadValues(request); // load field values
try
{ // validate the dialog and start setting info
String url;
if (dlg.doDialog(user))
{ // the email address was changed - need to jump to the "Verify" page
String partial = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
url = response.encodeRedirectURL(rdat.getFullServletPath(partial));
} // end if
else // just go back where we came from
url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
response.sendRedirect(url);
return;
{ // validate the dialog and reset profile info
if (dlg.doDialog(user)) // need to reconfirm email address
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
else
throw new RedirectResult(tgt); // just go straight on back
} // end try
catch (ValidationException ve)
{ // there was a validation error...
dlg.resetOnError(ve.getMessage() + " Please try again.");
page_title = dlg.getTitle();
content = dlg;
} // end catch
catch (DataException de)
{ // data error in setting up account
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error updating profile: " + de.getMessage(),tgt);
{ // data error in changing profile
return new ErrorBox("Database Error","Database error updating profile: " + de.getMessage(),tgt);
} // end catch
catch (EmailException ee)
{ // error sending the confirmation email
page_title = "E-mail Error";
content = new ErrorBox(page_title,"E-mail error sending confirmation: " + ee.getMessage(),tgt);
return new ErrorBox("E-mail Error","E-mail error sending confirmation: " + ee.getMessage(),tgt);
} // end catch
} // end if ("update" button pressed)
else
{ // the button must be wrong!
page_title = "Internal Error";
logger.error("no known button click on Account.doPost, cmd=P");
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
return dlg; // redisplay dialog
} // end else
} // end if ("update" button clicked)
} // end else if ("P" command)
else
{ // unknown command
page_title = "Internal Error";
logger.error("invalid command to Account.doPost: " + cmd);
content = new ErrorBox(page_title,"Invalid command to Account.doPost",tgt);
// the button must be wrong!
logger.error("no known button click on Account.doPost, cmd=P");
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
} // end else
} // end if
changeMenuTop(request);
// unknown command
logger.error("invalid command to Account.doPost: " + cmd);
return new ErrorBox("Internal Error","Invalid command to Account.doPost",tgt);
BaseJSPData basedat = new BaseJSPData(page_title,"account?cmd=" + cmd,content);
basedat.displayLoginLinks(display_login);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class Account

View File

@ -22,10 +22,8 @@ import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.*;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.ServletMultipartHandler;
import com.silverwrist.util.ServletMultipartException;
import com.silverwrist.venice.ValidationException;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.servlets.format.*;
@ -38,135 +36,6 @@ public class Attachment extends VeniceServlet
private static Category logger = Category.getInstance(Attachment.class.getName());
/*--------------------------------------------------------------------------------
* Internal functions
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(String str, UserContext user)
throws ValidationException, DataException
{
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
return getSIGParameter(request.getParameter("sig"),user);
} // end getSIGParameter
private static SIGContext getSIGParameter(ServletMultipartHandler mphandler, UserContext user)
throws ValidationException, DataException
{
if (mphandler.isFileParam("sig"))
throw new ValidationException("Internal Error: SIG should be a normal param");
return getSIGParameter(mphandler.getValue("sig"),user);
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(String str, SIGContext sig)
throws ValidationException, DataException, AccessError
{
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
return getConferenceParameter(request.getParameter("conf"),sig);
} // end getConferenceParameter
private static ConferenceContext getConferenceParameter(ServletMultipartHandler mphandler, SIGContext sig)
throws ValidationException, DataException, AccessError
{
if (mphandler.isFileParam("conf"))
throw new ValidationException("Internal Error: conference should be a normal param");
return getConferenceParameter(mphandler.getValue("conf"),sig);
} // end getConferenceParameter
private static TopicMessageContext getMessageParameter(String str, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Message parameter not specified!");
throw new ValidationException("No message specified.");
} // end if
try
{ // turn the string into a postid, and thence to a TopicMessageContext
long postid = Long.parseLong(str);
return conf.getMessageByPostID(postid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert message parameter '" + str + "'!");
throw new ValidationException("Invalid message parameter.");
} // end catch
} // end getMessageParameter
private static TopicMessageContext getMessageParameter(ServletRequest request, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
return getMessageParameter(request.getParameter("msg"),conf);
} // end getMessageParameter
private static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
if (mphandler.isFileParam("msg"))
throw new ValidationException("Internal Error: message should be a normal param");
return getMessageParameter(mphandler.getValue("msg"),conf);
} // end getMessageParameter
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
@ -180,248 +49,101 @@ public class Attachment extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicMessageContext msg = null; // message context
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
// get the message we want to use
TopicMessageContext msg = getMessageParameter(request,conf,true,"top");
String type, filename;
int length;
InputStream data;
try
{ // this outer try is to catch ValidationException
try
{ // all commands require a SIG parameter
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
} // end try
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
} // end catch
if (content==null)
{ // we got the SIG parameter OK
try
{ // all commands require a conference parameter
conf = getConferenceParameter(request,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
} // end catch
} // end if
if (content==null)
{ // we got the conference parameter OK
try
{ // now we need a message parameter
msg = getMessageParameter(request,conf);
if (logger.isDebugEnabled())
logger.debug("found post #" + String.valueOf(msg.getPostID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),"top");
} // end catch
} // end if
{ // retrieve the information about the attachment
type = msg.getAttachmentType();
filename = msg.getAttachmentFilename();
length = msg.getAttachmentLength();
data = msg.getAttachmentData();
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
{ // unable to access the data stream
return new ErrorBox("Access Error",ae.getMessage(),"top");
} // end catch
catch (DataException de)
{ // error getting at the data stream from the attachment
return new ErrorBox("Database Error","Database error retrieving attachment: " + de.getMessage(),"top");
} // end catch
if (content==null)
{ // extract the attachment data from the message and send it out
try
{ // extract the attachment data and send it out!
rdat.sendBinaryData(msg.getAttachmentType(),msg.getAttachmentFilename(),
msg.getAttachmentLength(),msg.getAttachmentData());
return; // now we're all done!
// now we want to send that data back to the user!
throw new SendFileResult(type,filename,length,data);
} // end try
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end doVeniceGet
} // end catch
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error retrieving attachment: " + de.getMessage(),"top");
} // end catch
} // end if
// we only get here if there were an error
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
protected VeniceContent doVenicePost(HttpServletRequest request, ServletMultipartHandler mphandler,
VeniceEngine engine, UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
ServletMultipartHandler mphandler = null;
String target = "top";
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicMessageContext msg = null; // message context
// Get target URL for the operation
if (mphandler.isFileParam("target"))
return new ErrorBox(null,"Internal Error: 'target' should be a normal param","top");
String target = mphandler.getValue("target");
setMyLocation(request,target);
// also check on file parameter status
if (!(mphandler.isFileParam("thefile")))
return new ErrorBox(null,"Internal Error: 'thefile' should be a file param",target);
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
// get the message we want to use
TopicMessageContext msg = getMessageParameter(request,conf,true,"top");
try
{ // this outer try is to catch ValidationException
mphandler = new ServletMultipartHandler(request);
if (mphandler.isFileParam("target"))
throw new ValidationException("Internal Error: 'target' should be a normal param");
target = mphandler.getValue("target");
try
{ // all commands require a SIG parameter
sig = getSIGParameter(mphandler,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
} // end try
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),target);
} // end catch
if (content==null)
{ // we got the SIG parameter OK
try
{ // all commands require a conference parameter
conf = getConferenceParameter(mphandler,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),target);
} // end catch
} // end if
if (content==null)
{ // we got the conference parameter OK
try
{ // now we need a message parameter
msg = getMessageParameter(mphandler,conf);
if (logger.isDebugEnabled())
logger.debug("found post #" + String.valueOf(msg.getPostID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),target);
} // end catch
} // end if
// also check on file and target parameter status
if (!(mphandler.isFileParam("thefile")))
throw new ValidationException("Internal error: 'thefile' should be a file param");
{ // attach the data to the message!
msg.attachData(mphandler.getContentType("thefile"),mphandler.getValue("thefile"),
mphandler.getContentSize("thefile"),mphandler.getFileContentStream("thefile"));
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),target);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),target);
} // end catch
catch (ServletMultipartException smpe)
{ // this is kind of a special case
page_title = "Error";
content = new ErrorBox(page_title,"Internal Error: " + smpe.getMessage(),target);
{ // error processing the file parameter data
return new ErrorBox(null,"Internal Error: " + smpe.getMessage(),target);
} // end catch
catch (AccessError ae)
{ // access error posting the attachment data
return new ErrorBox("Access Error",ae.getMessage(),target);
} // end catch
catch (DataException de)
{ // error storing the attachment in the database
return new ErrorBox("Database Error","Database error storing attachment: " + de.getMessage(),target);
} // end catch
if (content==null)
{ // we're ready to get the data and attach it
try
{ // attach the data to the message!
msg.attachData(mphandler.getContentType("thefile"),mphandler.getValue("thefile"),
mphandler.getContentSize("thefile"),mphandler.getFileContentStream("thefile"));
throw new RedirectResult(target); // get back, get back, get back to where you once belonged
// go back to where we should have gone before we uploaded the message
rdat.redirectTo(target);
return;
} // end try
catch (ServletMultipartException smpe)
{ // this is kind of a special case
page_title = "Error";
content = new ErrorBox(page_title,"Internal Error: " + smpe.getMessage(),target);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),target);
} // end catch
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error storing attachment: " + de.getMessage(),target);
} // end catch
} // end if (we got all the parameters OK)
// we only get here if there were an error
BaseJSPData basedat = new BaseJSPData(page_title,target,content);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class Attachment

View File

@ -82,82 +82,8 @@ public class ConfDisplay extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("conf");
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("top");
if (StringUtil.isStringEmpty(str))
return null; // no topic specified
try
{ // turn the string into a TopicID, and thence to a TopicContext
short topicid = Short.parseShort(str);
return conf.getTopic(topicid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert topic parameter '" + str + "'!");
throw new ValidationException("Invalid topic parameter.");
} // end catch
} // end getTopicParameter
private static void getViewSortDefaults(ServletRequest request, int confid, TopicSortHolder tsc)
throws ValidationException
private static void getViewSortDefaults(ServletRequest request, int confid, TopicSortHolder tsc,
String on_error) throws ErrorBox
{
String str = request.getParameter("view");
if (!(StringUtil.isStringEmpty(str)))
@ -176,7 +102,7 @@ public class ConfDisplay extends VeniceServlet
break;
default:
throw new ValidationException("Invalid view parameter.");
throw new ErrorBox(null,"Invalid view parameter.",on_error);
} // end switch
@ -184,7 +110,7 @@ public class ConfDisplay extends VeniceServlet
catch (NumberFormatException nfe)
{ // failure in parseInt
logger.error("Cannot convert view parameter '" + str + "'!");
throw new ValidationException("Invalid view parameter.");
throw new ErrorBox(null,"Invalid view parameter.",on_error);
} // end catch
@ -208,7 +134,7 @@ public class ConfDisplay extends VeniceServlet
break;
default:
throw new ValidationException("Invalid sort parameter.");
throw new ErrorBox(null,"Invalid sort parameter.",on_error);
} // end switch
@ -216,7 +142,7 @@ public class ConfDisplay extends VeniceServlet
catch (NumberFormatException nfe)
{ // failure in parseInt
logger.error("Cannot convert sort parameter '" + str + "'!");
throw new ValidationException("Invalid sort parameter.");
throw new ErrorBox(null,"Invalid sort parameter.",on_error);
} // end catch
@ -224,8 +150,8 @@ public class ConfDisplay extends VeniceServlet
} // end getViewSortDefaults
private static PostInterval getInterval(VeniceEngine engine, ServletRequest request, TopicContext topic)
throws ValidationException
private static PostInterval getInterval(VeniceEngine engine, ServletRequest request, TopicContext topic,
String on_error) throws ErrorBox
{
int first, last;
@ -294,7 +220,7 @@ public class ConfDisplay extends VeniceServlet
} // end try
catch (NumberFormatException nfe)
{ // we could not translate the parameter to a number
throw new ValidationException("Message parameter is invalid.");
throw new ErrorBox(null,"Message parameter is invalid.",on_error);
} // end catch
@ -312,7 +238,7 @@ public class ConfDisplay extends VeniceServlet
} // end try
catch (NumberFormatException nfe)
{ // we could not translate the parameter to a number
throw new ValidationException("Message parameter is invalid.");
throw new ErrorBox(null,"Message parameter is invalid.",on_error);
} // end catch
@ -403,178 +329,94 @@ public class ConfDisplay extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicContext topic = null; // topic context
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
try
{ // this outer try is to catch ValidationException
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
// get the topic, if we have it
TopicContext topic = getTopicParameter(request,conf,false,"top");
if (topic!=null)
{ // we're handling messages within a single topic
if (logger.isDebugEnabled())
logger.debug("MODE: display messages in topic");
String on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
setMyLocation(request,on_error + "&topic=" + topic.getTopicNumber());
// if this request is restoring the number of unread posts in another topic, try to do so
restorePosts(request,conf);
// determine what the post interval is we want to display
PostInterval piv = getInterval(engine,request,topic,on_error);
boolean read_new = !(StringUtil.isStringEmpty(request.getParameter("rnm")));
boolean show_adv = !(StringUtil.isStringEmpty(request.getParameter("shac")));
// Create the post display.
TopicPosts tpos = null;
try
{ // all commands require a SIG parameter
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
{ // create the display
tpos = new TopicPosts(request,engine,sig,conf,topic,piv.getFirst(),piv.getLast(),read_new,show_adv);
} // end try
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
{ // there was a database error retrieving messages
return new ErrorBox("Database Error","Database error listing messages: " + de.getMessage(),on_error);
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the message list
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
if (content==null)
{ // we got the SIG parameter OK
try
{ // all commands require a conference parameter
conf = getConferenceParameter(request,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
return tpos;
} // end catch
} // end if (messages in a topic)
else
{ // we're displaying the conference's topic list
if (logger.isDebugEnabled())
logger.debug("MODE: display topics in conference");
setMyLocation(request,"confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID());
String on_error = "confops?sig=" + sig.getSIGID();
} // end if
// get any changes to view or sort options
TopicSortHolder opts = TopicSortHolder.retrieve(request.getSession(true));
getViewSortDefaults(request,conf.getConfID(),opts,on_error);
if (content==null)
{ // we got the conference parameter OK
try
{ // there's an optional topic parameter
topic = getTopicParameter(request,conf);
if (logger.isDebugEnabled())
{ // do a little debugging output
if (topic!=null)
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
else
logger.debug("no topic specified");
TopicListing tl = null;
try
{ // create the topic lict
tl = new TopicListing(request,sig,conf,opts.getViewOption(conf.getConfID()),
opts.getSortOption(conf.getConfID()));
} // end if
} // end try
catch (DataException de)
{ // there was a database error retrieving topics
return new ErrorBox("Database Error","Database error listing topics: " + de.getMessage(),on_error);
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the topic list
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
} // end catch
} // end if
return tl;
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end else (topics in a conference)
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
if (content==null)
{ // OK, let's handle the display now
if (topic!=null)
{ // we're handling messages within a single topic
if (logger.isDebugEnabled())
logger.debug("MODE: display messages in topic");
// if this request is restoring the number of unread posts in another topic, try to do so
restorePosts(request,conf);
try
{ // determine what the post interval is we want to display
VeniceEngine engine = getVeniceEngine();
PostInterval piv = getInterval(engine,request,topic);
boolean read_new = !(StringUtil.isStringEmpty(request.getParameter("rnm")));
boolean show_adv = !(StringUtil.isStringEmpty(request.getParameter("shac")));
// create the post display
TopicPosts tpos = new TopicPosts(request,engine,sig,conf,topic,piv.getFirst(),piv.getLast(),
read_new,show_adv);
content = tpos;
page_title = topic.getName() + ": " + String.valueOf(topic.getTotalMessages()) + " Total; "
+ String.valueOf(tpos.getNewMessages()) + " New; Last: "
+ rdat.formatDateForDisplay(topic.getLastUpdateDate());
} // end try
catch (ValidationException ve)
{ // there's an error in the parameters somewhere
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // there was a database error retrieving topics
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error listing messages: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the topic list
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
} // end if
else
{ // we're displaying the conference's topic list
if (logger.isDebugEnabled())
logger.debug("MODE: display topics in conference");
TopicSortHolder opts = TopicSortHolder.retrieve(request.getSession(true));
try
{ // get any changes to view or sort options
getViewSortDefaults(request,conf.getConfID(),opts);
// create the topic list
content = new TopicListing(request,sig,conf,opts.getViewOption(conf.getConfID()),
opts.getSortOption(conf.getConfID()));
page_title = "Topics in " + conf.getName();
} // end try
catch (ValidationException ve)
{ // there was some sort of a parameter error in the display
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // there was a database error retrieving topics
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error listing topics: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the topic list
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
} // end else
} // end if
BaseJSPData basedat = new BaseJSPData(page_title,"confdisp?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class ConfDisplay

View File

@ -39,58 +39,6 @@ public class ConfOperations extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("conf");
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private CreateConferenceDialog makeCreateConferenceDialog() throws ServletException
{
final String desired_name = "CreateConferenceDialog";
@ -108,22 +56,22 @@ public class ConfOperations extends VeniceServlet
} // end makeCreateConferenceDialog
private static boolean validateNewTopic(ServletRequest request) throws ValidationException
private static boolean validateNewTopic(ServletRequest request, String on_error) throws ErrorBox
{
boolean is_title_null, is_zp_null;
String foo = request.getParameter("title");
if (foo==null)
throw new ValidationException("Title parameter was not specified.");
throw new ErrorBox(null,"Title parameter was not specified.",on_error);
is_title_null = (foo.length()==0);
foo = request.getParameter("pseud");
if (foo==null)
throw new ValidationException("Pseud parameter was not specified.");
throw new ErrorBox(null,"Pseud parameter was not specified.",on_error);
foo = request.getParameter("pb");
if (foo==null)
throw new ValidationException("Body text was not specified.");
throw new ErrorBox(null,"Body text was not specified.",on_error);
is_zp_null = (foo.length()==0);
return is_title_null || is_zp_null;
@ -143,375 +91,256 @@ public class ConfOperations extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
SIGContext sig = null;
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
String on_error = "confops?sig=" + sig.getSIGID();
// get the command we want to use
String cmd = getStandardCommandParam(request);
if (cmd.equals("C"))
{ // "C" = "Create conference"
if (!(sig.canCreateConference()))
return new ErrorBox("Access Error","You are not permitted to create conferences in this SIG.",
on_error);
// make the "create" dialog
CreateConferenceDialog dlg = makeCreateConferenceDialog();
dlg.setupDialog(engine,sig);
setMyLocation(request,on_error + "&cmd=C");
return dlg;
} // end if ("C" command)
if (cmd.equals("T"))
{ // "T" = "Create topic" (requires conference parameter)
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
// Create the new topic form.
NewTopicForm ntf = new NewTopicForm(sig,conf);
ntf.setupNewRequest();
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=T");
return ntf;
} // end if ("T" command)
if (cmd.equals("Q"))
{ // "Q" = display Manage menu (requires conference parameter)
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
// display the "Manage Conference" display
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=Q");
return new ManageConference(sig,conf);
} // end if ("Q" command)
if (cmd.equals("FX"))
{ // "FX" = the dreaded fixseen :-) - catches up the entire conference
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
try
{ // do the fixseen operation
conf.fixSeen();
} // end try
catch (DataException de)
{ // some sort of error in the database
return new ErrorBox("Database Error","Database error catching up conference: " + de.getMessage(),
on_error);
} // end catch
return null; // null response here
} // end if ("FX" command)
// Any unrecognized command shows us the conference list.
on_error = "sigprofile?sig=" + sig.getSIGID();
try
{ // all conference commands require a SIG parameter as well
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
{ // make a conference listing
setMyLocation(request,"confops?sig=" + sig.getSIGID());
return new ConferenceListing(sig);
} // end try
catch (ValidationException ve)
{ // no SIG specified
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
{ // something wrong in the database
return new ErrorBox("Database Error","Database error finding conferences: " + de.getMessage(),on_error);
} // end catch
catch (AccessError ae)
{ // some lack of access is causing problems
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
if (content==null)
{ // get the command we want to use
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
} // end doVeniceGet
if (cmd.equals("C"))
{ // "C" = "Create conference"
if (sig.canCreateConference())
{ // make the create conference dialog!
CreateConferenceDialog dlg = makeCreateConferenceDialog();
dlg.setupDialog(getVeniceEngine(),sig);
content = dlg;
page_title = dlg.getTitle();
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
String on_error = "confops?sig=" + sig.getSIGID();
} // end if
else
{ // we can't create conferences
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to create conferences in this SIG.","top");
// get the command we want to use
String cmd = getStandardCommandParam(request);
} // end else
if (cmd.equals("C"))
{ // "C" = "Create Conference"
if (!(sig.canCreateConference()))
return new ErrorBox("Access Error","You are not permitted to create conferences in this SIG.",
on_error);
// load up the create conference dialog!
CreateConferenceDialog dlg = makeCreateConferenceDialog();
dlg.setupDialog(engine,sig);
if (dlg.isButtonClicked(request,"cancel"))
throw new RedirectResult(on_error); // they chickened out - go back to the conference list
if (dlg.isButtonClicked(request,"create"))
{ // OK, they actually want to create the new conference...
dlg.loadValues(request); // load the form data
} // end if
else if (cmd.equals("T"))
{ // "T" = "Create topic" (requires conference parameter)
try
{ // start by getting the conference parameter
ConferenceContext conf = getConferenceParameter(request,sig);
{ // attempt to create the conference!
ConferenceContext conf = dlg.doDialog(sig);
// create the New Topic form
NewTopicForm ntf = new NewTopicForm(sig,conf);
ntf.setupNewRequest();
content = ntf;
page_title = "Create New Topic";
// success! redirect to the conference's topic list
throw new RedirectResult("confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID());
} // end try
catch (ValidationException ve)
{ // we can't get the conference parameter
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
{ // validation error - throw it back to the user
dlg.resetOnError(ve.getMessage() + " Please try again.");
} // end catch
catch (AccessError ae)
{ // we have some sort of access problem
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
{ // some sort of access error - display an error dialog
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // some sort of error in the database
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
{ // database error creating the conference
return new ErrorBox("Database Error","Database error creating conference: " + de.getMessage(),
on_error);
} // end catch
} // end else
else
{ // any unrecognized command jumps us to "conference list"
try
{ // show the conference listing
content = new ConferenceListing(sig);
page_title = "Conference Listing: " + sig.getName();
setMyLocation(request,on_error + "&cmd=C");
return dlg; // redisplay the dialog
} // end try
catch (DataException de)
{ // something wrong in the database
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conferences: " + de.getMessage(),
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
} // end if ("create" button clicked)
} // end catch
catch (AccessError ae)
{ // some lack of access is causing problems
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
// error - don't know what button was clicked
logger.error("no known button click on ConfOperations.doPost, cmd=C");
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
} // end catch
} // end if ("C" command)
} // end else
if (cmd.equals("T"))
{ // "T" command = Create New Topic (requires conference parameter)
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
} // end if (SIG parameter retrieved OK)
// determine what to do based on the button pressed
if (isImageButtonClicked(request,"cancel"))
throw new RedirectResult(on_error); // the user chickened out - go back to the conference display
BaseJSPData basedat = new BaseJSPData(page_title,"confops?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
SIGContext sig = null;
String location;
try
{ // all conference commands require a SIG parameter as well
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
location = "confops?sig=" + String.valueOf(sig.getSIGID());
} // end try
catch (ValidationException ve)
{ // no SIG specified
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
location = "top";
} // end catch
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
location = "top";
} // end catch
if (content==null)
{ // get the command we want to use
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
if (cmd.equals("C"))
{ // "C" = "Create Conference"
if (sig.canCreateConference())
{ // load up the create conference dialog!
CreateConferenceDialog dlg = makeCreateConferenceDialog();
dlg.setupDialog(getVeniceEngine(),sig);
if (dlg.isButtonClicked(request,"cancel"))
{ // they chickened out - go back to the conference list
rdat.redirectTo(location);
return;
} // end if
if (dlg.isButtonClicked(request,"create"))
{ // OK, they actually want to create the new conference...
dlg.loadValues(request); // load the form data
try
{ // attempt to create the conference!
ConferenceContext conf = dlg.doDialog(sig);
// success! go to the conference's topic list
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()));
return;
} // end try
catch (ValidationException ve)
{ // validation error - throw it back to the user
dlg.resetOnError(ve.getMessage() + " Please try again.");
content = dlg;
page_title = dlg.getTitle();
} // end catch
catch (AccessError ae)
{ // some sort of access error - display an error dialog
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
catch (DataException de)
{ // database error creating the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error creating conference: " + de.getMessage(),
location);
} // end catch
} // end if
else
{ // error - don't know what button was clicked
page_title = "Internal Error";
logger.error("no known button click on ConfOperations.doPost, cmd=C");
content = new ErrorBox(page_title,"Unknown command button pressed",location);
} // end else
} // end if
else
{ // we can't create conferences
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to create conferences in this SIG.",
location);
} // end else
} // end if ("C" command)
else if (cmd.equals("T"))
{ // "T" command = Create New Topic (requires conference parameter)
ConferenceContext conf = null;
if (isImageButtonClicked(request,"preview"))
{ // generate a preview and redisplay the form
NewTopicForm ntf = new NewTopicForm(sig,conf);
try
{ // start by getting the conference parameter
conf = getConferenceParameter(request,sig);
{ // generate a preview display
ntf.generatePreview(engine,conf,request);
} // end try
catch (ValidationException ve)
{ // we can't get the conference parameter
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),location);
{ // something messed up in the preview generation
return new ErrorBox(null,ve.getMessage(),on_error);
} // end catch
if (ntf.isNullRequest())
return null; // no title or text specified - "204 No Content"
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=T");
return ntf;
} // end if ("preview" clicked)
if (isImageButtonClicked(request,"post"))
{ // first validate that we've got all the parameters
if (validateNewTopic(request,on_error))
return null; // this is a null request - send a null response
try
{ // add the new topic!
TopicContext topic = conf.addTopic(request.getParameter("title"),request.getParameter("pseud"),
request.getParameter("pb"));
final String yes = "Y";
if (yes.equals(request.getParameter("attach")))
{ // we need to upload an attachment for this post
setMyLocation(request,on_error);
return new AttachmentForm(sig,conf,topic.getMessage(0),on_error);
} // end if
} // end try
catch (DataException de)
{ // display a database error
return new ErrorBox("Database Error","Database error adding topic: " + de.getMessage(),on_error);
} // end catch
catch (AccessError ae)
{ // we have some sort of access problem
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
catch (DataException de)
{ // some sort of error in the database
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
{ // some sort of access problem
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
if (content==null)
{ // determine what to do based on the button pressed
String on_error = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID());
if (isImageButtonClicked(request,"cancel"))
{ // the user chickened out - go back to the conference display
rdat.redirectTo(on_error);
return;
// jump back to the form under normal circumstances
throw new RedirectResult(on_error);
} // end if
} // end if ("post" clicked)
if (isImageButtonClicked(request,"preview"))
{ // generate a preview and redisplay the form
NewTopicForm ntf = new NewTopicForm(sig,conf);
// we don't know what button was pressed
logger.error("no known button click on ConfOperations.doPost, cmd=T");
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
try
{ // do a preview generation
ntf.generatePreview(getVeniceEngine(),conf,request);
} // end if ("T" command)
if (cmd.equals("P"))
{ // "P" = Set default pseud (requires conference parameter)
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
if (ntf.isNullRequest())
{ // no title or text specified - this is a "204 No Content" return
rdat.nullResponse();
return;
// TODO: finish this later
} // end if
return null;
content = ntf;
page_title = "Preview New Topic";
} // end if ("P" command)
} // end try
catch (ValidationException ve)
{ // something messed up in the preview generation
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),on_error);
// unrecognized command!
logger.error("invalid command to ConfOperations.doPost: " + cmd);
return new ErrorBox("Internal Error","Invalid command to ConfOperations.doPost",on_error);
} // end catch
} // end if ("preview" button clicked)
else if (isImageButtonClicked(request,"post"))
{ // OK, let's do a post request!
try
{ // first validate that we've got all the parameters
if (validateNewTopic(request))
{ // this is a null request - send a null response
rdat.nullResponse();
return;
} // end if
// add the new topic!
TopicContext topic = conf.addTopic(request.getParameter("title"),request.getParameter("pseud"),
request.getParameter("pb"));
final String yes = "Y";
if (yes.equals(request.getParameter("attach")))
{ // we need to upload an attachment for this post
TopicMessageContext msg = topic.getMessage(0); // load the "zero post"
content = new AttachmentForm(sig,conf,msg,on_error);
page_title = "Upload Attachment";
} // end if
else
{ // the post is complete, we need only jump to the topic
// TODO: jump straight to the new topic
rdat.redirectTo(on_error);
return;
} // end else
} // end try
catch (ValidationException ve)
{ // the validation of parameters failed
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // display a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error adding topic: " + de.getMessage(),on_error);
} // end catch
catch (AccessError ae)
{ // some sort of access problem
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),on_error);
} // end catch
} // end else if
else
{ // we don't know what button was pressed
page_title = "Internal Error";
logger.error("no known button click on ConfOperations.doPost, cmd=T");
content = new ErrorBox(page_title,"Unknown command button pressed",on_error);
} // end else
} // end if (we got the conference parameter OK)
} // end else if ("T" command)
else
{ // unrecognized command!
page_title = "Internal Error";
logger.error("invalid command to ConfOperations.doPost: " + cmd);
content = new ErrorBox(page_title,"Invalid command to ConfOperations.doPost",location);
} // end else
} // end if (SIG parameter retrieved OK)
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class ConfOperations

View File

@ -0,0 +1,54 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import com.silverwrist.venice.servlets.format.VeniceContent;
public class ContentResult extends VeniceServletResult
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private VeniceContent content;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public ContentResult(VeniceContent content)
{
super();
this.content = content;
} // end constructor
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public VeniceContent getContent()
{
return content;
} // end getContent
} // end class ContentResult

View File

@ -0,0 +1,66 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import java.io.IOException;
import com.silverwrist.venice.servlets.format.RenderData;
public class ErrorResult extends ExecuteResult
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private int code;
private String msg;
/*--------------------------------------------------------------------------------
* Constructors
*--------------------------------------------------------------------------------
*/
public ErrorResult(int code)
{
this.code = code;
this.msg = null;
} // end constructor
public ErrorResult(int code, String msg)
{
this.code = code;
this.msg = msg;
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class ExecuteResult
*--------------------------------------------------------------------------------
*/
public void execute(RenderData rdat) throws IOException
{
if (msg!=null)
rdat.errorResponse(code,msg);
else
rdat.errorResponse(code);
} // end execute
} // end class ErrorResult

View File

@ -0,0 +1,44 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import com.silverwrist.venice.servlets.format.RenderData;
public abstract class ExecuteResult extends VeniceServletResult
{
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
protected ExecuteResult()
{
super();
} // end constructor
/*--------------------------------------------------------------------------------
* Abstract operations which must be overridden
*--------------------------------------------------------------------------------
*/
public abstract void execute(RenderData rdat) throws IOException, ServletException;
} // end class ExecuteResult

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -75,7 +75,7 @@ public class Find extends VeniceServlet
} // end getDisplayParam
private int getCategoryParam(ServletRequest request) throws ServletException
private int getCategoryParam(VeniceEngine engine, ServletRequest request)
{
String cat_str = request.getParameter("cat");
if (cat_str==null)
@ -84,7 +84,7 @@ public class Find extends VeniceServlet
try
{ // get the category ID and check it for validity
int cat = Integer.parseInt(cat_str);
if (getVeniceEngine().isValidCategoryID(cat))
if (engine.isValidCategoryID(cat))
return cat;
} // end try
@ -109,86 +109,71 @@ public class Find extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
changeMenuTop(request); // we go to the "top" menus for this
// figure out which page to display
int disp = getDisplayParam(request,FindData.getNumChoices());
FindData finddata = new FindData(getVeniceEngine(),user,disp);
FindData finddata = new FindData(engine,user,disp);
// figure out the category ID parameter
int cat = -1;
if (disp==FindData.FD_SIGS)
cat = getCategoryParam(request);
cat = getCategoryParam(engine,request);
try
{ // attempt to configure the display
finddata.loadGet(cat);
// display the standard output
page_title = "Find";
content = finddata;
} // end try
catch (DataException de)
{ // database error, man
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error accessing category data: " + de.getMessage(),"top");
return new ErrorBox("Database Error","Database error accessing category data: " + de.getMessage(),"top");
} // end catch
BaseJSPData basedat = new BaseJSPData(page_title,"find?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
setMyLocation(request,"find?" + request.getQueryString());
return finddata;
} // end doGet
} // end doVeniceGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
changeMenuTop(request); // we go to the "top" menus for this
// figure out which page to display
int disp = getDisplayParam(request,FindData.getNumChoices());
FindData finddata = new FindData(getVeniceEngine(),user,disp);
FindData finddata = new FindData(engine,user,disp);
try
{ // attempt to configure the display
finddata.loadPost(request);
// display the standard output
page_title = "Find";
content = finddata;
} // end try
catch (ValidationException ve)
{ // error in find parameters
page_title = "Find Error";
content = new ErrorBox(null,ve.getMessage(),"top");
return new ErrorBox("Find Error",ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // database error, man
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error on find: " + de.getMessage(),"top");
return new ErrorBox("Database Error","Database error on find: " + de.getMessage(),"top");
} // end catch
BaseJSPData basedat = new BaseJSPData(page_title,
"find?disp=" + String.valueOf(finddata.getDisplayOption()),content);
basedat.transfer(getServletContext(),rdat);
setMyLocation(request,"find?disp=" + finddata.getDisplayOption());
return finddata;
} // end doPost
} // end doVenicePost
} // end class Find

View File

@ -41,89 +41,11 @@ public class PostMessage extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("conf");
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("top");
if (StringUtil.isStringEmpty(str))
{ // no topic parameter - bail out now!
logger.error("Topic parameter not specified!");
throw new ValidationException("No topic specified.");
} // end if
try
{ // turn the string into a TopicID, and thence to a TopicContext
short topicid = Short.parseShort(str);
return conf.getTopic(topicid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert topic parameter '" + str + "'!");
throw new ValidationException("Invalid topic parameter.");
} // end catch
} // end getTopicParameter
private static int getPostNumber(ServletRequest request) throws ValidationException
private static int getPostNumber(ServletRequest request, String on_error) throws ErrorBox
{
String str = request.getParameter("sd");
if (StringUtil.isStringEmpty(str))
throw new ValidationException("Invalid parameter.");
throw new ErrorBox(null,"Invalid parameter.",on_error);
try
{ // get the number of posts we think he topic has
return Integer.parseInt(str);
@ -131,7 +53,7 @@ public class PostMessage extends VeniceServlet
} // end try
catch (NumberFormatException nfe)
{ // not a good integer...
throw new ValidationException("Invalid parameter.");
throw new ErrorBox(null,"Invalid parameter.",on_error);
} // end catch
@ -150,265 +72,108 @@ public class PostMessage extends VeniceServlet
} // end getServletInfo
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicContext topic = null; // topic context
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
// get the topic
TopicContext topic = getTopicParameter(request,conf,true,"top");
String on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&top="
+ topic.getTopicNumber();
// make sure we've got some post data
String raw_postdata = request.getParameter("pb");
if (StringUtil.isStringEmpty(raw_postdata))
return null; // don't allow zero-size posts
final String yes = "Y";
if (isImageButtonClicked(request,"cancel"))
throw new RedirectResult(on_error); // canceled posting - take us back
if (isImageButtonClicked(request,"preview")) // generate a preview
return new PostPreview(engine,sig,conf,topic,request.getParameter("pseud"),raw_postdata,
request.getParameter("next"),getPostNumber(request,on_error),
yes.equals(request.getParameter("attach")));
if (isImageButtonClicked(request,"post") || isImageButtonClicked(request,"postnext"))
{ // post the message, and then either go back to the same topic or on to the next one
boolean go_next = isImageButtonClicked(request,"postnext");
int pn = getPostNumber(request,on_error);
try
{ // this outer try is to catch ValidationException
try
{ // all commands require a SIG parameter
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
{ // first check for slippage
if (pn!=topic.getTotalMessages()) // slippage detected! display the slippage screen
return new PostSlippage(engine,sig,conf,topic,pn,request.getParameter("next"),
request.getParameter("pseud"),raw_postdata,
yes.equals(request.getParameter("attach")));
// post the darn thing!
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
short next;
try
{ // attempt to get the value of the "next topic" parameter
if (go_next)
{ // get the "next topic" parameter
String foo = request.getParameter("next");
if (StringUtil.isStringEmpty(foo))
next = topic.getTopicNumber();
else
next = Short.parseShort(foo);
} // end if
else
next = topic.getTopicNumber();
} // end try
catch (NumberFormatException nfe)
{ // just default me
next = topic.getTopicNumber();
} // end catch
// where do we want to go now?
String target = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&top="
+ next + "&rnm=1";
if (yes.equals(request.getParameter("attach")))
return new AttachmentForm(sig,conf,msg,target); // go to upload an attachment
// no attachment - redirect where we need to go
throw new RedirectResult(target);
} // end try
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
{ // there was a database error posting the message
return new ErrorBox("Database Error","Database error posting message: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to post the message
return new ErrorBox("Access Error",ae.getMessage(),"top");
} // end catch
if (content==null)
{ // we got the SIG parameter OK
try
{ // all commands require a conference parameter
conf = getConferenceParameter(request,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
} // end if
} // end catch
// unknown button clicked
logger.error("no known button click on PostMessage.doPost");
return new ErrorBox("Internal Error","Unknown command button pressed","top");
} // end if
if (content==null)
{ // we got the conference parameter OK
try
{ // now we need a topic parameter
topic = getTopicParameter(request,conf);
if (logger.isDebugEnabled())
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),"top");
} // end catch
} // end if
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
if (content==null)
{ // make sure we've got some post data
String raw_postdata = request.getParameter("pb");
if (StringUtil.isStringEmpty(raw_postdata))
{ // don't allow zero-size posts
rdat.nullResponse();
return;
} // end if
final String yes = "Y";
// now decide what to do based on which button got clicked
if (isImageButtonClicked(request,"cancel"))
{ // canceled posting - take us back to familiar ground
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()) + "&top="
+ String.valueOf(topic.getTopicNumber()));
return;
} // end if ("Cancel")
else if (isImageButtonClicked(request,"preview"))
{ // previewing the post!
try
{ // generate a preview view
content = new PostPreview(getVeniceEngine(),sig,conf,topic,request.getParameter("pseud"),
raw_postdata,request.getParameter("next"),getPostNumber(request),
yes.equals(request.getParameter("attach")));
page_title = "Previewing Post";
} // end try
catch (ValidationException ve)
{ // there was some sort of a parameter error in the display (getPostNumber can throw this)
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
} // end else if ("Preview & Spellcheck")
else if (isImageButtonClicked(request,"post"))
{ // post the message, and then reload the same topic
try
{ // first, check against slippage
int pn = getPostNumber(request);
if (pn==topic.getTotalMessages())
{ // no slippage - post the message!!!
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
if (yes.equals(request.getParameter("attach")))
{ // we have an attachment to upload...display the "Upload Attachment" form
String target = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()) + "&top="
+ String.valueOf(topic.getTopicNumber()) + "&rnm=1";
content = new AttachmentForm(sig,conf,msg,target);
page_title = "Upload Attachment";
} // end if
else
{ // no attachment - jump back to the topic
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()) + "&top="
+ String.valueOf(topic.getTopicNumber()) + "&rnm=1");
return;
} // end else
} // end if
else
{ // slippage detected - show the slippage display
content = new PostSlippage(getVeniceEngine(),sig,conf,topic,pn,request.getParameter("next"),
request.getParameter("pseud"),raw_postdata,
yes.equals(request.getParameter("attach")));
page_title = "Slippage or Double-Click Detected";
} // end else
} // end try
catch (ValidationException ve)
{ // there was some sort of a parameter error in the display
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // there was a database error posting the message
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error posting message: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the topic list
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
} // end else if ("Post & Reload")
else if (isImageButtonClicked(request,"postnext"))
{ // post the message, and then go to the "next" topic
try
{ // first, check against slippage
int pn = getPostNumber(request);
if (pn==topic.getTotalMessages())
{ // no slippage - post the message!
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
short next;
try
{ // attempt to get the value of the "next topic" parameter
String foo = request.getParameter("next");
if (StringUtil.isStringEmpty(foo))
next = topic.getTopicNumber();
else
next = Short.parseShort(foo);
} // end try
catch (NumberFormatException nfe)
{ // just default me
next = topic.getTopicNumber();
} // end catch
if (yes.equals(request.getParameter("attach")))
{ // we have an attachment to upload...
// TODO: jump somewhere we can upload the attachment!
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()) + "&top=" + String.valueOf(next) + "&rnm=1");
return;
} // end if
else
{ // no attachment - jump to the next topic
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID()) + "&top=" + String.valueOf(next) + "&rnm=1");
return;
} // end else
} // end if
else
{ // slippage detected - show the slippage display
content = new PostSlippage(getVeniceEngine(),sig,conf,topic,pn,request.getParameter("next"),
request.getParameter("pseud"),raw_postdata,
yes.equals(request.getParameter("attach")));
page_title = "Slippage or Double-Click Detected";
} // end else
} // end try
catch (ValidationException ve)
{ // there was some sort of a parameter error in the display
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
catch (DataException de)
{ // there was a database error posting the message
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error posting message: " + de.getMessage(),"top");
} // end catch
catch (AccessError ae)
{ // we were unable to retrieve the topic list
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),"top");
} // end catch
} // end else if ("Post & Go Next")
else
{ // unknown button clicked
page_title = "Internal Error";
logger.error("no known button click on PostMessage.doPost");
content = new ErrorBox(page_title,"Unknown command button pressed","top");
} // end else
} // end if (got all parameters oK)
BaseJSPData basedat = new BaseJSPData(page_title,"post",content);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class PostMessage

View File

@ -39,115 +39,6 @@ public class PostOperations extends VeniceServlet
private static Category logger = Category.getInstance(TopicOperations.class.getName());
/*--------------------------------------------------------------------------------
* Internal functions
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("conf");
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("top");
if (StringUtil.isStringEmpty(str))
{ // no topic parameter - bail out now!
logger.error("Topic parameter not specified!");
throw new ValidationException("No topic specified.");
} // end if
try
{ // turn the string into a TopicID, and thence to a TopicContext
short topicid = Short.parseShort(str);
return conf.getTopic(topicid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert topic parameter '" + str + "'!");
throw new ValidationException("Invalid topic parameter.");
} // end catch
} // end getTopicParameter
private static TopicMessageContext getMessageParameter(ServletRequest request, TopicContext topic)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("msg");
if (StringUtil.isStringEmpty(str))
{ // no topic parameter - bail out now!
logger.error("Message parameter not specified!");
throw new ValidationException("No message specified.");
} // end if
try
{ // turn the string into a TopicID, and thence to a TopicContext
int message_num = Integer.parseInt(str);
return topic.getMessage(message_num);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert message parameter '" + str + "'!");
throw new ValidationException("Invalid message parameter.");
} // end catch
} // end getMessageParameter
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
@ -161,233 +52,130 @@ public class PostOperations extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String location = "top";
String locator = null;
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicContext topic = null; // topic context
TopicMessageContext msg = null; // message context
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
String locator = "sig=" + sig.getSIGID();
String location = "sigprofile?" + locator;
try
{ // this outer try is to catch ValidationException
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,location);
locator += "&conf=" + conf.getConfID();
location = "confdisp?" + locator;
// get the topic
TopicContext topic = getTopicParameter(request,conf,true,location);
locator += "&top=" + topic.getTopicID();
location = "confdisp?" + locator;
// get the message
TopicMessageContext msg = getMessageParameter(request,topic,true,location);
location = "confdisp?" + locator + "&p1=" + msg.getPostNumber() + "&shac=1";
setMyLocation(request,location);
// figure out what command we want to perform
String cmd = getStandardCommandParam(request);
if (cmd.equals("HY") || cmd.equals("HN"))
{ // we want to hide or show the message
try
{ // all commands require a SIG parameter
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
locator = "sig=" + String.valueOf(sig.getSIGID());
location = "sigprofile?" + locator;
{ // attempt to hide or show the message
msg.setHidden(cmd.equals("HY"));
} // end try
// go back and display stuff
throw new RedirectResult(location);
} // end if
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),location);
{ // there was a database error
return new ErrorBox("Database Error","Database error setting hidden status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
if (content==null)
{ // we got the SIG parameter OK
try
{ // all commands require a conference parameter
conf = getConferenceParameter(request,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
locator += "&conf=" + String.valueOf(conf.getConfID());
location = "confdisp?" + locator;
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
} // end if ("hide" or "show")
} // end catch
if (cmd.equals("SCR"))
{ // we want to scribble the message
try
{ // attempt to scribble the message
msg.scribble();
} // end if
// go back and display stuff
throw new RedirectResult(location);
if (content==null)
{ // we got the conference parameter OK
try
{ // now we need a topic parameter
topic = getTopicParameter(request,conf);
if (logger.isDebugEnabled())
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
locator += "&top=" + String.valueOf(topic.getTopicID());
location = "confdisp?" + locator;
} // end try
catch (DataException de)
{ // there was a database error
return new ErrorBox("Database Error","Database error scribbling message: " + de.getMessage(),
location);
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
} // end catch
} // end if
} // end if ("scribble")
if (content==null)
{ // we got the topic parameter OK
try
{ // now we need a message parameter
msg = getMessageParameter(request,topic);
if (logger.isDebugEnabled())
logger.debug("found message #" + String.valueOf(msg.getPostID()));
location = "confdisp?" + locator + "&p1=" + msg.getPostNumber() + "&shac=1";
if (cmd.equals("NUKE"))
{ // nuking requires confirmation
try
{ // we need confirmation on this operation
if (ConfirmBox.isConfirmed(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM))
{ // OK, go ahead, nuke the message!
msg.nuke();
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),location);
// after which, redirect to topic view
throw new RedirectResult("confdisp?" + locator);
} // end catch
} // end if (confirmed)
else
{ // not a proper confirmation - better display one
List aliases = conf.getAliases();
String message = "You are about to nuke message <" + (String)(aliases.get(0)) + "."
+ topic.getTopicNumber() + "." + msg.getPostNumber() + ">, originally composed by <"
+ msg.getCreatorName() + ">! Are you sure you want to do this?";
String confirm_url = "postops?" + locator + "&msg=" + msg.getPostNumber() + "&cmd=NUKE";
return new ConfirmBox(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM,"Nuke Message",
message,confirm_url,location);
} // end if
} // end else (not yet confirmed)
} // end try
catch (DataException de)
{ // there was a database error
return new ErrorBox("Database Error","Database error nuking message: " + de.getMessage(),
location);
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end catch
} // end if ("nuke")
if (content==null)
{ // figure out what command we want to perform
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
// unrecognized command!
logger.error("invalid command to PostOperations.doGet: " + cmd);
return new ErrorBox("Internal Error","Invalid command to PostOperations.doGet",location);
if (cmd.equals("HY") || cmd.equals("HN"))
{ // we want to hide or show the message
try
{ // attempt to hide or show the message
msg.setHidden(cmd.equals("HY"));
// go back and display stuff
rdat.redirectTo(location);
return;
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error setting hidden status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end if ("hide" or "show")
else if (cmd.equals("SCR"))
{ // we want to scribble the message
try
{ // attempt to scribble the message
msg.scribble();
// go back and display stuff
rdat.redirectTo(location);
return;
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error scribbling message: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end else if ("scribble")
else if (cmd.equals("NUKE"))
{ // nuking requires confirmation
try
{ // we need confirmation on this operation!
if (ConfirmBox.isConfirmed(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM))
{ // OK, go ahead, nuke the message!
msg.nuke();
// after which, redirect to topic view
rdat.redirectTo("confdisp?" + locator);
return;
} // end if
else
{ // not a proper confirmation - better display one
List aliases = conf.getAliases();
String message = "You are about to nuke message <" + (String)(aliases.get(0)) + "."
+ String.valueOf(topic.getTopicNumber()) + "." + String.valueOf(msg.getPostNumber())
+ ">, originally composed by <" + msg.getCreatorName()
+ ">! Are you sure you want to do this?";
String confirm_url = "postops?" + locator + "&msg=" + msg.getPostNumber() + "&cmd=NUKE";
page_title = "Nuke Message";
content = new ConfirmBox(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM,page_title,
message,confirm_url,location);
} // end else
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error nuking message: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end else if ("nuke")
else
{ // unrecognized command!
page_title = "Internal Error";
logger.error("invalid command to PostOperations.doGet: " + cmd);
content = new ErrorBox(page_title,"Invalid command to PostOperations.doGet",location);
} // end else
} // end if (got parameters OK)
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class PostOperations

View File

@ -40,31 +40,34 @@ public class PostShortcut extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String raw_link = request.getPathInfo().substring(1);
PostLinkDecoder decoder;
try
{ // attempt to decode the path link information
decoder = new PostLinkDecoder(raw_link);
if (decoder.getSIG()==null) // it must include the SIG
throw new ValidationException("ambiguous post link (no SIG)");
} // end try
catch (ValidationException e)
{ // display an error message for validation
String page_title = "Invalid Post Link";
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link + "\": "
+ e.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
{ // the post link decoder failed
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": " + e.getMessage(),
null);
} // end catch
if (decoder.getSIG()==null) // it must include the SIG
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link
+ "\": ambiguous post link (no SIG)",null);
SIGContext sig;
try
{ // get the SIG represented by that alias
@ -73,20 +76,13 @@ public class PostShortcut extends VeniceServlet
} // end try
catch (DataException e)
{ // can't find the SIG - we're screwed
String page_title = "Invalid Post Link";
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
+ "\": cannot find SIG: " + e.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": cannot find SIG: "
+ e.getMessage(),null);
} // end catch
if (decoder.getConference()==null)
{ // it's a SIG link only - redirect to the SIG's default page
rdat.redirectTo("sig/" + decoder.getSIG());
return;
} // end if
if (decoder.getConference()==null) // it's a SIG link only - redirect to the SIG's default page
throw new RedirectResult("sig/" + decoder.getSIG());
ConferenceContext conf;
try
@ -96,31 +92,21 @@ public class PostShortcut extends VeniceServlet
} // end try
catch (DataException e)
{ // can't find the conference - we're screwed
String page_title = "Invalid Post Link";
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
+ "\": cannot find conference: " + e.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link
+ "\": cannot find conference: " + e.getMessage(),null);
} // end catch
catch (AccessError ae)
{ // we can't get to the conference...
String page_title = "Access Error";
ContentRender content = new ErrorBox(page_title,ae.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
return new ErrorBox("Access Error",ae.getMessage(),null);
} // end catch
// compute an elementary "locator"
String locator = "sig=" + String.valueOf(sig.getSIGID()) + "&conf=" + String.valueOf(conf.getConfID());
String locator = "sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
if (decoder.getTopic()==-1)
{ // just a conference link - go to the top-level display
rdat.redirectTo("confdisp?" + locator);
return;
} // end if
if (decoder.getTopic()==-1) // just a conference link - go to the top-level display
throw new RedirectResult("confdisp?" + locator);
TopicContext topic;
try
@ -130,32 +116,26 @@ public class PostShortcut extends VeniceServlet
} // end try
catch (DataException e)
{ // we can't find the topic - we're screwed
String page_title = "Invalid Post Link";
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
+ "\": cannot find topic: " + e.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": cannot find topic: "
+ e.getMessage(),null);
} // end catch
catch (AccessError ae)
{ // we can't get to the topic...
String page_title = "Access Error";
ContentRender content = new ErrorBox(page_title,ae.getMessage(),null);
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
return;
return new ErrorBox("Access Error",ae.getMessage(),null);
} // end catch
// add the topic to our locator
locator += "&top=" + String.valueOf(decoder.getTopic());
locator += "&top=" + decoder.getTopic();
if (decoder.getFirstPost()==-1) // we're just referencing the topic
rdat.redirectTo("confdisp?" + locator + "&rnm=1");
else // we're referencing a post range within the topic
rdat.redirectTo("confdisp?" + locator + "&p1=" + String.valueOf(decoder.getFirstPost()) + "&p2="
+ String.valueOf(decoder.getLastPost()));
throw new RedirectResult("confdisp?" + locator + "&rnm=1");
} // end doGet
// we're referencing a post range within the topic
throw new RedirectResult("confdisp?" + locator + "&p1=" + decoder.getFirstPost() + "&p2="
+ decoder.getLastPost());
} // end doVeniceGet
} // end class PostShortcut

View File

@ -0,0 +1,55 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import java.io.IOException;
import com.silverwrist.venice.servlets.format.RenderData;
public class RedirectResult extends ExecuteResult
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String target;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public RedirectResult(String target)
{
super();
this.target = target;
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class ExecuteResult
*--------------------------------------------------------------------------------
*/
public void execute(RenderData rdat) throws IOException
{
rdat.redirectTo(target);
} // end doRedirect
} // end class RedirectResult

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -87,355 +87,238 @@ public class SIGAdmin extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
// get the SIG context
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
setMyLocation(request,"sigadmin?" + request.getQueryString());
String on_error = "sigadmin?sig=" + sig.getSIGID();
SIGContext sig = null;
try
{ // first get the SIG context we're working with
int sigid = Integer.parseInt(request.getParameter("sig"));
sig = user.getSIGContext(sigid);
changeMenuSIG(request,sig);
} // end try
catch (NumberFormatException nfe)
{ // an improperly formatted SIGID brought us down!
page_title = "Input Error";
logger.error("Somebody fed 'sig=" + request.getParameter("sig") + "' to this page, that's bogus");
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doGet operating on SIG \"" + sig.getName() + "\" (" + sig.getSIGID() + ")");
} // end catch
catch (DataException de)
{ // unable to pull SIG data out of the database
page_title = "Database Error";
logger.error("database error looking up SIGID " + request.getParameter("sig"));
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
// now decide what to do based on the "cmd" parameter
String cmd = getStandardCommandParam(request);
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doGet command value = " + cmd);
} // end catch
if (cmd.equals("P"))
{ // "P" = "Edit Profile"
if (!(sig.canModifyProfile()))
{ // no access - sorry, dude
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
if (logger.isDebugEnabled() && (sig!=null))
logger.debug("SIGAdmin/doGet operating on SIG \"" + sig.getName() + "\" ("
+ String.valueOf(sig.getSIGID()) + ")");
} // end if
if (content==null)
{ // now decide what to do based on the "cmd" parameter
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???"; // something pretty much guaranteed not to be used
// construct the edit profile dialog and load it up for use
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doGet command value = " + cmd);
try
{ // load the values for this dialog
dlg.setupDialog(engine,sig);
if (cmd.equals("P"))
{ // this is the profile editing screen
if (sig.canModifyProfile())
{ // construct the edit profile dialog and load it up for use
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
} // end try
catch (DataException de)
{ // we could not load the values because of a data exception
logger.error("DB error loading SIG profile: " + de.getMessage(),de);
return new ErrorBox("Database Error","Database error retrieving profile: " + de.getMessage(),on_error);
try
{ // load the values for this dialog
dlg.setupDialog(getVeniceEngine(),sig);
} // end catch
catch (AccessError ae)
{ // we don't have enough privilege
logger.error("Access error loading SIG profile: " + ae.getMessage(),ae);
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
// prepare for display
page_title = dlg.getTitle();
content = dlg;
} // end catch
} // end try
catch (DataException de)
{ // we could not load the values because of a data exception
page_title = "Database Error";
logger.error("DB error loading SIG profile: " + de.getMessage(),de);
content = new ErrorBox(page_title,"Database error retrieving profile: " + de.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
return dlg; // display me!
} // end catch
catch (AccessError ae)
{ // we don't have enough privilege
page_title = "Unauthorized";
logger.error("Access error loading SIG profile: " + ae.getMessage(),ae);
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end if ("P" command)
} // end catch
if (cmd.equals("T"))
{ // "T" = "Set Category"
if (!(sig.canModifyProfile()))
{ // no access - sorry man
logger.error("tried to call up SIG category set screen without access...naughty naughty!");
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
} // end if
else
{ // no access - sorry, dude
page_title = "Unauthorized";
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end else
} // end else
// did they actually send a "set" parameter?
String p = request.getParameter("set");
if (!(StringUtil.isStringEmpty(p)))
{ // OK, we're setting the category ID...
try
{ // get the new category ID and set it
int catid = Integer.parseInt(p);
if (!(engine.isValidCategoryID(catid)))
throw new NumberFormatException(); // dump the category if it's not valid
} // end if (profile editing)
else if (cmd.equals("T"))
{ // this is the category set code!
if (sig.canModifyProfile())
{ // did they actually send a "set" parameter?
String p = request.getParameter("set");
if (!(StringUtil.isStringEmpty(p)))
{ // OK, we're setting the category ID...
try
{ // get the new category ID and set it
int catid = Integer.parseInt(p);
if (!(getVeniceEngine().isValidCategoryID(catid)))
throw new NumberFormatException(); // dump the category if it's not valid
// change the category ID
sig.setCategoryID(catid);
sig.setCategoryID(catid);
} // end try
catch (NumberFormatException nfe)
{ // we got an invalid category value...
return new ErrorBox("Invalid Input","Invalid category ID passed to category browser.",on_error);
// now that the category ID is set, go back to the admin menu
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
response.sendRedirect(url);
return;
} // end catch
catch (DataException de)
{ // unable to update the SIG properly
logger.error("DB error updating SIG: " + de.getMessage(),de);
return new ErrorBox("Database Error","Database error updating SIG: " + de.getMessage(),on_error);
} // end try
catch (NumberFormatException nfe)
{ // we got an invalid category value...
page_title = "Invalid Input";
content = new ErrorBox(page_title,"Invalid category ID passed to category browser.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end catch
catch (AccessError ae)
{ // database access error - display an error box
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // unable to update the SIG properly
page_title = "Database Error";
logger.error("DB error updating SIG: " + de.getMessage(),de);
content = new ErrorBox(page_title,"Database error updating SIG: " + de.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end catch
} // end catch
catch (AccessError ae)
{ // database access error - display an error box
page_title = "Access Error";
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
content = new ErrorBox(page_title,ae.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
// now that it's set, go back to the admin menu
throw new RedirectResult(on_error);
} // end catch
} // end if (actually setting the category
} // end if (setting category ID)
else
{ // we're browsing - try and figure out what to display
try
{ // get the "go" parameter to see what the current category ID is
p = request.getParameter("go");
int curr_catid;
if (StringUtil.isStringEmpty(p))
curr_catid = sig.getCategoryID();
else
{ // we're browsing - try and figure out what to display
try
{ // get the "go" parameter to see what the current category ID is
p = request.getParameter("go");
int curr_catid;
if (StringUtil.isStringEmpty(p))
curr_catid = sig.getCategoryID();
else
curr_catid = Integer.parseInt(p);
curr_catid = Integer.parseInt(p);
if (!(getVeniceEngine().isValidCategoryID(curr_catid)))
throw new NumberFormatException(); // dump the category if it's not valid
if (!(engine.isValidCategoryID(curr_catid)))
throw new NumberFormatException(); // dump the category if it's not valid
// create the browser panel and let it rip
content = new SIGCategoryBrowseData(user,sig,curr_catid);
page_title = "Set SIG Category";
// create the browser panel and let it rip
return new SIGCategoryBrowseData(user,sig,curr_catid);
} // end try
catch (NumberFormatException nfe)
{ // we got an invalid category value...
page_title = "Invalid Input";
content = new ErrorBox(page_title,"Invalid category ID passed to category browser.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end try
catch (NumberFormatException nfe)
{ // we got an invalid category value...
return new ErrorBox("Invalid Input","Invalid category ID passed to category browser.",on_error);
} // end catch
catch (DataException de)
{ // unable to get the categories properly
page_title = "Database Error";
logger.error("DB error browsing categories: " + de.getMessage(),de);
content = new ErrorBox(page_title,"Database error browsing categories: " + de.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end catch
catch (DataException de)
{ // unable to get the categories properly
logger.error("DB error browsing categories: " + de.getMessage(),de);
return new ErrorBox("Database Error","Database error browsing categories: " + de.getMessage(),
on_error);
} // end catch
} // end catch
} // end else (browsing through categories)
} // end else
} // end if
else
{ // no access - sorry man
page_title = "Unauthorized";
logger.error("tried to call up SIG category set screen without access...naughty naughty!");
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end if ("T" command)
} // end else
} // end else if (category selector)
else // other request
{ // all unknown requests get turned into menu display requests
if (sig.canAdministerSIG())
{ // create a SIG administration menu
SIGAdminTop menu = makeSIGAdminTop();
menu.setSIG(sig);
content = menu;
page_title = "SIG Administration";
} // end if
else
{ // no access - sorry buddy
page_title = "Access Error";
logger.error("tried to call up SIG admin menu without access...naughty naughty!");
content = new ErrorBox(page_title,"You do not have access to administer this SIG.",
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
} // end else
} // end else (other request i.e. menu request)
// all unknown requests get turned into menu display requests
if (!(sig.canAdministerSIG()))
{ // no access - sorry buddy
logger.error("tried to call up SIG admin menu without access...naughty naughty!");
return new ErrorBox("Access Error","You do not have access to administer this SIG.",on_error);
} // end if
// else getting the SIG already caused problems
BaseJSPData basedat = new BaseJSPData(page_title,"sigadmin?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
// create a SIG administration menu
SIGAdminTop menu = makeSIGAdminTop();
menu.setSIG(sig);
return menu;
} // end doGet
} // end doVeniceGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
ContentRender content = null;
// get the SIG context
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
String on_error = "sigadmin?sig=" + sig.getSIGID();
setMyLocation(request,on_error);
SIGContext sig = null;
try
{ // first get the SIG context we're working with
int sigid = Integer.parseInt(request.getParameter("sig"));
sig = user.getSIGContext(sigid);
changeMenuSIG(request,sig);
} // end try
catch (NumberFormatException nfe)
{ // an improperly formatted SIGID brought us down!
page_title = "Input Error";
logger.error("Somebody fed 'sig=" + request.getParameter("sig") + "' to this page, that's bogus");
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doPost operating on SIG \"" + sig.getName() + "\" (" + sig.getSIGID() + ")");
} // end catch
catch (DataException de)
{ // unable to pull SIG data out of the database
page_title = "Database Error";
logger.error("database error looking up SIGID " + request.getParameter("sig"));
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
// now decide what to do based on the "cmd" parameter
String cmd = getStandardCommandParam(request);
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doPost command value = " + cmd);
} // end catch
if (cmd.equals("P"))
{ // "P" = "Edit Profile"
if (!(sig.canModifyProfile()))
{ // no access - sorry, dude
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
if (logger.isDebugEnabled() && (sig!=null))
logger.debug("SIGAdmin/doPost operating on SIG \"" + sig.getName() + "\" ("
+ String.valueOf(sig.getSIGID()) + ")");
} // end if
if (content==null)
{ // now decide what to do based on the "cmd" parameter
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???"; // something pretty much guaranteed not to be used
// construct the edit profile dialog and load it up for use
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
dlg.setupDialogBasic(engine,sig);
if (logger.isDebugEnabled())
logger.debug("SIGAdmin/doPost command value = " + cmd);
if (dlg.isButtonClicked(request,"cancel"))
throw new RedirectResult(on_error); // go back - they canceled out
if (cmd.equals("P"))
{ // we just finished editing the profile...
if (sig.canModifyProfile())
{ // construct the edit profile dialog and load it up for use
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
dlg.setupDialogBasic(getVeniceEngine(),sig);
if (dlg.isButtonClicked(request,"update"))
{ // begin updating the SIG's contents
dlg.loadValues(request); // do value loading now
if (dlg.isButtonClicked(request,"cancel"))
{ // go back to our desired location
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
response.sendRedirect(url);
return;
try
{ // attempt to change the SIG profile now...
dlg.doDialog(sig);
} // end if ("cancel" button clicked)
// now jump back to the main menu
clearMenu(request);
throw new RedirectResult(on_error);
if (dlg.isButtonClicked(request,"update"))
{ // begin updating the SIG's contents
dlg.loadValues(request); // do value loading now
} // end try
catch (ValidationException ve)
{ // simple validation exception
if (logger.isDebugEnabled())
logger.debug("validation failure: " + ve.getMessage());
dlg.resetOnError(sig,ve.getMessage() + " Please try again.");
try
{ // attempt to change the SIG profile now...
dlg.doDialog(sig);
} // end catch
catch (DataException de)
{ // database error updating the SIG values
logger.error("DB error updating SIG: " + de.getMessage(),de);
return new ErrorBox("Database Error","Database error updating SIG: " + de.getMessage(),on_error);
// go back to the Admin menu on success
clearMenu(request); // menu title may have been invalidated
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
response.sendRedirect(url);
return;
} // end catch
catch (AccessError ae)
{ // access error changing the SIG values
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
return new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end try
catch (ValidationException ve)
{ // simple validation exception
if (logger.isDebugEnabled())
logger.debug("validation failure: " + ve.getMessage());
dlg.resetOnError(sig,ve.getMessage() + " Please try again.");
page_title = dlg.getTitle();
content = dlg;
} // end catch
} // end catch
catch (DataException de)
{ // database error updating the SIG values
page_title = "Database Error";
logger.error("DB error updating SIG: " + de.getMessage(),de);
content = new ErrorBox(page_title,"Database error updating SIG: " + de.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
return dlg;
} // end catch
catch (AccessError ae)
{ // access error changing the SIG values
page_title = "Access Error";
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
content = new ErrorBox(page_title,ae.getMessage(),
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end if ("update" pressed)
} // end catch
// what the hell was that button?
logger.error("no known button click on SIGAdmin.doPost, cmd=P");
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
} // end if ("update" button pressed);
else
{ // what the hell was that button?
page_title = "Internal Error";
logger.error("no known button click on SIGAdmin.doPost, cmd=P");
content = new ErrorBox(page_title,"Unknown command button pressed",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end if ("P" command)
} // end else
// on unknown command, redirect to the GET function
return doVeniceGet(request,engine,user,rdat);
} // end if
else
{ // no access - sorry, dude
page_title = "Unauthorized";
logger.error("tried to edit SIG profile without access...naughty naughty!");
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
} // end else
} // end if (editing profile)
else // unknown command
{ // just use that to redirect to the GET url
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID()) + "&cmd=" + cmd;
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
response.sendRedirect(url);
return;
} // end else (unknown command)
} // end if
// else getting the SIG already caused problems
BaseJSPData basedat = new BaseJSPData(page_title,"sigadmin?sig=" + String.valueOf(sig.getSIGID()),content);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class SIGAdmin

View File

@ -38,45 +38,42 @@ public class SIGFrontEnd extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
ContentRender content = null;
// get the SIG alias name from the request path info
String sigalias = request.getPathInfo().substring(1);
try
{ // get the SIG alias name from the request path info
String sigalias = request.getPathInfo().substring(1);
// get the SIG's context from the alias name
{ // get the SIG's context from the alias name
SIGContext sig = user.getSIGContext(sigalias);
// get the default servlet from the SIG context
String def_applet = sig.getDefaultApplet();
if (def_applet==null)
throw new DataException("unable to get SIG default servlet");
String def_servlet = sig.getDefaultApplet();
if (def_servlet==null)
{ // return the default servlet
changeMenuTop(request);
return new ErrorBox("Internal Error","unable to get SIG default servlet","top");
// redirect to the appropriate top-level page!
String url = response.encodeRedirectURL(rdat.getFullServletPath(def_applet));
response.sendRedirect(url);
return;
} // end if
// and go there
throw new RedirectResult(def_servlet);
} // end try
catch (DataException de)
{ // set up to display an ErrorBox
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
changeMenuTop(request);
return new ErrorBox("Database Error","Database error finding SIG: " + de.getMessage(),"top");
} // end catch
changeMenuTop(request);
// this code is only used if we have to display an ErrorBox
BaseJSPData basedat = new BaseJSPData(page_title,"sig" + request.getPathInfo(),content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class SIGFrontEnd

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -42,32 +42,6 @@ public class SIGOperations extends VeniceServlet
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private JoinKeyDialog makeJoinKeyDialog()
{
final String desired_name = "JoinKeyDialog";
@ -115,342 +89,239 @@ public class SIGOperations extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the command we want to use
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
String cmd = getStandardCommandParam(request);
setMyLocation(request,"sigops?" + request.getQueryString());
if (cmd.equals("J"))
{ // "J" = "Join" (requires SIG parameter)
try
{ // get the SIG parameter first!
SIGContext sig = getSIGParameter(request,user);
SIGContext sig = getSIGParameter(request,user,true,"top");
if (sig.canJoin())
{ // OK, we can join the SIG, now, is it public or private?
if (sig.isPublicSIG())
{ // attempt to join right now! (no join key required)
sig.join(null);
if (!(sig.canJoin())) // not permitted to join!
return new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
// success! display the "welcome" page
content = new SIGWelcome(sig);
page_title = "Welcome to " + sig.getName();
clearMenu(request); // force the clear to regen the menus
changeMenuSIG(request,sig);
if (sig.isPublicSIG())
{ // attempt to join right now! (no join key required)
try
{ // call down to join the SIG
sig.join(null);
} // end if (public SIG)
else
{ // we need to prompt them for the join key...
JoinKeyDialog dlg = makeJoinKeyDialog();
dlg.setupDialog(sig);
content = dlg;
page_title = "Join SIG";
changeMenuSIG(request,sig);
// success! display the "welcome" page
clearMenu(request); // force the clear to regen the menus
changeMenuSIG(request,sig);
return new SIGWelcome(sig);
} // end try
catch (AccessError ae)
{ // access error
return new ErrorBox("Access Error","Unable to join SIG: " + ae.getMessage(),"top");
} // end else (private SIG)
} // end catch
catch (DataException de)
{ // data exception doing something
return new ErrorBox("Database Error","Database error joining SIG: " + de.getMessage(),"top");
} // end if (allowed to join the SIG)
else
{ // throw an error
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
} // end catch
} // end else
} // end if (public SIG)
else
{ // we need to prompt them for the join key....
JoinKeyDialog dlg = makeJoinKeyDialog();
dlg.setupDialog(sig);
changeMenuSIG(request,sig);
return dlg;
} // end try
catch (AccessError ae)
{ // access error
page_title = "Access Error";
content = new ErrorBox(page_title,"Unable to join SIG: " + ae.getMessage(),"top");
} // end catch
catch (DataException de)
{ // data exception doing something
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error joining SIG: " + de.getMessage(),"top");
} // end catch
catch (ValidationException ve)
{ // validation error - wrong parameters, likely
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
} // end else (private SIG)
} // end if ("J" command)
else if (cmd.equals("U"))
if (cmd.equals("U"))
{ // "U" = "Unjoin (requires SIG parameter)
try
{ // get the SIG parameter first!
SIGContext sig = getSIGParameter(request,user);
SIGContext sig = getSIGParameter(request,user,true,"top");
if (sig.canUnjoin())
{ // OK, let's test for a confirmation...
if (ConfirmBox.isConfirmed(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM))
{ // OK, if you say so, let's unjoin!
sig.unjoin();
if (!(sig.canUnjoin()))
return new ErrorBox("SIG Error","You cannot unjoin this SIG.","top");
// OK, let's test for a confirmation...
if (ConfirmBox.isConfirmed(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM))
{ // OK, if you say so, let's unjoin!
try
{ // do the unjoin now...
sig.unjoin();
// after which, let's just go back to top
clearMenu(request); // force the clear to regen the menus
rdat.redirectTo("top");
return;
} // end try
catch (AccessError ae)
{ // access error
return new ErrorBox("Access Error","Unable to unjoin SIG: " + ae.getMessage(),"top");
} // end if
else
{ // not a proper confirmation - better display one
String message = "Are you sure you want to unjoin the '" + sig.getName() + "' SIG?";
String confirm_url = "sigops?cmd=U&sig=" + String.valueOf(sig.getSIGID());
String deny_url = "sig/" + sig.getAlias();
page_title = "Unjoining SIG";
content = new ConfirmBox(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM,page_title,
message,confirm_url,deny_url);
} // end catch
catch (DataException de)
{ // data exception doing something
return new ErrorBox("Database Error","Database error unjoining SIG: " + de.getMessage(),"top");
} // end else
} // end catch
} // end if
else
{ // throw an error
page_title = "Error";
content = new ErrorBox("SIG Error","You cannot unjoin this SIG.","top");
} // end else
} // end try
catch (AccessError ae)
{ // access error
page_title = "Access Error";
content = new ErrorBox(page_title,"Unable to unjoin SIG: " + ae.getMessage(),"top");
} // end catch
catch (DataException de)
{ // data exception doing something
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error unjoining SIG: " + de.getMessage(),"top");
} // end catch
catch (ValidationException ve)
{ // validation error - wrong parameters, likely
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
} // end else if ("U" command)
else if (cmd.equals("C"))
{ // "C" - Create SIG (no parameters)
if (user.canCreateSIG())
{ // present the "Create New SIG" dialog
CreateSIGDialog dlg = makeCreateSIGDialog();
dlg.setupDialog(getVeniceEngine());
// prepare for display
page_title = dlg.getTitle();
content = dlg;
changeMenuTop(request);
// after which, redirect back to the top
clearMenu(request);
throw new RedirectResult("top");
} // end if
else
{ // the user isn't permitted to make new SIGs...
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
{ // not a proper confirmation - display the confirm box
String message = "Are you sure you want to unjoin the '" + sig.getName() + "' SIG?";
return new ConfirmBox(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM,"Unjoining SIG",
message,"sigops?cmd=U&sig=" + sig.getSIGID(),"sig/" + sig.getAlias());
} // end else
} // end else if ("C" command)
else
{ // this is an error!
page_title = "Internal Error";
logger.error("invalid command to SIGOperations.doGet: " + cmd);
content = new ErrorBox(page_title,"Invalid command to SIGOperations.doGet","top");
} // end if ("U" command)
} // end else
if (cmd.equals("C"))
{ // "C" - Create SIG (no parameters)
if (!(user.canCreateSIG()))
return new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
BaseJSPData basedat = new BaseJSPData(page_title,"sigops?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
// present the "Create New SIG" dialog
CreateSIGDialog dlg = makeCreateSIGDialog();
dlg.setupDialog(engine);
changeMenuTop(request);
return dlg;
} // end doGet
} // end if ("C" command)
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
// this is an error!
logger.error("invalid command to SIGOperations.doGet: " + cmd);
return new ErrorBox("Internal Error","Invalid command to SIGOperations.doGet","top");
} // end doVeniceGet
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
// get the command we want to use
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
String cmd = getStandardCommandParam(request);
setMyLocation(request,"sigops?cmd=" + cmd);
if (cmd.equals("J"))
{ // "J" = Join SIG (requires SIG parameter)
try
{ // get the SIG we're talking about
SIGContext sig = getSIGParameter(request,user);
JoinKeyDialog dlg = makeJoinKeyDialog();
SIGContext sig = getSIGParameter(request,user,true,"top");
JoinKeyDialog dlg = makeJoinKeyDialog();
if (dlg.isButtonClicked(request,"cancel"))
{ // canceled join - return to SIG opening page
rdat.redirectTo("sig/" + sig.getAlias());
return;
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to SIG opening page
throw new RedirectResult("sig/" + sig.getAlias());
} // end if
if (!(sig.canJoin())) // not permitted to join!
return new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
if (dlg.isButtonClicked(request,"join"))
{ // they clicked the "join" button
if (sig.canJoin())
{ // we are permitted to join this SIG...
dlg.loadValues(request); // load the dialog
if (dlg.isButtonClicked(request,"join"))
{ // OK, go join the SIG
dlg.loadValues(request); // load the dialog
try
{ // attempt to join the SIG!
dlg.doDialog(sig);
// success! display the "welcome" page
clearMenu(request); // force the clear to regen the menus
changeMenuSIG(request,sig);
return new SIGWelcome(sig);
} // end try
catch (ValidationException ve)
{ // here, a validation exception causes us to recycle and retry
dlg.resetOnError(ve.getMessage() + " Please try again.");
changeMenuSIG(request,sig);
try
{ // attempt to join the SIG!
dlg.doDialog(sig);
// success! display the "welcome" page
content = new SIGWelcome(sig);
page_title = "Welcome to " + sig.getName();
clearMenu(request); // force the clear to regen the menus
changeMenuSIG(request,sig);
} // end try
catch (ValidationException ve2)
{ // here, a validation exception causes us to recycle and retry
dlg.resetOnError(ve2.getMessage() + " Please try again.");
content = dlg;
page_title = "Join SIG";
changeMenuSIG(request,sig);
} // end catch
catch (AccessError ae)
{ // this is probably a bogus key - let them retry
dlg.resetOnError(ae.getMessage() + " Please try again.");
changeMenuSIG(request,sig);
} // end catch
catch (AccessError ae)
{ // this is probably a bogus key - let them retry
dlg.resetOnError(ae.getMessage() + " Please try again.");
content = dlg;
page_title = "Join SIG";
changeMenuSIG(request,sig);
} // end catch
} // end catch
catch (DataException de)
{ // database error joining something
return new ErrorBox("Database Error","Database error joining SIG: " + de.getMessage(),"top");
} // end if
else
{ // throw an error
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
} // end catch
} // end else
return dlg; // recycle and try aagin
} // end if ("join" button clicked)
else
{ // error - don't know what button was clicked
page_title = "Internal Error";
logger.error("no known button click on SIGOperations.doPost, cmd=J");
content = new ErrorBox(page_title,"Unknown command button pressed","top");
} // end if ("join" clicked)
} // end else
} // end try
catch (DataException de)
{ // database error joining something
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error joining SIG: " + de.getMessage(),"top");
} // end catch
catch (ValidationException ve)
{ // validation error - bogus parameter, I think
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),"top");
} // end catch
// error - don't know what button was clicked
logger.error("no known button click on SIGOperations.doPost, cmd=J");
return new ErrorBox("Internal Error","Unknown command button pressed","top");
} // end if ("J" command)
else if (cmd.equals("C"))
if (cmd.equals("C"))
{ // "C" = Create New SIG
if (user.canCreateSIG())
{ // load the "Create SIG" dialog
CreateSIGDialog dlg = makeCreateSIGDialog();
dlg.setupDialog(getVeniceEngine());
if (!(user.canCreateSIG()))
return new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
if (dlg.isButtonClicked(request,"cancel"))
{ // canceled create - return to top page
rdat.redirectTo("top");
return;
// load the "Create SIG" dialog
CreateSIGDialog dlg = makeCreateSIGDialog();
dlg.setupDialog(engine);
} // end if
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to top
throw new RedirectResult("top");
if (dlg.isButtonClicked(request,"create"))
{ // OK, they actually want to create the new SIG...
dlg.loadValues(request); // load the form data
if (dlg.isButtonClicked(request,"create"))
{ // OK, they actually want to create the new SIG...
dlg.loadValues(request); // load the form data
try
{ // attempt to create the SIG!
SIGContext sig = dlg.doDialog(user);
try
{ // attempt to create the SIG!
SIGContext sig = dlg.doDialog(user);
// created successfully - display a "new SIG welcome" page
content = new NewSIGWelcome(sig);
page_title = "SIG Created";
changeMenuSIG(request,sig); // display menus for the first time!
// created successfully - display a "new SIG welcome" page
changeMenuSIG(request,sig); // display menus for the first time!
return new NewSIGWelcome(sig);
} // end try
catch (ValidationException ve2)
{ // here, a validation exception causes us to recycle and retry
dlg.resetOnError(ve2.getMessage() + " Please try again.");
content = dlg;
page_title = dlg.getTitle();
changeMenuTop(request);
} // end try
catch (ValidationException ve)
{ // here, a validation exception causes us to recycle and retry
dlg.resetOnError(ve.getMessage() + " Please try again.");
changeMenuTop(request);
} // end catch
catch (AccessError ae)
{ // this is probably a bogus key - let them retry
dlg.resetOnError(ae.getMessage() + " Please try again.");
content = dlg;
page_title = dlg.getTitle();
changeMenuTop(request);
} // end catch
catch (AccessError ae)
{ // this is probably a bogus key - let them retry
dlg.resetOnError(ae.getMessage() + " Please try again.");
changeMenuTop(request);
} // end catch
catch (DataException de)
{ // database error doing something
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error creating SIG: " + de.getMessage(),"top");
} // end catch
catch (DataException de)
{ // database error doing something
return new ErrorBox("Database Error","Database error creating SIG: " + de.getMessage(),"top");
} // end catch
} // end catch
} // end if
else
{ // error - don't know what button was clicked
page_title = "Internal Error";
logger.error("no known button click on SIGOperations.doPost, cmd=C");
content = new ErrorBox(page_title,"Unknown command button pressed","top");
return dlg; // put the dialog back up
} // end else
} // end if ("create" pressed)
} // end if
else
{ // the user isn't permitted to make new SIGs...
page_title = "Error";
content = new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
// error - don't know what button was clicked
logger.error("no known button click on SIGOperations.doPost, cmd=C");
return new ErrorBox("Internal Error","Unknown command button pressed","top");
} // end else
} // end if ("C" command)
} // end else if ("C" command)
else
{ // this is an error!
page_title = "Internal Error";
logger.error("invalid command to SIGOperations.doPost: " + cmd);
content = new ErrorBox(page_title,"Invalid command to SIGOperations.doPost","top");
// this is an error!
logger.error("invalid command to SIGOperations.doPost: " + cmd);
return new ErrorBox("Internal Error","Invalid command to SIGOperations.doPost","top");
} // end else
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
basedat.transfer(getServletContext(),rdat);
} // end doPost
} // end doVenicePost
} // end class SIGOperations

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -25,6 +25,11 @@ import com.silverwrist.venice.servlets.format.*;
public class SIGProfile extends VeniceServlet
{
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
*/
public String getServletInfo()
{
String rc = "SIGProfile servlet - Displays the profile of a SIG\n"
@ -33,43 +38,31 @@ public class SIGProfile extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
setMyLocation(request,"sigprofile?sig=" + sig.getSIGID());
try
{ // get the ID of the SIG we want to see the profile of
int sigid = Integer.parseInt(request.getParameter("sig"));
// get the SIG context for the user
SIGContext sig = user.getSIGContext(sigid);
// create the profile display
content = new SIGProfileData(getVeniceEngine(),user,sig);
page_title = "SIG Profile: " + sig.getName();
{ // create the profile display
changeMenuSIG(request,sig);
return new SIGProfileData(engine,user,sig);
} // end try
catch (NumberFormatException nfe)
{ // something as simple as an improper SIGID brought us down?!?!?
page_title = "Input Error";
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
} // end catch
catch (DataException de)
{ // in this case, we had database trouble
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
return new ErrorBox("Database Error","Database error accessing SIG: " + de.getMessage(),"top");
} // end catch
BaseJSPData basedat = new BaseJSPData(page_title,"sigprofile?" + request.getQueryString(),content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class SIGProfile

View File

@ -0,0 +1,61 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import java.io.IOException;
import java.io.InputStream;
import com.silverwrist.venice.servlets.format.RenderData;
public class SendFileResult extends ExecuteResult
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String type;
private String filename;
private int length;
private InputStream data;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public SendFileResult(String type, String filename, int length, InputStream data)
{
this.type = type;
this.filename = filename;
this.length = length;
this.data = data;
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class ExecuteResult
*--------------------------------------------------------------------------------
*/
public void execute(RenderData rdat) throws IOException
{
rdat.sendBinaryData(type,filename,length,data);
} // end execute
} // end class SendFileResult

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -27,6 +27,11 @@ import com.silverwrist.venice.servlets.format.*;
public class Top extends VeniceServlet
{
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
*/
public void init(ServletConfig config) throws ServletException
{
super.init(config); // required before we do anything else
@ -36,7 +41,7 @@ public class Top extends VeniceServlet
DOMConfigurator.configure(ctxt.getInitParameter("logging.config"));
// Initialize the Venice engine.
VeniceEngine engine = getVeniceEngine(ctxt);
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
// Initialize the Venice rendering system.
RenderConfig.getRenderConfig(ctxt);
@ -52,36 +57,34 @@ public class Top extends VeniceServlet
public String getServletInfo()
{
String rc = "Top applet - Displays the Venice front page\n"
+ "Part of the Venice Web conferencing system\n";
+ "Part of the Venice Web Communities System\n";
return rc;
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
ContentRender content = null;
String page_title = "My Front Page";
changeMenuTop(request);
setMyLocation(request,"top");
try
{ // attempt to get the user content
content = new TopContent(user);
return new TopContent(user);
} // end try
catch (DataException e)
catch (DataException de)
{ // there was a database error, whoops!
page_title = "Database Error";
content = new ErrorBox(page_title,"Error loading front page: " + e.getMessage(),null);
return new ErrorBox("Database Error","Error loading front page: " + de.getMessage(),null);
} // end catch
changeMenuTop(request);
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class Top

View File

@ -38,89 +38,6 @@ public class TopicOperations extends VeniceServlet
private static Category logger = Category.getInstance(TopicOperations.class.getName());
/*--------------------------------------------------------------------------------
* Internal functions
*--------------------------------------------------------------------------------
*/
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
throws ValidationException, DataException
{
String str = request.getParameter("sig");
if (str==null)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ValidationException("No SIG specified.");
} // end if
try
{ // turn the string into a SIGID, and thence to a SIGContext
int sigid = Integer.parseInt(str);
return user.getSIGContext(sigid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ValidationException("Invalid SIG parameter.");
} // end catch
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("conf");
if (str==null)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ValidationException("No conference specified.");
} // end if
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
int confid = Integer.parseInt(str);
return sig.getConferenceContext(confid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ValidationException("Invalid conference parameter.");
} // end catch
} // end getConferenceParameter
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
throws ValidationException, DataException, AccessError
{
String str = request.getParameter("top");
if (StringUtil.isStringEmpty(str))
{ // no topic parameter - bail out now!
logger.error("Topic parameter not specified!");
throw new ValidationException("No topic specified.");
} // end if
try
{ // turn the string into a TopicID, and thence to a TopicContext
short topicid = Short.parseShort(str);
return conf.getTopic(topicid);
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert topic parameter '" + str + "'!");
throw new ValidationException("Invalid topic parameter.");
} // end catch
} // end getTopicParameter
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
@ -134,224 +51,142 @@ public class TopicOperations extends VeniceServlet
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String location = "top";
String locator = null;
String page_title = null;
Object content = null;
SIGContext sig = null; // SIG context
ConferenceContext conf = null; // conference context
TopicContext topic = null; // topic context
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
try
{ // this outer try is to catch ValidationException
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
// get the SIG
SIGContext sig = getSIGParameter(request,user,true,"top");
changeMenuSIG(request,sig);
String locator = "sig=" + sig.getSIGID();
String location = "sigprofile?" + locator;
// get the conference
ConferenceContext conf = getConferenceParameter(request,sig,true,location);
locator += "&conf=" + conf.getConfID();
location = "confdisp?" + locator;
// get the topic
TopicContext topic = getTopicParameter(request,conf,true,location);
locator += "&top=" + topic.getTopicNumber();
location = "confdisp?" + locator;
// figure out what command we want to perform...
String cmd = getStandardCommandParam(request);
if (cmd.equals("HY") || cmd.equals("HN"))
{ // we want to set the hide status of the topic
try
{ // all commands require a SIG parameter
sig = getSIGParameter(request,user);
changeMenuSIG(request,sig);
if (logger.isDebugEnabled())
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
locator = "sig=" + String.valueOf(sig.getSIGID());
location = "sigprofile?" + locator;
{ // call down to set the topic!
topic.setHidden(cmd.equals("HY"));
} // end try
catch (DataException de)
{ // error looking up the SIG
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),location);
{ // there was a database error
return new ErrorBox("Database Error","Database error setting hide status: " + de.getMessage(),
location);
} // end catch
if (content==null)
{ // we got the SIG parameter OK
// go back to the topic view
throw new RedirectResult(location);
} // end if ("hide" or "show")
if (cmd.equals("FY") || cmd.equals("FN"))
{ // we want to set the frozen status of the topic
try
{ // call down to set the topic!
topic.setFrozen(cmd.equals("FY"));
} // end try
catch (DataException de)
{ // there was a database error
return new ErrorBox("Database Error","Database error setting freeze status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
// go back to the topic view
throw new RedirectResult(location);
} // end if ("freeze" or "unfreeze")
if (cmd.equals("AY") || cmd.equals("AN"))
{ // we want to change the archived status of the topic
try
{ // call down to set the topic!
topic.setArchived(cmd.equals("AY"));
} // end try
catch (DataException de)
{ // there was a database error
return new ErrorBox("Database Error","Database error setting archive status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
// go back to the topic view
throw new RedirectResult(location);
} // end if ("archive" or "unarchive")
if (cmd.equals("DEL"))
{ // Delete Topic requires a confirmation!
if (ConfirmBox.isConfirmed(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM))
{ // OK, go ahead, delete the topic!
location = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
try
{ // all commands require a conference parameter
conf = getConferenceParameter(request,sig);
if (logger.isDebugEnabled())
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
locator += "&conf=" + String.valueOf(conf.getConfID());
location = "confdisp?" + locator;
{ // delete the bloody topic!
topic.delete();
} // end try
catch (DataException de)
{ // there was a database error
return new ErrorBox("Database Error","Database error deleting topic: " + de.getMessage(),location);
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
} // end catch
} // end if
if (content==null)
{ // we got the conference parameter OK
try
{ // now we need a topic parameter
topic = getTopicParameter(request,conf);
if (logger.isDebugEnabled())
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
locator += "&top=" + String.valueOf(topic.getTopicNumber());
location = "confdisp?" + locator;
} // end try
catch (DataException de)
{ // error looking up the conference
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),location);
} // end catch
} // end if
} // end try
catch (ValidationException ve)
{ // these all get handled in pretty much the same way
page_title = "Error";
content = new ErrorBox(null,ve.getMessage(),location);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
if (content==null)
{ // figure out what command we want to perform...
String cmd = request.getParameter("cmd");
if (cmd==null)
cmd = "???";
if (cmd.equals("HY") || cmd.equals("HN"))
{ // we want to set the hide status of the topic
try
{ // call down to set the topic!
topic.setHidden(cmd.equals("HY"));
// go back to the topic view
rdat.redirectTo(location);
return;
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error setting hide status: " + de.getMessage(),location);
} // end catch
} // end if ("hide" or "show")
else if (cmd.equals("FY") || cmd.equals("FN"))
{ // we want to set the frozen status of the topic
try
{ // call down to set the topic!
topic.setFrozen(cmd.equals("FY"));
// go back to the topic view
rdat.redirectTo(location);
return;
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error setting freeze status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
return new ErrorBox("Access Error",ae.getMessage(),location);
} // end catch
} // end else if ("freeze" or "unfreeze")
else if (cmd.equals("AY") || cmd.equals("AN"))
{ // we want to change the archived status of the topic
try
{ // call down to set the topic!
topic.setArchived(cmd.equals("AY"));
// go back to the topic view
rdat.redirectTo(location);
return;
// go back to the conference view
throw new RedirectResult(location);
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error setting archive status: " + de.getMessage(),
location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end else if ("archive" or "unarchive")
else if (cmd.equals("DEL"))
{ // we need confirmation on this operation!
if (ConfirmBox.isConfirmed(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM))
{ // OK, go ahead, delete the topic!
location = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
+ String.valueOf(conf.getConfID());
try
{ // delete the bloody topic!
topic.delete();
// after which, redirect to conference view
rdat.redirectTo(location);
return;
} // end try
catch (DataException de)
{ // there was a database error
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error deleting topic: " + de.getMessage(),location);
} // end catch
catch (AccessError ae)
{ // naughty naughty = you can't do this!
page_title = "Access Error";
content = new ErrorBox(page_title,ae.getMessage(),location);
} // end catch
} // end if
else
{ // not a proper confirmation - better display one
String message = "You are about to delete topic " + String.valueOf(topic.getTopicNumber())
+ " from the \"" + conf.getName() + "\" conference! Are you sure you want to do this?";
String confirm_url = "topicops?" + locator + "&cmd=DEL";
page_title = "Delete Topic";
content = new ConfirmBox(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM,page_title,
message,confirm_url,location);
} // end else
} // end else if ("delete")
} // end if (confirmed)
else
{ // unrecognized command
page_title = "Internal Error";
logger.error("invalid command to TopicOperations.doGet: " + cmd);
content = new ErrorBox(page_title,"Invalid command to TopicOperations.doGet",location);
{ // not a proper confirmation - better display one
String message = "You are about to delete topic " + String.valueOf(topic.getTopicNumber())
+ " from the \"" + conf.getName() + "\" conference! Are you sure you want to do this?";
return new ConfirmBox(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM,"Delete Topic",message,
"topicops?" + locator + "&cmd=DEL",location);
} // end else
} // end if
} // end if (delete)
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
basedat.transfer(getServletContext(),rdat);
// unrecognized command
logger.error("invalid command to TopicOperations.doGet: " + cmd);
return new ErrorBox("Internal Error","Invalid command to TopicOperations.doGet",location);
} // end doGet
} // end doVeniceGet
} // end class TopicOperations

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -25,43 +25,43 @@ import com.silverwrist.venice.servlets.format.*;
public class UserDisplay extends VeniceServlet
{
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
*/
public String getServletInfo()
{
String rc = "UserDisplay servlet - Displays Venice user profiles\n"
+ "Part of the Venice Web conferencing system\n";
+ "Part of the Venice Web Communities System\n";
return rc;
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
/*--------------------------------------------------------------------------------
* Overrides from class VeniceServlet
*--------------------------------------------------------------------------------
*/
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
UserContext user = getUserContext(request);
RenderData rdat = createRenderData(request,response);
String page_title = null;
Object content = null;
String uname = request.getPathInfo().substring(1); // the username we're looking at
try
{ // use the request path info to get the username to load the profile from
String uname = request.getPathInfo().substring(1);
{ // load the profile corresponding to that username and display it
UserProfile prof = user.getProfile(uname);
content = new UserProfileData(prof);
page_title = "User Profile - " + prof.getUserName();
changeMenuTop(request);
return new UserProfileData(prof);
} // end try
catch (DataException de)
{ // unable to get the user name
page_title = "Database Error";
content = new ErrorBox(page_title,"Database error finding user: " + de.getMessage(),"top");
return new ErrorBox("Database Error","Database error finding user: " + de.getMessage(),"top");
} // end catch
changeMenuTop(request);
// format and display the user
BaseJSPData basedat = new BaseJSPData(page_title,"user" + request.getPathInfo(),content);
basedat.transfer(getServletContext(),rdat);
} // end doGet
} // end doVeniceGet
} // end class UserDisplay

View File

@ -176,9 +176,9 @@ public class Variables
} // end getLanguageList
public static ContentRender getMenu(HttpSession session)
public static ComponentRender getMenu(HttpSession session)
{
return (ContentRender)(session.getAttribute(MENU_ATTRIBUTE));
return (ComponentRender)(session.getAttribute(MENU_ATTRIBUTE));
} // end getMenu

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -17,10 +17,14 @@
*/
package com.silverwrist.venice.servlets;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.*;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.ServletMultipartHandler;
import com.silverwrist.util.ServletMultipartException;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.servlets.format.*;
@ -31,97 +35,628 @@ public abstract class VeniceServlet extends HttpServlet
*--------------------------------------------------------------------------------
*/
private static final String LOCATION_ATTR = "com.silverwrist.venice.servlets.internal.Location";
private static Category logger = Category.getInstance(VeniceServlet.class.getName());
/*--------------------------------------------------------------------------------
* Internal functions
*--------------------------------------------------------------------------------
*/
private static final void notSupported(HttpServletRequest request, String message) throws ErrorResult
{
String protocol = request.getProtocol();
if (protocol.endsWith("1.1"))
throw new ErrorResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED,message);
else
throw new ErrorResult(HttpServletResponse.SC_BAD_REQUEST,message);
} // end notSupported
private static final SIGContext getSIGParameter(String str, UserContext user, boolean required,
String on_error) throws ErrorBox
{
if (StringUtil.isStringEmpty(str))
{ // there's no SIG parameter
if (required)
{ // no SIG parameter - bail out now!
logger.error("SIG parameter not specified!");
throw new ErrorBox(null,"No SIG specified.",on_error);
} // end if
else
{ // a null SIGContext is permitted
if (logger.isDebugEnabled())
logger.debug("no SIG specified");
return null;
} // end else
} // end if
SIGContext rc = null;
try
{ // turn the string into a SIGID, and thence to a SIGContext
rc = user.getSIGContext(Integer.parseInt(str));
if (logger.isDebugEnabled())
logger.debug("found SIG #" + rc.getSIGID());
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert SIG parameter '" + str + "'!");
throw new ErrorBox(null,"Invalid SIG parameter.",on_error);
} // end catch
catch (DataException de)
{ // error looking up the SIG
throw new ErrorBox("Database Error","Database error finding SIG: " + de.getMessage(),on_error);
} // end catch
return rc;
} // end getSIGParameter
private static ConferenceContext getConferenceParameter(String str, SIGContext sig, boolean required,
String on_error) throws ErrorBox
{
if (StringUtil.isStringEmpty(str))
{ // there's no conference parameter
if (required)
{ // no conference parameter - bail out now!
logger.error("Conference parameter not specified!");
throw new ErrorBox(null,"No conference specified.",on_error);
} // end if
else
{ // a null ConferenceContext is permitted
if (logger.isDebugEnabled())
logger.debug("no conference specified");
return null;
} // end else
} // end if
ConferenceContext rc = null;
try
{ // turn the string into a ConfID, and thence to a ConferenceContext
rc = sig.getConferenceContext(Integer.parseInt(str));
if (logger.isDebugEnabled())
logger.debug("found conf #" + rc.getConfID());
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert conference parameter '" + str + "'!");
throw new ErrorBox(null,"Invalid conference parameter.",on_error);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // error looking up the conference
throw new ErrorBox("Database Error","Database error finding conference: " + de.getMessage(),on_error);
} // end catch
return rc;
} // end getConferenceParameter
private static TopicContext getTopicParameter(String str, ConferenceContext conf, boolean required,
String on_error) throws ErrorBox
{
if (StringUtil.isStringEmpty(str))
{ // there's no topic parameter
if (required)
{ // no topic parameter - bail out now!
logger.error("Topic parameter not specified!");
throw new ErrorBox(null,"No topic specified.",on_error);
} // end if
else
{ // a null TopicContext is permitted
if (logger.isDebugEnabled())
logger.debug("no topic specified");
return null;
} // end else
} // end if
TopicContext rc = null;
try
{ // turn the string into a TopicID, and thence to a TopicContext
rc = conf.getTopic(Short.parseShort(str));
if (logger.isDebugEnabled())
logger.debug("found topic #" + rc.getTopicID());
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert topic parameter '" + str + "'!");
throw new ErrorBox(null,"Invalid topic parameter.",on_error);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // error looking up the topic
throw new ErrorBox("Database Error","Database error finding topic: " + de.getMessage(),"top");
} // end catch
return rc;
} // end getTopicParameter
private static TopicMessageContext getMessageParameter(String str, ConferenceContext conf, boolean required,
String on_error) throws ErrorBox
{
if (StringUtil.isStringEmpty(str))
{ // there's no message parameter
if (required)
{ // no message parameter - bail out now!
logger.error("Message parameter not specified!");
throw new ErrorBox(null,"No message specified.",on_error);
} // end if
else
{ // a null TopicMessageContext is permitted
if (logger.isDebugEnabled())
logger.debug("no message specified");
return null;
} // end else
} // end if
TopicMessageContext rc = null;
try
{ // turn the string into a postid, and thence to a TopicMessageContext
rc = conf.getMessageByPostID(Long.parseLong(str));
if (logger.isDebugEnabled())
logger.debug("found post #" + rc.getPostID());
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert message parameter '" + str + "'!");
throw new ErrorBox(null,"Invalid message parameter.",on_error);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // error looking up the conference
throw new ErrorBox("Database Error","Database error finding message: " + de.getMessage(),on_error);
} // end catch
return rc;
} // end getMessageParameter
private static TopicMessageContext getMessageParameter(String str, TopicContext topic, boolean required,
String on_error) throws ErrorBox
{
if (StringUtil.isStringEmpty(str))
{ // there's no message parameter
if (required)
{ // no message parameter - bail out now!
logger.error("Message parameter not specified!");
throw new ErrorBox(null,"No message specified.",on_error);
} // end if
else
{ // a null TopicMessageContext is permitted
if (logger.isDebugEnabled())
logger.debug("no message specified");
return null;
} // end else
} // end if
TopicMessageContext rc = null;
try
{ // turn the string into a post number, and thence to a TopicMessageContext
rc = topic.getMessage(Integer.parseInt(str));
if (logger.isDebugEnabled())
logger.debug("found post #" + rc.getPostID());
} // end try
catch (NumberFormatException nfe)
{ // error in Integer.parseInt
logger.error("Cannot convert message parameter '" + str + "'!");
throw new ErrorBox(null,"Invalid message parameter.",on_error);
} // end catch
catch (AccessError ae)
{ // these all get handled in pretty much the same way
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
} // end catch
catch (DataException de)
{ // error looking up the conference
throw new ErrorBox("Database Error","Database error finding message: " + de.getMessage(),on_error);
} // end catch
return rc;
} // end getMessageParameter
/*--------------------------------------------------------------------------------
* Internal operations intended for use by derived classes
*--------------------------------------------------------------------------------
*/
protected static boolean isImageButtonClicked(ServletRequest request, String name)
protected static final boolean isImageButtonClicked(ServletRequest request, String name)
{
String val = request.getParameter(name + ".x");
return (val!=null);
} // end isImageButtonClicked
protected static VeniceEngine getVeniceEngine(ServletContext ctxt) throws ServletException
/*
protected static final VeniceEngine getVeniceEngine(ServletContext ctxt) throws ServletException
{
return Variables.getVeniceEngine(ctxt);
} // end getVeniceEngine
protected VeniceEngine getVeniceEngine() throws ServletException
protected final VeniceEngine getVeniceEngine() throws ServletException
{
return Variables.getVeniceEngine(getServletContext());
} // end getVeniceEngine
*/
protected UserContext getUserContext(HttpServletRequest request) throws ServletException
/*
protected final UserContext getUserContext(HttpServletRequest request) throws ServletException
{
return Variables.getUserContext(getServletContext(),request,request.getSession(true));
} // end getUserContext
*/
protected void putUserContext(HttpServletRequest request, UserContext ctxt)
protected final void putUserContext(HttpServletRequest request, UserContext ctxt)
{
Variables.putUserContext(request.getSession(true),ctxt);
} // end putUserContext
protected void clearUserContext(HttpServletRequest request)
protected final void clearUserContext(HttpServletRequest request)
{
Variables.clearUserContext(request.getSession(true));
} // end clearUserContext
protected static List getCountryList(ServletContext ctxt) throws ServletException
protected static final List getCountryList(ServletContext ctxt) throws ServletException
{
return Variables.getCountryList(ctxt);
} // end getCountryList
protected List getCountryList() throws ServletException
protected final List getCountryList() throws ServletException
{
return Variables.getCountryList(getServletContext());
} // end getCountryList
protected List getLanguageList(ServletContext ctxt) throws ServletException
protected final List getLanguageList(ServletContext ctxt) throws ServletException
{
return Variables.getLanguageList(ctxt);
} // end getLanguageList
protected List getLanguageList() throws ServletException
protected final List getLanguageList() throws ServletException
{
return Variables.getLanguageList(getServletContext());
} // end getLanguageList
protected void changeMenuTop(HttpServletRequest request)
protected final void changeMenuTop(HttpServletRequest request)
{
Variables.setMenuTop(getServletContext(),request.getSession(true));
} // end changeMenuTop
protected void changeMenuSIG(HttpServletRequest request, SIGContext sig)
protected final void changeMenuSIG(HttpServletRequest request, SIGContext sig)
{
Variables.setMenuSIG(request.getSession(true),sig);
} // end changeMenuSIG
protected void clearMenu(HttpServletRequest request)
protected final void clearMenu(HttpServletRequest request)
{
Variables.clearMenu(request.getSession(true));
} // end clearMenu
protected RenderData createRenderData(HttpServletRequest request, HttpServletResponse response)
/*
protected final RenderData createRenderData(HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
return RenderConfig.createRenderData(getServletContext(),request,response);
} // end createRenderData
*/
protected final String getStandardCommandParam(ServletRequest request)
{
String foo = request.getParameter("cmd");
if (foo==null)
return "???";
else
return foo;
} // end getStandardCommandParam
protected final void setMyLocation(ServletRequest request, String loc)
{
request.setAttribute(LOCATION_ATTR,loc);
} // end setMyLocation
protected final static SIGContext getSIGParameter(ServletRequest request, UserContext user, boolean required,
String on_error) throws ErrorBox
{
return getSIGParameter(request.getParameter("sig"),user,required,on_error);
} // end getSIGParameter
protected final static SIGContext getSIGParameter(ServletMultipartHandler mphandler, UserContext user,
boolean required, String on_error) throws ErrorBox
{
if (mphandler.isFileParam("sig"))
throw new ErrorBox(null,"Internal Error: SIG should be a normal param",on_error);
return getSIGParameter(mphandler.getValue("sig"),user,required,on_error);
} // end getSIGParameter
protected final static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig,
boolean required, String on_error)
throws ErrorBox
{
return getConferenceParameter(request.getParameter("conf"),sig,required,on_error);
} // end getConferenceParameter
protected final static ConferenceContext getConferenceParameter(ServletMultipartHandler mphandler,
SIGContext sig, boolean required,
String on_error) throws ErrorBox
{
if (mphandler.isFileParam("conf"))
throw new ErrorBox(null,"Internal Error: conference should be a normal param",on_error);
return getConferenceParameter(mphandler.getValue("conf"),sig,required,on_error);
} // end getConferenceParameter
protected final static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf,
boolean required, String on_error) throws ErrorBox
{
return getTopicParameter(request.getParameter("top"),conf,required,on_error);
} // end getTopicParameter
protected final static TopicContext getTopicParameter(ServletMultipartHandler mphandler,
ConferenceContext conf, boolean required,
String on_error) throws ErrorBox
{
if (mphandler.isFileParam("top"))
throw new ErrorBox(null,"Internal Error: topic should be a normal param",on_error);
return getTopicParameter(mphandler.getValue("top"),conf,required,on_error);
} // end getTopicParameter
protected final static TopicMessageContext getMessageParameter(ServletRequest request,
ConferenceContext conf, boolean required,
String on_error) throws ErrorBox
{
return getMessageParameter(request.getParameter("msg"),conf,required,on_error);
} // end getMessageParameter
protected final static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
ConferenceContext conf, boolean required,
String on_error) throws ErrorBox
{
if (mphandler.isFileParam("msg"))
throw new ErrorBox(null,"Internal Error: message should be a normal param",on_error);
return getMessageParameter(mphandler.getValue("msg"),conf,required,on_error);
} // end getMessageParameter
protected final static TopicMessageContext getMessageParameter(ServletRequest request, TopicContext topic,
boolean required, String on_error)
throws ErrorBox
{
return getMessageParameter(request.getParameter("msg"),topic,required,on_error);
} // end getMessageParameter
protected final static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
TopicContext topic, boolean required,
String on_error) throws ErrorBox
{
if (mphandler.isFileParam("msg"))
throw new ErrorBox(null,"Internal Error: message should be a normal param",on_error);
return getMessageParameter(mphandler.getValue("msg"),topic,required,on_error);
} // end getMessageParameter
/*--------------------------------------------------------------------------------
* Overrideable operations
*--------------------------------------------------------------------------------
*/
protected String getMyLocation(HttpServletRequest request, VeniceEngine engine, UserContext user,
RenderData rdat)
{
return (String)(request.getAttribute(LOCATION_ATTR));
} // end getMyLocation
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
notSupported(request,"GET method not supported");
return null;
} // end doVeniceGet
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
notSupported(request,"POST method not supported for normal form posts");
return null;
} // end doVenicePost
protected VeniceContent doVenicePost(HttpServletRequest request, ServletMultipartHandler mphandler,
VeniceEngine engine, UserContext user, RenderData rdat)
throws ServletException, IOException, VeniceServletResult
{
notSupported(request,"POST method not supported for multipart/form-data posts");
return null;
} // end doVenicePost
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
*/
public final void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
ServletContext ctxt = getServletContext();
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
UserContext user = Variables.getUserContext(ctxt,request,request.getSession(true));
RenderData rdat = RenderConfig.createRenderData(ctxt,request,response);
VeniceContent content = null;
try
{ // run the actual "get" in the servlet
content = doVeniceGet(request,engine,user,rdat);
} // end try
catch (VeniceServletResult res)
{ // special VeniceServletResult catch here - figure out what result it is
if (res instanceof VeniceContent)
content = (VeniceContent)res; // this is content
else if (res instanceof ContentResult)
{ // this contains content
ContentResult cres = (ContentResult)res;
content = cres.getContent();
} // end else if
else if (res instanceof ExecuteResult)
{ // direct-execution result
ExecuteResult xres = (ExecuteResult)res;
xres.execute(rdat);
return;
} // end else if
else // unrecognized VeniceServletResult
content = null;
} // end catch
if (content!=null)
{ // display the content!
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),content);
base.transfer(ctxt,rdat);
} // end if
else // there is no content - display the null response
rdat.nullResponse();
} // end doGet
public final void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
ServletContext ctxt = getServletContext();
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
UserContext user = Variables.getUserContext(ctxt,request,request.getSession(true));
RenderData rdat = RenderConfig.createRenderData(ctxt,request,response);
ServletMultipartHandler mphandler = null;
VeniceContent content = null;
if (ServletMultipartHandler.canHandle(request))
{ // if this is a multipart/form-data request, invoke our special handler code
try
{ // create the multipart handler
mphandler = new ServletMultipartHandler(request);
} // end try
catch (ServletMultipartException e)
{ // this is an error message we need to generate and just bail out on
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),
new ErrorBox(null,"Internal Error: " + e.getMessage(),null));
base.transfer(ctxt,rdat);
return;
} // end if
} // end if
try
{ // call the appropriate doVenicePost method
if (mphandler!=null)
content = doVenicePost(request,mphandler,engine,user,rdat);
else
content = doVenicePost(request,engine,user,rdat);
} // end try
catch (VeniceServletResult res)
{ // special VeniceServletResult catch here - figure out what result it is
if (res instanceof VeniceContent)
content = (VeniceContent)res; // this is content
else if (res instanceof ContentResult)
{ // this contains content
ContentResult cres = (ContentResult)res;
content = cres.getContent();
} // end else if
else if (res instanceof ExecuteResult)
{ // direct-execution result
ExecuteResult xres = (ExecuteResult)res;
xres.execute(rdat);
return;
} // end else if
else // unrecognized VeniceServletResult
content = null;
} // end catch
if (content!=null)
{ // display the content!
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),content);
base.transfer(ctxt,rdat);
} // end if
else // there is no content - display the null response
rdat.nullResponse();
} // end doPost
} // end class VeniceServlet

View File

@ -0,0 +1,59 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets;
import java.io.PrintWriter;
import java.io.PrintStream;
public class VeniceServletResult extends Throwable
{
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public VeniceServletResult()
{
super();
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class Throwable
*--------------------------------------------------------------------------------
*/
public final void printStackTrace()
{ // do nothing - this isn't really an error
} // end printStackTrace
public final void printStackTrace(PrintStream s)
{ // do nothing - this isn't really an error
} // end printStackTrace
public final void printStackTrace(PrintWriter s)
{ // do nothing - this isn't really an error
} // end printStackTrace
public final Throwable fillInStackTrace()
{ // do nothing - this isn't really an error
return this;
} // end fillInStackTrace
} // end class VeniceServletResult

View File

@ -69,6 +69,17 @@ public class AttachmentForm implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Upload Attachment";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -38,9 +38,8 @@ public class BaseJSPData
*--------------------------------------------------------------------------------
*/
private String title; // title string to use for this page
private String location; // location string to use for this page
private Object content; // the actual content
private VeniceContent content; // the actual content
private boolean login_links = true; // show login links up top?
/*--------------------------------------------------------------------------------
@ -48,9 +47,8 @@ public class BaseJSPData
*--------------------------------------------------------------------------------
*/
public BaseJSPData(String title, String location, Object content)
public BaseJSPData(String location, VeniceContent content)
{
this.title = title;
this.location = location;
this.content = content;
@ -78,12 +76,18 @@ public class BaseJSPData
} // end store
public String getTitle()
public String getTitle(RenderData rdat)
{
return title;
return content.getPageTitle(rdat);
} // end getTitle
public boolean locationSpecified()
{
return (location!=null);
} // end if
public String getLocation()
{
return location;
@ -92,7 +96,7 @@ public class BaseJSPData
public boolean displayLoginLinks()
{
return login_links;
return login_links && (location!=null);
} // end displayLoginLinks
@ -115,8 +119,7 @@ public class BaseJSPData
{
if (content==null)
{ // there is no content!
ErrorBox box = new ErrorBox(null,"Internal Error: There is no content available",null);
box.renderHere(out,rdat);
new ErrorBox(null,"Internal Error: There is no content available",null).renderHere(out,rdat);
return;
} // end if
@ -128,8 +131,7 @@ public class BaseJSPData
return;
} // end if
if (content instanceof JSPRender)
else if (content instanceof JSPRender)
{ // we have a JSP-rendered page - include it
JSPRender jr = (JSPRender)content;
rdat.storeJSPRender(jr);
@ -141,10 +143,8 @@ public class BaseJSPData
return;
} // end if
// this is the fallback if we don't recognize the content
ErrorBox box2 = new ErrorBox(null,"Internal Error: Content of invalid type",null);
box2.renderHere(out,rdat);
else // this is the fallback if we don't recognize the content
new ErrorBox(null,"Internal Error: Content of invalid type",null).renderHere(out,rdat);
} // end renderContent

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are

View File

@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
import javax.servlet.ServletRequest;
public interface CDCommandButton extends ContentRender
public interface CDCommandButton extends ComponentRender
{
public abstract String getName();

View File

@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
import com.silverwrist.venice.ValidationException;
public interface CDFormField extends ContentRender
public interface CDFormField extends ComponentRender
{
public abstract String getName();

View File

@ -0,0 +1,27 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets.format;
import java.io.Writer;
import java.io.IOException;
public interface ComponentRender
{
public abstract void renderHere(Writer out, RenderData rdat) throws IOException;
} // end interface ComponentRender

View File

@ -66,6 +66,17 @@ public class ConferenceListing implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Conference Listing: " + sig.getName();
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -93,7 +93,18 @@ public class ConfirmBox implements ContentRender
} // end doConfirm
/*--------------------------------------------------------------------------------
* Implementations from class ContentRender
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return title;
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface ContentRender
*--------------------------------------------------------------------------------
*/

View File

@ -122,6 +122,17 @@ public class ContentDialog implements Cloneable, ContentRender
{ // do nothing at this level
} // end validateWholeForm
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return title;
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface ContentRender
*--------------------------------------------------------------------------------
@ -214,12 +225,6 @@ public class ContentDialog implements Cloneable, ContentRender
*--------------------------------------------------------------------------------
*/
public String getTitle()
{
return title;
} // end getTitle
public void setErrorMessage(String message)
{
this.error_message = message;

View File

@ -99,6 +99,17 @@ public class ContentMenuPanel implements Cloneable, ContentRender
} // end constructor
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return title;
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface ContentRender
*--------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -20,7 +20,7 @@ package com.silverwrist.venice.servlets.format;
import java.io.Writer;
import java.io.IOException;
public interface ContentRender
public interface ContentRender extends VeniceContent
{
public abstract void renderHere(Writer out, RenderData rdat) throws IOException;

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -20,15 +20,27 @@ package com.silverwrist.venice.servlets.format;
import java.io.Writer;
import java.io.IOException;
import com.silverwrist.util.StringUtil;
import com.silverwrist.venice.servlets.VeniceServletResult;
public class ErrorBox implements ContentRender
public class ErrorBox extends VeniceServletResult implements ContentRender
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String title;
private String message;
private String back;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public ErrorBox(String title, String message, String back)
{
super();
this.title = title;
this.message = message;
this.back = back;
@ -38,6 +50,22 @@ public class ErrorBox implements ContentRender
} // end constructor
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return title;
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface ContentRender
*--------------------------------------------------------------------------------
*/
public void renderHere(Writer out, RenderData rdat) throws IOException
{
out.write("<P><TABLE ALIGN=CENTER WIDTH=\"70%\" BORDER=1 CELLPADDING=2 CELLSPACING=1>");

View File

@ -138,6 +138,17 @@ public class FindData implements JSPRender, SearchMode
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Find";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
import javax.servlet.ServletRequest;
public interface JSPRender
public interface JSPRender extends VeniceContent
{
public abstract void store(ServletRequest request);

View File

@ -0,0 +1,130 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets.format;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.silverwrist.venice.core.*;
public class ManageConference implements JSPRender
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
// Attribute name for request attribute
protected static final String ATTR_NAME = "com.silverwrist.venice.content.ManageConference";
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private SIGContext sig; // the SIG we're in
private ConferenceContext conf; // the conference being listed
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public ManageConference(SIGContext sig, ConferenceContext conf)
{
this.sig = sig;
this.conf = conf;
} // end constructor
/*--------------------------------------------------------------------------------
* External static functions
*--------------------------------------------------------------------------------
*/
public static ManageConference retrieve(ServletRequest request)
{
return (ManageConference)(request.getAttribute(ATTR_NAME));
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Manage Conference: " + conf.getName();
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------
*/
public void store(ServletRequest request)
{
request.setAttribute(ATTR_NAME,this);
} // end store
public String getTargetJSPName()
{
return "manage_conf.jsp";
} // end getTargetJSPName
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public int getSIGID()
{
return sig.getSIGID();
} // end getSIGID
public int getConfID()
{
return conf.getConfID();
} // end getConfID
public String getConfName()
{
return conf.getName();
} // end getConfName
public String getLocator()
{
return "sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
} // end getLocator
public boolean displayAdminSection()
{
return conf.canChangeConference();
// TODO: needs to have "delete" permission OR'ed in
} // end displayAdminSection
} // end class ManageConference

View File

@ -23,7 +23,7 @@ import java.util.*;
import com.silverwrist.util.StringUtil;
import com.silverwrist.venice.core.*;
public class MenuSIG implements ContentRender
public class MenuSIG implements ComponentRender
{
private String image_url;
private boolean image_url_needs_fixup = false;

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -20,7 +20,7 @@ package com.silverwrist.venice.servlets.format;
import java.io.Writer;
import java.io.IOException;
public class MenuTop implements ContentRender
public class MenuTop implements ComponentRender
{
public MenuTop()
{ // constructor does nothing

View File

@ -61,6 +61,17 @@ public class NewSIGWelcome implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "New SIG Created";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -70,6 +70,17 @@ public class NewTopicForm implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Create New Topic";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -105,6 +105,17 @@ public class PostPreview implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Previewing Message";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -98,6 +98,17 @@ public class PostSlippage implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Slippage or Double-Click Detected";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -308,6 +308,18 @@ public class RenderData
} // end nullResponse
public void errorResponse(int code) throws IOException
{
response.sendError(code);
} // end errorResponse
public void errorResponse(int code, String msg) throws IOException
{
response.sendError(code,msg);
} // end errorResponse
public void sendBinaryData(String type, String filename, int length, InputStream data) throws IOException
{
response.setContentType(type);

View File

@ -71,6 +71,17 @@ public class SIGCategoryBrowseData implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Set SIG Category";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -70,6 +70,17 @@ public class SIGProfileData implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "SIG Profile: " + sig.getName();
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -61,6 +61,17 @@ public class SIGWelcome implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Welcome to " + name;
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -26,7 +26,7 @@ import com.silverwrist.venice.core.DataException;
public abstract class TCStandardPanel extends TopContentPanel
{
class TCButton implements ContentRender
class TCButton implements ComponentRender
{
private String image;
private String alt_text;

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -24,15 +24,28 @@ import com.silverwrist.venice.core.*;
public class TopContent implements ContentRender
{
// Static constants
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
public static final int MAX_COLS = 2;
// Attributes
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private int actual_cols = MAX_COLS;
private int[] col_sizes;
private Vector panels = new Vector();
private boolean display_configure;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public TopContent(UserContext uc) throws DataException
{
int i; // loop counter
@ -74,6 +87,22 @@ public class TopContent implements ContentRender
} // end constructor
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "My Front Page";
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface ContentRender
*--------------------------------------------------------------------------------
*/
public void renderHere(Writer out, RenderData rdat) throws IOException
{
out.write("<TABLE BORDER=0 ALIGN=CENTER WIDTH=\"100%\" CELLPADDING=4 CELLSPACING=0>\n");
@ -108,6 +137,6 @@ public class TopContent implements ContentRender
rdat.writeFooter(out);
} /* end renderHere */
} // end renderHere
} // end class TopContent

View File

@ -22,7 +22,7 @@ import java.io.IOException;
import com.silverwrist.venice.core.UserContext;
import com.silverwrist.venice.core.DataException;
public abstract class TopContentPanel implements ContentRender, Cloneable
public abstract class TopContentPanel implements ComponentRender, Cloneable
{
protected TopContentPanel()
{ // do nothing

View File

@ -72,6 +72,17 @@ public class TopicListing implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Topics in " + conf.getName();
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -89,6 +89,18 @@ public class TopicPosts implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return topic.getName() + ": " + topic.getTotalMessages() + " Total; " + unread + " New; Last: "
+ rdat.formatDateForDisplay(topic.getLastUpdateDate());
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -60,6 +60,17 @@ public class UserProfileData implements JSPRender
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "User Profile - " + prof.getUserName();
} // end getPageTitle
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------

View File

@ -0,0 +1,24 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets.format;
public interface VeniceContent
{
public abstract String getPageTitle(RenderData rdat);
} // end interface VeniceContent

View File

@ -7,7 +7,7 @@
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
language governing rights and limitations under the License.
The Original Code is the Venice Web Community System.
The Original Code is the Venice Web Communities System.
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -22,9 +22,10 @@
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
<%!
private static void renderMenu(HttpSession session, java.io.Writer out, RenderData rdat) throws java.io.IOException
private static void renderMenu(HttpSession session, java.io.Writer out, RenderData rdat)
throws java.io.IOException
{
ContentRender menu = Variables.getMenu(session);
ComponentRender menu = Variables.getMenu(session);
if (menu==null)
menu = new MenuTop();
menu.renderHere(out,rdat);
@ -33,14 +34,15 @@ private static void renderMenu(HttpSession session, java.io.Writer out, RenderDa
%>
<%
BaseJSPData basedat = BaseJSPData.retrieve(request);
Variables.failIfNull(basedat);
UserContext user = Variables.getUserContext(application,request,session);
RenderData rdat = RenderConfig.createRenderData(application,request,response);
BaseJSPData basedat = BaseJSPData.retrieve(request);
%>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<%= rdat.getTitleTag(basedat.getTitle()) %>
<%= rdat.getTitleTag(basedat.getTitle(rdat)) %>
</HEAD>
<BODY BGCOLOR="#9999FF">

View File

@ -35,8 +35,7 @@
<IMG SRC="<%= rdat.getFullImagePath("purple-ball.gif") %>" ALT="*" WIDTH=14 HEIGHT=14 BORDER=0>
</TD>
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
<% String path = "confdisp?sig=" + String.valueOf(data.getSIGID()) + "&conf="
+ String.valueOf(data.getConferenceID(i)); %>
<% String path = "confdisp?sig=" + data.getSIGID() + "&conf=" + data.getConferenceID(i); %>
<A HREF="<%= rdat.getEncodedServletPath(path) %>"><%= StringUtil.encodeHTML(data.getConferenceName(i)) %></A> -
Latest activity: <%= rdat.getActivityString(data.getLastUpdateDate(i)) %><BR>
<% int count = data.getNumHosts(i); %>
@ -59,7 +58,7 @@
<% if (data.canCreateConference()) { %>
<P>
<DIV ALIGN="LEFT">
<A HREF="<%= rdat.getEncodedServletPath("confops?cmd=C&sig=" + String.valueOf(data.getSIGID())) %>"><IMG
<A HREF="<%= rdat.getEncodedServletPath("confops?cmd=C&sig=" + data.getSIGID()) %>"><IMG
SRC="<%= rdat.getFullImagePath("bn_create_new.gif") %>" ALT="Create New" WIDTH=80 HEIGHT=24 BORDER=0></A>
</DIV>
<% } // end if %>

View File

@ -7,7 +7,7 @@
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
language governing rights and limitations under the License.
The Original Code is the Venice Web Community System.
The Original Code is the Venice Web Communities System.
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -105,8 +105,7 @@ private static String getActivityString(SIGContext sig, RenderData rdat)
<%= rdat.getStdFontTag(null,2) %>
Display all categories whose name&nbsp;&nbsp;
<% } else throw new InternalStateError("display parameter " + String.valueOf(data.getDisplayOption())
+ " invalid"); %>
<% } else throw new InternalStateError("display parameter " + data.getDisplayOption() + " invalid"); %>
<SELECT NAME="mode" SIZE=1>
<OPTION VALUE="<%= SearchMode.SEARCH_PREFIX %>"

View File

@ -0,0 +1,59 @@
<%--
The contents of this file are subject to the Mozilla Public License Version 1.1
(the "License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
language governing rights and limitations under the License.
The Original Code is the Venice Web Communities System.
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
Contributor(s):
--%>
<%@ page import = "java.util.*" %>
<%@ page import = "com.silverwrist.util.StringUtil" %>
<%@ page import = "com.silverwrist.venice.core.*" %>
<%@ page import = "com.silverwrist.venice.servlets.Variables" %>
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
<%
ManageConference data = ManageConference.retrieve(request);
Variables.failIfNull(data);
RenderData rdat = RenderConfig.createRenderData(application,request,response);
%>
<% if (rdat.useHTMLComments()) { %><!-- Managing conference #<%= data.getConfID() %> --><% } %>
<% rdat.writeContentHeader(out,"Manage Conference:",data.getConfName()); %>
<%= rdat.getStdFontTag(null,2) %>
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator()) %>">Return to Topic List</A>
</FONT><P>
<% if (rdat.useHTMLComments()) { %><!-- Set Default Pseud Form --><% } %>
<FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("confops") %>">
<INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getSIGID() %>">
<INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= data.getConfID() %>">
<INPUT TYPE="HIDDEN" NAME="cmd" VALUE="P">
<%= rdat.getStdFontTag(null,2) %>
Set default pseud for conference:
<INPUT TYPE="TEXT" NAME="pseud" VALUE="" SIZE=37 MAXLENGTH=255>&nbsp;
<INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_set.gif") %>" NAME="set" ALT="Set"
WIDTH=80 HEIGHT=24 BORDER=0>
</FONT>
</FORM><P>
<% if (rdat.useHTMLComments()) { %><!-- Fixseen Link --><% } %>
<%= rdat.getStdFontTag(null,2) %><B>
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=FX") %>">Mark
entire conference as read (fixseen)</A>
</B></FONT><P>
<% if (data.displayAdminSection()) { %>
<% if (rdat.useHTMLComments()) { %><!-- Host Tools Section --><% } %>
<%-- TODO: fill this in --%>
<% } // end if (displaying admin section) %>
<% rdat.writeFooter(out); %>

View File

@ -34,8 +34,8 @@
tmp = "(Frozen) ";
else
tmp = "";
rdat.writeContentHeader(out,data.getTopicName(),tmp + String.valueOf(data.getTotalMessages())
+ " Total; " + String.valueOf(data.getNewMessages()) + " New; Last: "
rdat.writeContentHeader(out,data.getTopicName(),tmp + data.getTotalMessages() + " Total; "
+ data.getNewMessages() + " New; Last: "
+ rdat.formatDateForDisplay(data.getLastUpdate()));
%>
<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
@ -162,7 +162,7 @@
<% } // end if %>
<%= rdat.getStdFontTag(null,2) %>
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
+ String.valueOf(msg.getPostNumber())) %>"><%= msg.getPostNumber() %></A> of
+ msg.getPostNumber()) %>"><%= msg.getPostNumber() %></A> of
<A HREF="<%= last_post %>"><%= data.getTotalMessages() - 1 %></A>
<%= rdat.getStdFontTag(null,1) %>&lt;<%= data.getMessageReference(msg) %>&gt;</FONT>
<% if (data.showAdvanced() && msg.isHidden()) { %>
@ -176,7 +176,7 @@
</EM>)
<% if (msg.hasAttachment()) { %>
<A HREF="<%= rdat.getEncodedServletPath("attachment?" + data.getConfLocator() + "&msg="
+ String.valueOf(msg.getPostID())) %>"><IMG
+ msg.getPostID()) %>"><IMG
SRC="<%= rdat.getFullImagePath("attachment.gif") %>"
ALT="(Attachment <%= msg.getAttachmentFilename() %> - <%= msg.getAttachmentLength() %> bytes)"
WIDTH=16 HEIGHT=16 BORDER=0></A>
@ -190,14 +190,14 @@
<% } else if (msg.isHidden() && !(data.showAdvanced())) { %>
<TT><EM><B>
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
+ String.valueOf(msg.getPostNumber())) %>">(Hidden
+ msg.getPostNumber()) %>">(Hidden
Message: <%= msg.getNumLines() %> <% if (msg.getNumLines()==1) { %>Line<% } else { %>Lines<% } %>)</A>
</B></EM></TT><P>
<% } else { %>
<PRE><%= rdat.rewritePostData(data.getMessageBodyText(msg)) %></PRE>
<% } // end if %>
<% if (data.showAdvanced()) { %>
<% String po_loc = data.getLocator() + "&msg=" + String.valueOf(msg.getPostNumber()); %>
<% String po_loc = data.getLocator() + "&msg=" + msg.getPostNumber(); %>
</TD><TD NOWRAP ALIGN=RIGHT>
<% if (!(msg.isScribbled())) { %>
<% if (msg.canHide()) { %>

View File

@ -7,7 +7,7 @@
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
language governing rights and limitations under the License.
The Original Code is the Venice Web Community System.
The Original Code is the Venice Web Communities System.
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -51,9 +51,12 @@
<% if (data.isUserLoggedIn()) { %>
<DIV ALIGN="CENTER">
<% if (sig.isMember()) { %>
<A HREF="/TODO"><IMG SRC="<%= rdat.getFullImagePath("bn_invite.gif") %>" ALT="Invite" WIDTH=80 HEIGHT=24 BORDER=0></A>
<A HREF="/TODO"><IMG SRC="<%= rdat.getFullImagePath("bn_invite.gif") %>" ALT="Invite"
WIDTH=80 HEIGHT=24 BORDER=0></A>
<% } else if (sig.canJoin()) { %>
<A HREF="<%= rdat.getEncodedServletPath("sigops?cmd=J&sig=" + String.valueOf(sig.getSIGID())) %>"><IMG SRC="<%= rdat.getFullImagePath("bn_join_now.gif") %>" ALT="Join Now" WIDTH=80 HEIGHT=24 BORDER=0></A>
<A HREF="<%= rdat.getEncodedServletPath("sigops?cmd=J&sig=" + sig.getSIGID()) %>"><IMG
SRC="<%= rdat.getFullImagePath("bn_join_now.gif") %>" ALT="Join Now"
WIDTH=80 HEIGHT=24 BORDER=0></A>
<% } // end if %>
</DIV>
<% } // end if (user is logged in) %>

View File

@ -31,7 +31,7 @@
<% rdat.writeContentHeader(out,"Topics in " + data.getConfName(),null); %>
<%= rdat.getStdFontTag(null,2) %>
<DIV ALIGN="LEFT">
<A HREF="<%= rdat.getEncodedServletPath("confops?sig=" + String.valueOf(data.getSIGID())) %>"><IMG
<A HREF="<%= rdat.getEncodedServletPath("confops?sig=" + data.getSIGID()) %>"><IMG
SRC="<%= rdat.getFullImagePath("bn_conference_list.gif") %>" ALT="Conference List" WIDTH=80 HEIGHT=24
BORDER=0></A>&nbsp;&nbsp;
<% if (data.canCreateTopic()) { %>
@ -56,32 +56,32 @@
<TR VALIGN=TOP>
<TD ALIGN=LEFT WIDTH="1%"><%= rdat.getStdFontTag(null,2) %>
<% tmp = self + "&sort="
+ String.valueOf(data.isSort(ConferenceContext.SORT_NUMBER) ? -ConferenceContext.SORT_NUMBER
: ConferenceContext.SORT_NUMBER); %>
+ (data.isSort(ConferenceContext.SORT_NUMBER) ? -ConferenceContext.SORT_NUMBER
: ConferenceContext.SORT_NUMBER); %>
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">#</A></B>
</FONT></TD>
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
<% tmp = self + "&sort="
+ String.valueOf(data.isSort(ConferenceContext.SORT_NAME) ? -ConferenceContext.SORT_NAME
: ConferenceContext.SORT_NAME); %>
+ (data.isSort(ConferenceContext.SORT_NAME) ? -ConferenceContext.SORT_NAME
: ConferenceContext.SORT_NAME); %>
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Topic Name</A></B>
</FONT></TD>
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
<% tmp = self + "&sort="
+ String.valueOf(data.isSort(ConferenceContext.SORT_UNREAD) ? -ConferenceContext.SORT_UNREAD
: ConferenceContext.SORT_UNREAD); %>
+ (data.isSort(ConferenceContext.SORT_UNREAD) ? -ConferenceContext.SORT_UNREAD
: ConferenceContext.SORT_UNREAD); %>
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">New</A></B>
</FONT></TD>
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
<% tmp = self + "&sort="
+ String.valueOf(data.isSort(ConferenceContext.SORT_TOTAL) ? -ConferenceContext.SORT_TOTAL
: ConferenceContext.SORT_TOTAL); %>
+ (data.isSort(ConferenceContext.SORT_TOTAL) ? -ConferenceContext.SORT_TOTAL
: ConferenceContext.SORT_TOTAL); %>
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Total</A></B>
</FONT></TD>
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
<% tmp = self + "&sort="
+ String.valueOf(data.isSort(ConferenceContext.SORT_DATE) ? -ConferenceContext.SORT_DATE
: ConferenceContext.SORT_DATE); %>
+ (data.isSort(ConferenceContext.SORT_DATE) ? -ConferenceContext.SORT_DATE
: ConferenceContext.SORT_DATE); %>
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Last Response</A></B>
</FONT></TD>
</TR>
@ -90,7 +90,7 @@
<% while (it.hasNext()) { %>
<%
TopicContext topic = (TopicContext)(it.next());
tmp = self + "&top=" + String.valueOf(topic.getTopicNumber()) + "&rnm=1";
tmp = self + "&top=" + topic.getTopicNumber() + "&rnm=1";
%>
<TR VALIGN=TOP>
<TD ALIGN=LEFT WIDTH="1%"><%= rdat.getStdFontTag(null,2) %>
@ -108,7 +108,7 @@
<A HREF="<%= rdat.getEncodedServletPath(tmp) %>"><%= topic.getUnreadMessages() %></A>
</FONT></TD>
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&top=" + String.valueOf(topic.getTopicNumber())
<A HREF="<%= rdat.getEncodedServletPath(self + "&top=" + topic.getTopicNumber()
+ "&p1=0&p2=-1") %>"><%= topic.getTotalMessages() %></A>
</FONT></TD>
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
@ -156,31 +156,34 @@
<% if (data.isView(ConferenceContext.DISPLAY_NEW)) { %>
<B>New</B>
<% } else { %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_NEW)) %>">New</A>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + ConferenceContext.DISPLAY_NEW) %>">New</A>
<% } // end if %>
<B>|</B>
<% if (data.isView(ConferenceContext.DISPLAY_ACTIVE)) { %>
<B>Active</B>
<% } else { %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ACTIVE)) %>">Active</A>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
+ ConferenceContext.DISPLAY_ACTIVE) %>">Active</A>
<% } // end if %>
<B>|</B>
<% if (data.isView(ConferenceContext.DISPLAY_ALL)) { %>
<B>All</B>
<% } else { %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ALL)) %>">All</A>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + ConferenceContext.DISPLAY_ALL) %>">All</A>
<% } // end if %>
<B>|</B>
<% if (data.isView(ConferenceContext.DISPLAY_HIDDEN)) { %>
<B>Hidden</B>
<% } else { %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_HIDDEN)) %>">Hidden</A>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
+ ConferenceContext.DISPLAY_HIDDEN) %>">Hidden</A>
<% } // end if %>
<B>|</B>
<% if (data.isView(ConferenceContext.DISPLAY_ARCHIVED)) { %>
<B>Archived</B>
<% } else { %>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ARCHIVED)) %>">Archived</A>
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
+ ConferenceContext.DISPLAY_ARCHIVED) %>">Archived</A>
<% } // end if %>
<B>]</B>
</DIV>