📄 threadxml.java
字号:
throw new CreateException("Found favorite-thread record that is not assigned to any known thread.");
} else if (parentForumID<0) {
throw new CreateException("Can't create a favorite-thread, because no parent forum assigned yet.");
}
java.sql.Timestamp favoriteCreationDate1;
int favoriteType1;
int favoriteOption1;
int favoriteStatus1;
try {
if (memberName==null) memberName="";
favoriteCreationDate1= XMLUtil.stringToSqlTimestampDefNow(favoriteCreationDate);
favoriteType1= XMLUtil.stringToIntDef(favoriteType, 0);
favoriteOption1= XMLUtil.stringToIntDef(favoriteOption, 0);
favoriteStatus1= XMLUtil.stringToIntDef(favoriteStatus, 0);
} catch (NumberFormatException e) {
throw new CreateException("Invalid data for a favorite-thread. Expected a number.");
}
//todo Igor: Shoud I allow memberID==0 here?
int memberID=0;
if (!memberName.equals("")) {
memberID=DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
}
DAOFactory.getFavoriteThreadDAO().create(
memberID, threadID, parentForumID,
favoriteCreationDate1, favoriteType1, favoriteOption1, favoriteStatus1);
}
public void increaseReplyCount()
throws ObjectNotFoundException, DatabaseException {
if (threadID<0) {
throw new ObjectNotFoundException("Can't update ThreadReplyCount on thread that is not created yet.");
}
DAOFactory.getThreadDAO().increaseReplyCount(threadID);
}
public void updateLastPostMemberName(String value)
throws ObjectNotFoundException, DatabaseException, ForeignKeyNotFoundException {
if (threadID<0) {
throw new ObjectNotFoundException("Can't update LastPostMemberName on thread that is not created yet.");
}
DAOFactory.getThreadDAO().updateLastPostMemberName(threadID, value);
}
public void updateLastPostDate(Timestamp value)
throws ObjectNotFoundException, DatabaseException {
if (threadID<0) {
throw new ObjectNotFoundException("Can't update ThreadLastPostDate on thread that is not created yet.");
}
DAOFactory.getThreadDAO().updateLastPostDate(threadID, value);
}
// ===============================================================
// ==================== STATIC EXPORT METHODS ====================
// ===============================================================
public static void exportThreadWatchesForThread(XMLWriter xmlWriter, int threadID)
throws IOException, ExportException, NumberFormatException, ObjectNotFoundException,
DatabaseException {
Collection threadWatches=ExportWebHelper.execSqlQuery(
"SELECT MemberID, WatchType, WatchOption, WatchStatus, WatchCreationDate, WatchLastSentDate, WatchEndDate"+
" FROM "+WatchDAO.TABLE_NAME+
" WHERE ThreadID="+Integer.toString(threadID));//AND ForumID=0 AND CategoryID=0
Iterator iter=threadWatches.iterator();
String[] threadWatch=null;
//try {
xmlWriter.startElement("ThreadWatchList");
try {
while ( (threadWatch=(String[])iter.next()) !=null) {
if (threadWatch.length!=7) {
throw new ExportException("Error while retrieving data about thread watch for threadID=="+threadID);
}
String memberName=DAOFactory.getMemberDAO().getMember_forPublic(Integer.parseInt(threadWatch[0])).getMemberName();
xmlWriter.startElement("ThreadWatch");
xmlWriter.startElement("MemberName");
xmlWriter.writeData(memberName);
xmlWriter.endElement("MemberName");
xmlWriter.startElement("WatchType");
xmlWriter.writeData(threadWatch[1]);
xmlWriter.endElement("WatchType");
xmlWriter.startElement("WatchOption");
xmlWriter.writeData(threadWatch[2]);
xmlWriter.endElement("WatchOption");
xmlWriter.startElement("WatchStatus");
xmlWriter.writeData(threadWatch[3]);
xmlWriter.endElement("WatchStatus");
xmlWriter.startElement("WatchCreationDate");
xmlWriter.writeData(threadWatch[4]);
xmlWriter.endElement("WatchCreationDate");
xmlWriter.startElement("WatchLastSentDate");
xmlWriter.writeData(threadWatch[5]);
xmlWriter.endElement("WatchLastSentDate");
xmlWriter.startElement("WatchEndDate");
xmlWriter.writeData(threadWatch[6]);
xmlWriter.endElement("WatchEndDate");
xmlWriter.endElement("ThreadWatch");
}
} catch (NoSuchElementException e) {
//no more database records
}
xmlWriter.endElement("ThreadWatchList");
//} catch throw exportexception
}
public static void exportFavoriteThreadsForThread(XMLWriter xmlWriter, int threadID)
throws IOException, ExportException, NumberFormatException, ObjectNotFoundException,
DatabaseException {
Collection favoriteThreads=ExportWebHelper.execSqlQuery(
"SELECT MemberID, FavoriteCreationDate,"+
" FavoriteType, FavoriteOption, FavoriteStatus"+
" FROM "+FavoriteThreadDAO.TABLE_NAME+
" WHERE ThreadID="+Integer.toString(threadID));
Iterator iter=favoriteThreads.iterator();
String[] favoriteThread=null;
//try {
xmlWriter.startElement("FavoriteThreadList");
try {
while ( (favoriteThread=(String[])iter.next()) !=null) {
if (favoriteThread.length!=5) {
throw new ExportException("Error while retrieving data about favorite-thread records for threadID=="+threadID);
}
String memberName=DAOFactory.getMemberDAO().getMember_forPublic(Integer.parseInt(favoriteThread[0])).getMemberName();
xmlWriter.startElement("FavoriteThread");
xmlWriter.startElement("MemberName");
xmlWriter.writeData(memberName);
xmlWriter.endElement("MemberName");
xmlWriter.startElement("FavoriteCreationDate");
xmlWriter.writeData(favoriteThread[1]);
xmlWriter.endElement("FavoriteCreationDate");
xmlWriter.startElement("FavoriteType");
xmlWriter.writeData(favoriteThread[2]);
xmlWriter.endElement("FavoriteType");
xmlWriter.startElement("FavoriteOption");
xmlWriter.writeData(favoriteThread[3]);
xmlWriter.endElement("FavoriteOption");
xmlWriter.startElement("FavoriteStatus");
xmlWriter.writeData(favoriteThread[4]);
xmlWriter.endElement("FavoriteStatus");
xmlWriter.endElement("FavoriteThread");
}
} catch (NoSuchElementException e) {
//no more database records
}
xmlWriter.endElement("FavoriteThreadList");
//} catch throw exportexception
}
public static void exportThread(XMLWriter xmlWriter, int threadID)
throws NumberFormatException, IOException, ExportException, ObjectNotFoundException,
DatabaseException {
Collection thread1=ExportWebHelper.execSqlQuery(
"SELECT MemberName, LastPostMemberName,"+
" ThreadTopic, ThreadBody, ThreadVoteCount, ThreadVoteTotalStars,"+
" ThreadCreationDate, ThreadLastPostDate, ThreadType, ThreadOption,"+
" ThreadStatus, ThreadHasPoll, ThreadViewCount, ThreadReplyCount,"+
" ThreadIcon, ThreadDuration, ThreadAttachCount"+
" FROM "+ThreadDAO.TABLE_NAME+
" WHERE ThreadID="+Integer.toString(threadID));
Iterator iter=thread1.iterator();
String[] thread=null;
//try {
try {
if ( (thread=(String[])iter.next()) ==null) {
throw new ExportException("Can't find data for threadID=="+threadID);
}
if (thread.length!=17) {
throw new ExportException("Error while retrieving data about thread with threadID=="+threadID);
}
} catch (NoSuchElementException e) {
throw new ExportException("Can't find data for threadID=="+threadID);
}
//if I am here, that means I now have correct object thread
xmlWriter.startElement("Thread");
xmlWriter.startElement("MemberName");
xmlWriter.writeData(thread[0]);
xmlWriter.endElement("MemberName");
xmlWriter.startElement("ThreadLastPostMemberName");
xmlWriter.writeData(thread[1]);
xmlWriter.endElement("ThreadLastPostMemberName");
xmlWriter.startElement("ThreadTopic");
xmlWriter.writeData(DisableHtmlTagFilter.filter(thread[2]));
xmlWriter.endElement("ThreadTopic");
xmlWriter.startElement("ThreadBody");
xmlWriter.writeData(DisableHtmlTagFilter.filter(thread[3]));
xmlWriter.endElement("ThreadBody");
xmlWriter.startElement("ThreadVoteCount");
xmlWriter.writeData(thread[4]);
xmlWriter.endElement("ThreadVoteCount");
xmlWriter.startElement("ThreadVoteTotalStars");
xmlWriter.writeData(thread[5]);
xmlWriter.endElement("ThreadVoteTotalStars");
xmlWriter.startElement("ThreadCreationDate");
xmlWriter.writeData(thread[6]);
xmlWriter.endElement("ThreadCreationDate");
xmlWriter.startElement("ThreadLastPostDate");
xmlWriter.writeData(thread[7]);
xmlWriter.endElement("ThreadLastPostDate");
xmlWriter.startElement("ThreadType");
xmlWriter.writeData(thread[8]);
xmlWriter.endElement("ThreadType");
xmlWriter.startElement("ThreadOption");
xmlWriter.writeData(thread[9]);
xmlWriter.endElement("ThreadOption");
xmlWriter.startElement("ThreadStatus");
xmlWriter.writeData(thread[10]);
xmlWriter.endElement("ThreadStatus");
xmlWriter.startElement("ThreadHasPoll");
xmlWriter.writeData(thread[11]);
xmlWriter.endElement("ThreadHasPoll");
xmlWriter.startElement("ThreadViewCount");
xmlWriter.writeData(thread[12]);
xmlWriter.endElement("ThreadViewCount");
xmlWriter.startElement("ThreadReplyCount");
xmlWriter.writeData(thread[13]);
xmlWriter.endElement("ThreadReplyCount");
xmlWriter.startElement("ThreadIcon");
xmlWriter.writeData(DisableHtmlTagFilter.filter(thread[14]));
xmlWriter.endElement("ThreadIcon");
xmlWriter.startElement("ThreadDuration");
xmlWriter.writeData(thread[15]);
xmlWriter.endElement("ThreadDuration");
xmlWriter.startElement("ThreadAttachCount");
xmlWriter.writeData(thread[16]);
xmlWriter.endElement("ThreadAttachCount");
exportThreadWatchesForThread(xmlWriter, threadID);
exportFavoriteThreadsForThread(xmlWriter, threadID);
PostXML.exportPostList(xmlWriter, threadID);
xmlWriter.endElement("Thread");
//} catch throw exportexception
}
//todo Igor important: merge exportThreadList and exportThread so I use only one SQL query
//same for category(list), ...
public static void exportThreadList(XMLWriter xmlWriter, int parentForumID)
throws IOException, ExportException, ObjectNotFoundException, DatabaseException {
Collection threadIDs=ExportWebHelper.execSqlQuery(
"SELECT ThreadID"+
" FROM "+ThreadDAO.TABLE_NAME+
" WHERE ForumID="+Integer.toString(parentForumID));
Iterator iter=threadIDs.iterator();
String[] threadID=null;
//try {
xmlWriter.startElement("ThreadList");
try {
while ( (threadID=(String[])iter.next()) !=null) {
if (threadID.length!=1) {
throw new ExportException("Error while retrieving list of threads.");
}
try {
int i=Integer.parseInt(threadID[0]);
exportThread(xmlWriter, i);
} catch (NumberFormatException e) {
throw new ExportException("Error while retrieving list of threads.");
}
}
} catch (NoSuchElementException e) {
//no more database records
}
xmlWriter.endElement("ThreadList");
//} catch throw exportexception
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -