added default JSP file and statistics measurement for attachment downloads
This commit is contained in:
parent
7e72407b84
commit
257537e869
|
@ -312,6 +312,12 @@
|
||||||
<url-pattern>/dump/*</url-pattern>
|
<url-pattern>/dump/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- The list of "welcome files" for the application -->
|
||||||
|
<welcome-file-list>
|
||||||
|
<welcome-file>default.jsp</welcome-file>
|
||||||
|
<welcome-file>index.html</welcome-file>
|
||||||
|
</welcome-file-list>
|
||||||
|
|
||||||
<!-- Global parameters for the HTTP session -->
|
<!-- Global parameters for the HTTP session -->
|
||||||
<session-config>
|
<session-config>
|
||||||
<session-timeout>60</session-timeout> <!-- 1 hour -->
|
<session-timeout>60</session-timeout> <!-- 1 hour -->
|
||||||
|
|
|
@ -377,9 +377,12 @@ CREATE TABLE postdata (
|
||||||
CREATE TABLE postattach (
|
CREATE TABLE postattach (
|
||||||
postid BIGINT NOT NULL PRIMARY KEY,
|
postid BIGINT NOT NULL PRIMARY KEY,
|
||||||
datalen INT,
|
datalen INT,
|
||||||
|
hits INT DEFAULT 0,
|
||||||
|
last_hit DATETIME,
|
||||||
|
stgmethod SMALLINT DEFAULT 0,
|
||||||
|
priority SMALLINT DEFAULT 0,
|
||||||
filename VARCHAR(255),
|
filename VARCHAR(255),
|
||||||
mimetype VARCHAR(128),
|
mimetype VARCHAR(128),
|
||||||
stgmethod SMALLINT DEFAULT 0,
|
|
||||||
data MEDIUMBLOB
|
data MEDIUMBLOB
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ package com.silverwrist.venice.core.impl;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.zip.*;
|
||||||
import org.apache.log4j.*;
|
import org.apache.log4j.*;
|
||||||
import com.silverwrist.util.StringUtil;
|
import com.silverwrist.util.StringUtil;
|
||||||
import com.silverwrist.util.collections.*;
|
import com.silverwrist.util.collections.*;
|
||||||
|
@ -60,6 +61,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
private int datalen;
|
private int datalen;
|
||||||
private String filename;
|
private String filename;
|
||||||
private String mimetype;
|
private String mimetype;
|
||||||
|
private int stgmethod;
|
||||||
private boolean nuked = false;
|
private boolean nuked = false;
|
||||||
private String creator_cache = null;
|
private String creator_cache = null;
|
||||||
private String text_cache = null;
|
private String text_cache = null;
|
||||||
|
@ -73,7 +75,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
long postid, long parent, int num, int linecount, int creator_uid,
|
long postid, long parent, int num, int linecount, int creator_uid,
|
||||||
java.util.Date posted, boolean hidden, int scribble_uid,
|
java.util.Date posted, boolean hidden, int scribble_uid,
|
||||||
java.util.Date scribble_date, String pseud, int datalen,
|
java.util.Date scribble_date, String pseud, int datalen,
|
||||||
String filename, String mimetype)
|
String filename, String mimetype, int stgmethod)
|
||||||
{
|
{
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
this.conf = conf;
|
this.conf = conf;
|
||||||
|
@ -91,6 +93,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
this.datalen = datalen;
|
this.datalen = datalen;
|
||||||
this.filename = filename;
|
this.filename = filename;
|
||||||
this.mimetype = mimetype;
|
this.mimetype = mimetype;
|
||||||
|
this.stgmethod = stgmethod;
|
||||||
|
|
||||||
} // end constructor
|
} // end constructor
|
||||||
|
|
||||||
|
@ -114,6 +117,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
this.datalen = 0;
|
this.datalen = 0;
|
||||||
this.filename = null;
|
this.filename = null;
|
||||||
this.mimetype = null;
|
this.mimetype = null;
|
||||||
|
this.stgmethod = -1;
|
||||||
|
|
||||||
} // end constructor
|
} // end constructor
|
||||||
|
|
||||||
|
@ -138,8 +142,9 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
Statement stmt = conn.createStatement();
|
Statement stmt = conn.createStatement();
|
||||||
StringBuffer sql = new StringBuffer("SELECT posts.hidden, posts.scribble_uid, posts.scribble_date, "
|
StringBuffer sql = new StringBuffer("SELECT posts.hidden, posts.scribble_uid, posts.scribble_date, "
|
||||||
+ "posts.pseud, postattach.datalen, postattach.filename, "
|
+ "posts.pseud, postattach.datalen, postattach.filename, "
|
||||||
+ "postattach.mimetype FROM posts LEFT JOIN postattach ON "
|
+ "postattach.mimetype, postattach.stgmethod FROM posts "
|
||||||
+ "posts.postid = postattach.postid WHERE posts.postid = ");
|
+ "LEFT JOIN postattach ON posts.postid = postattach.postid "
|
||||||
|
+ "WHERE posts.postid = ");
|
||||||
sql.append(postid).append(';');
|
sql.append(postid).append(';');
|
||||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
|
@ -151,6 +156,9 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
datalen = rs.getInt(5);
|
datalen = rs.getInt(5);
|
||||||
filename = rs.getString(6);
|
filename = rs.getString(6);
|
||||||
mimetype = rs.getString(7);
|
mimetype = rs.getString(7);
|
||||||
|
stgmethod = rs.getInt(8);
|
||||||
|
if (rs.wasNull())
|
||||||
|
stgmethod = -1;
|
||||||
|
|
||||||
} // end if
|
} // end if
|
||||||
else
|
else
|
||||||
|
@ -165,6 +173,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
datalen = 0;
|
datalen = 0;
|
||||||
filename = null;
|
filename = null;
|
||||||
mimetype = null;
|
mimetype = null;
|
||||||
|
stgmethod = -1;
|
||||||
nuked = true;
|
nuked = true;
|
||||||
creator_cache = null;
|
creator_cache = null;
|
||||||
text_cache = null;
|
text_cache = null;
|
||||||
|
@ -384,10 +393,16 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
|
|
||||||
} // end if
|
} // end if
|
||||||
|
|
||||||
// Create the statement and the SQL we need to retrieve the attachment.
|
// This will cause a "hit" on the attachment data. Update that record.
|
||||||
Statement stmt = conn.createStatement();
|
Statement stmt = conn.createStatement();
|
||||||
StringBuffer sql = new StringBuffer("SELECT data FROM postattach WHERE postid = ");
|
StringBuffer sql = new StringBuffer("UPDATE postattach SET hits = hits + 1, last_hit = '");
|
||||||
sql.append(postid).append(';');
|
sql.append(SQLUtil.encodeDate(new java.util.Date())).append("' WHERE postid = ").append(postid);
|
||||||
|
sql.append(';');
|
||||||
|
stmt.executeUpdate(sql.toString());
|
||||||
|
|
||||||
|
// Create the SQL we need to retrieve the attachment.
|
||||||
|
sql.setLength(0);
|
||||||
|
sql.append("SELECT data FROM postattach WHERE postid = ").append(postid).append(';');
|
||||||
|
|
||||||
// Execute the query!
|
// Execute the query!
|
||||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||||
|
@ -402,19 +417,35 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
// need to make a temporary copy of it, to a ByteArrayOutputStream. (Attachments can only be
|
// need to make a temporary copy of it, to a ByteArrayOutputStream. (Attachments can only be
|
||||||
// 1 Mb in size, so this shouldn't be a big problem.)
|
// 1 Mb in size, so this shouldn't be a big problem.)
|
||||||
InputStream sqldata = rs.getBinaryStream(1);
|
InputStream sqldata = rs.getBinaryStream(1);
|
||||||
|
InputStream real_input;
|
||||||
|
switch (stgmethod)
|
||||||
|
{ // where's our input really coming from
|
||||||
|
case 0: // copy verbatim
|
||||||
|
real_input = sqldata;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: // gunzip it first
|
||||||
|
real_input = new GZIPInputStream(sqldata);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new DataException("Unknown storage method value: " + stgmethod);
|
||||||
|
|
||||||
|
} // end switch
|
||||||
|
|
||||||
ByteArrayOutputStream copy = new ByteArrayOutputStream(datalen);
|
ByteArrayOutputStream copy = new ByteArrayOutputStream(datalen);
|
||||||
byte[] buffer = new byte[4096];
|
byte[] buffer = new byte[4096];
|
||||||
int rd = sqldata.read(buffer);
|
int rd = real_input.read(buffer);
|
||||||
while (rd>=0)
|
while (rd>=0)
|
||||||
{ // write, then read again
|
{ // write, then read again
|
||||||
if (rd>0)
|
if (rd>0)
|
||||||
copy.write(buffer,0,rd);
|
copy.write(buffer,0,rd);
|
||||||
rd = sqldata.read(buffer);
|
rd = real_input.read(buffer);
|
||||||
|
|
||||||
} // end while
|
} // end while
|
||||||
|
|
||||||
// Close both our streams, making sure we create the stream we need for the return value.
|
// Close both our streams, making sure we create the stream we need for the return value.
|
||||||
sqldata.close();
|
real_input.close();
|
||||||
rc = new ByteArrayInputStream(copy.toByteArray());
|
rc = new ByteArrayInputStream(copy.toByteArray());
|
||||||
copy.close();
|
copy.close();
|
||||||
|
|
||||||
|
@ -816,6 +847,40 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
|
|
||||||
} // end else if
|
} // end else if
|
||||||
|
|
||||||
|
// Compress the attachment data in memory.
|
||||||
|
InputStream real_data = null;
|
||||||
|
int real_length = 0;
|
||||||
|
try
|
||||||
|
{ // create a compressor into a memory buffer
|
||||||
|
ByteArrayOutputStream bytestm = new ByteArrayOutputStream(length);
|
||||||
|
GZIPOutputStream gzipstm = new GZIPOutputStream(bytestm);
|
||||||
|
|
||||||
|
// do the usual read/write loop to get the data compressed
|
||||||
|
byte[] buffer = new byte[4096];
|
||||||
|
int rd = data.read(buffer);
|
||||||
|
while (rd>=0)
|
||||||
|
{ // write, then read
|
||||||
|
if (rd>0)
|
||||||
|
gzipstm.write(buffer,0,rd);
|
||||||
|
rd = data.read(buffer);
|
||||||
|
|
||||||
|
} // end while
|
||||||
|
|
||||||
|
// finish compression, then get the data and the real length
|
||||||
|
gzipstm.finish();
|
||||||
|
buffer = bytestm.toByteArray();
|
||||||
|
real_length = buffer.length;
|
||||||
|
real_data = new ByteArrayInputStream(buffer);
|
||||||
|
gzipstm.close();
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (IOException ioe)
|
||||||
|
{ // the big error
|
||||||
|
logger.error("IOException in compressor loop: " + ioe.getMessage(),ioe);
|
||||||
|
throw new DataException("Failure in compressing read data: " + ioe.getMessage());
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
AuditRecord ar = null;
|
AuditRecord ar = null;
|
||||||
|
|
||||||
|
@ -834,20 +899,23 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
|
|
||||||
// Build the SQL statement that inserts the attachment. Note the use of the "?" to specify the
|
// Build the SQL statement that inserts the attachment. Note the use of the "?" to specify the
|
||||||
// BLOB parameter (the attachment data itself); this comes later.
|
// BLOB parameter (the attachment data itself); this comes later.
|
||||||
StringBuffer sql =
|
StringBuffer sql = new StringBuffer("INSERT INTO postattach (postid, datalen, last_hit, stgmethod, "
|
||||||
new StringBuffer("INSERT INTO postattach (postid, datalen, filename, mimetype, data) VALUES (");
|
+ "filename, mimetype, data) VALUES (");
|
||||||
sql.append(postid).append(", ").append(length).append(", '").append(SQLUtil.encodeString(file));
|
sql.append(postid).append(", ").append(length).append(", '");
|
||||||
sql.append("', '").append(SQLUtil.encodeString(m_type)).append("', ?);");
|
sql.append(SQLUtil.encodeDate(new java.util.Date())).append("', 1, '");
|
||||||
|
sql.append(SQLUtil.encodeString(file)).append("', '").append(SQLUtil.encodeString(m_type));
|
||||||
|
sql.append("', ?);");
|
||||||
|
|
||||||
// Prepare the statement, set the BLOB parameter, and execute it.
|
// Prepare the statement, set the BLOB parameter, and execute it.
|
||||||
PreparedStatement stmt = conn.prepareStatement(sql.toString());
|
PreparedStatement stmt = conn.prepareStatement(sql.toString());
|
||||||
stmt.setBinaryStream(1,data,length);
|
stmt.setBinaryStream(1,real_data,real_length);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
|
|
||||||
// Save off the local attachment values.
|
// Save off the local attachment values.
|
||||||
datalen = length;
|
datalen = length;
|
||||||
filename = file;
|
filename = file;
|
||||||
mimetype = m_type;
|
mimetype = m_type;
|
||||||
|
stgmethod = 1;
|
||||||
|
|
||||||
// Generate an audit record indicating what we did.
|
// Generate an audit record indicating what we did.
|
||||||
ar = new AuditRecord(AuditRecord.UPLOAD_ATTACHMENT,conf.realUID(),conf.userRemoteAddress(),
|
ar = new AuditRecord(AuditRecord.UPLOAD_ATTACHMENT,conf.realUID(),conf.userRemoteAddress(),
|
||||||
|
@ -1036,8 +1104,8 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
StringBuffer sql =
|
StringBuffer sql =
|
||||||
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
||||||
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
||||||
+ "a.mimetype FROM posts p LEFT JOIN postattach a ON p.postid = a.postid "
|
+ "a.mimetype, a.stgmethod FROM posts p LEFT JOIN postattach a ON "
|
||||||
+ "WHERE p.topicid = ");
|
+ "p.postid = a.postid WHERE p.topicid = ");
|
||||||
sql.append(topicid).append(" AND p.num >= ").append(post_low).append(" AND p.num <= ");
|
sql.append(topicid).append(" AND p.num >= ").append(post_low).append(" AND p.num <= ");
|
||||||
sql.append(post_high).append(" ORDER BY p.num ASC;");
|
sql.append(post_high).append(" ORDER BY p.num ASC;");
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
|
@ -1050,7 +1118,8 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
new TopicMessageUserContextImpl(engine,conf,datapool,rs.getLong(1),rs.getLong(2),rs.getInt(3),
|
new TopicMessageUserContextImpl(engine,conf,datapool,rs.getLong(1),rs.getLong(2),rs.getInt(3),
|
||||||
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
||||||
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
||||||
rs.getString(10),rs.getInt(11),rs.getString(12),rs.getString(13));
|
rs.getString(10),rs.getInt(11),rs.getString(12),rs.getString(13),
|
||||||
|
rs.getInt(14));
|
||||||
rc.add(val);
|
rc.add(val);
|
||||||
|
|
||||||
} // end while
|
} // end while
|
||||||
|
@ -1091,8 +1160,8 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
StringBuffer sql =
|
StringBuffer sql =
|
||||||
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
||||||
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
||||||
+ "a.mimetype FROM posts p LEFT JOIN postattach a ON p.postid = a.postid "
|
+ "a.mimetype, a.stgmethod FROM posts p LEFT JOIN postattach a ON "
|
||||||
+ "WHERE p.topicid = ");
|
+ "p.postid = a.postid WHERE p.topicid = ");
|
||||||
sql.append(topicid).append(" AND p.num = ").append(message_num).append(';');
|
sql.append(topicid).append(" AND p.num = ").append(message_num).append(';');
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("SQL: " + sql.toString());
|
logger.debug("SQL: " + sql.toString());
|
||||||
|
@ -1103,7 +1172,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
||||||
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
||||||
rs.getString(10),rs.getInt(11),rs.getString(12),
|
rs.getString(10),rs.getInt(11),rs.getString(12),
|
||||||
rs.getString(13));
|
rs.getString(13),rs.getInt(14));
|
||||||
|
|
||||||
// indicates an error...
|
// indicates an error...
|
||||||
throw new DataException("Message not found.");
|
throw new DataException("Message not found.");
|
||||||
|
@ -1140,8 +1209,8 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
StringBuffer sql =
|
StringBuffer sql =
|
||||||
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
new StringBuffer("SELECT p.postid, p.parent, p.num, p.linecount, p.creator_uid, p.posted, "
|
||||||
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
+ "p.hidden, p.scribble_uid, p.scribble_date, p.pseud, a.datalen, a.filename, "
|
||||||
+ "a.mimetype FROM topics t, posts p LEFT JOIN postattach a ON p.postid = a.postid "
|
+ "a.mimetype, a.stgmethod FROM topics t, posts p LEFT JOIN postattach a "
|
||||||
+ "WHERE t.topicid = p.topicid AND t.confid = ");
|
+ "ON p.postid = a.postid WHERE t.topicid = p.topicid AND t.confid = ");
|
||||||
sql.append(conf.realConfID()).append(" AND p.postid = ").append(postid).append(';');
|
sql.append(conf.realConfID()).append(" AND p.postid = ").append(postid).append(';');
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("SQL: " + sql.toString());
|
logger.debug("SQL: " + sql.toString());
|
||||||
|
@ -1152,7 +1221,7 @@ class TopicMessageUserContextImpl implements TopicMessageContext
|
||||||
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
rs.getInt(4),rs.getInt(5),SQLUtil.getFullDateTime(rs,6),
|
||||||
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
rs.getBoolean(7),rs.getInt(8),SQLUtil.getFullDateTime(rs,9),
|
||||||
rs.getString(10),rs.getInt(11),rs.getString(12),
|
rs.getString(10),rs.getInt(11),rs.getString(12),
|
||||||
rs.getString(13));
|
rs.getString(13),rs.getInt(14));
|
||||||
|
|
||||||
// indicates an error...
|
// indicates an error...
|
||||||
throw new DataException("Message not found.");
|
throw new DataException("Message not found.");
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||||
* language governing rights and limitations under the License.
|
* 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>,
|
* 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
|
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||||
|
@ -23,6 +23,13 @@ import com.silverwrist.util.StringUtil;
|
||||||
|
|
||||||
public class SQLUtil
|
public class SQLUtil
|
||||||
{
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Static data members
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static SimpleTimeZone utc = new SimpleTimeZone(0,"UTC");
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------
|
||||||
* Internal functions
|
* Internal functions
|
||||||
*--------------------------------------------------------------------------------
|
*--------------------------------------------------------------------------------
|
||||||
|
@ -35,7 +42,7 @@ public class SQLUtil
|
||||||
|
|
||||||
try
|
try
|
||||||
{ // do almost the reverse process of formatting it into a string
|
{ // do almost the reverse process of formatting it into a string
|
||||||
GregorianCalendar cal = new GregorianCalendar(new SimpleTimeZone(0,"UTC"));
|
GregorianCalendar cal = new GregorianCalendar(utc);
|
||||||
cal.set(Calendar.YEAR,Integer.parseInt(dstr.substring(0,4)));
|
cal.set(Calendar.YEAR,Integer.parseInt(dstr.substring(0,4)));
|
||||||
cal.set(Calendar.MONTH,Integer.parseInt(dstr.substring(5,7)) - 1 + Calendar.JANUARY);
|
cal.set(Calendar.MONTH,Integer.parseInt(dstr.substring(5,7)) - 1 + Calendar.JANUARY);
|
||||||
cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(dstr.substring(8,10)));
|
cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(dstr.substring(8,10)));
|
||||||
|
@ -112,7 +119,7 @@ public class SQLUtil
|
||||||
public static String encodeDate(java.util.Date d)
|
public static String encodeDate(java.util.Date d)
|
||||||
{
|
{
|
||||||
// Break down the date as a UTC value.
|
// Break down the date as a UTC value.
|
||||||
GregorianCalendar cal = new GregorianCalendar(new SimpleTimeZone(0,"UTC"));
|
GregorianCalendar cal = new GregorianCalendar(utc);
|
||||||
cal.setTime(d);
|
cal.setTime(d);
|
||||||
|
|
||||||
// Create the two string buffers converting the date.
|
// Create the two string buffers converting the date.
|
||||||
|
|
|
@ -111,14 +111,14 @@ public class Attachment extends VeniceServlet
|
||||||
return new ErrorBox(null,"Internal Error: 'thefile' should be a file param",target);
|
return new ErrorBox(null,"Internal Error: 'thefile' should be a file param",target);
|
||||||
|
|
||||||
// get the SIG
|
// get the SIG
|
||||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
SIGContext sig = getSIGParameter(mphandler,user,true,"top");
|
||||||
changeMenuSIG(request,sig);
|
changeMenuSIG(request,sig);
|
||||||
|
|
||||||
// get the conference
|
// get the conference
|
||||||
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
|
ConferenceContext conf = getConferenceParameter(mphandler,sig,true,"top");
|
||||||
|
|
||||||
// get the message we want to use
|
// get the message we want to use
|
||||||
TopicMessageContext msg = getMessageParameter(request,conf,true,"top");
|
TopicMessageContext msg = getMessageParameter(mphandler,conf,true,"top");
|
||||||
|
|
||||||
try
|
try
|
||||||
{ // attach the data to the message!
|
{ // attach the data to the message!
|
||||||
|
|
22
web/default.jsp
Normal file
22
web/default.jsp
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<%--
|
||||||
|
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):
|
||||||
|
--%>
|
||||||
|
<%
|
||||||
|
ServletContext ctxt = getServletConfig().getServletContext();
|
||||||
|
RequestDispatcher disp = ctxt.getNamedDispatcher("top");
|
||||||
|
disp.forward(request,response);
|
||||||
|
%>
|
Loading…
Reference in New Issue
Block a user