From: Mailing l. f. C. c. m. <jtc...@li...> - 2006-06-24 13:40:21
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/threads In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv1834/source/frost/threads Modified Files: SearchMessagesThread.java Log Message: message search works again Index: SearchMessagesThread.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/threads/SearchMessagesThread.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SearchMessagesThread.java 22 Jun 2006 06:11:51 -0000 1.8 --- SearchMessagesThread.java 24 Jun 2006 13:40:15 -0000 1.9 *************** *** 20,23 **** --- 20,24 ---- import java.io.*; + import java.sql.*; import java.util.*; import java.util.logging.*; *************** *** 27,32 **** import frost.gui.objects.*; import frost.messages.*; ! public class SearchMessagesThread extends Thread { private static Logger logger = Logger.getLogger(SearchMessagesThread.class.getName()); --- 28,36 ---- import frost.gui.objects.*; import frost.messages.*; + import frost.storage.*; ! // TODO: in date config, show earliest and newest msg date! ! ! public class SearchMessagesThread extends Thread implements MessageDatabaseTableCallback { private static Logger logger = Logger.getLogger(SearchMessagesThread.class.getName()); *************** *** 35,44 **** SearchMessagesConfig searchConfig; private boolean stopRequested = false; ! String keypoolDir; ! String archiveDir; ! private XmlFileFilter xmlFileFilter = new XmlFileFilter(); public SearchMessagesThread(SearchMessagesDialog searchDlg, SearchMessagesConfig searchCfg) { --- 39,50 ---- SearchMessagesConfig searchConfig; + private TrustStates trustStates = new TrustStates(); + private boolean stopRequested = false; ! // String keypoolDir; ! // String archiveDir; ! // private XmlFileFilter xmlFileFilter = new XmlFileFilter(); public SearchMessagesThread(SearchMessagesDialog searchDlg, SearchMessagesConfig searchCfg) { *************** *** 46,56 **** searchConfig = searchCfg; ! keypoolDir = MainFrame.keypool; ! archiveDir = Core.frostSettings.getValue("archive.dir"); ! if( archiveDir == null || archiveDir.length() == 0 ) { ! logger.severe("Warning: no ARCHIVE DIR specified!"); ! archiveDir = null; ! } ! archiveDir += ("messages" + File.separator); } --- 52,62 ---- searchConfig = searchCfg; ! // keypoolDir = MainFrame.keypool; ! // archiveDir = Core.frostSettings.getValue("archive.dir"); ! // if( archiveDir == null || archiveDir.length() == 0 ) { ! // logger.severe("Warning: no ARCHIVE DIR specified!"); ! // archiveDir = null; ! // } ! // archiveDir += ("messages" + File.separator); } *************** *** 68,72 **** } - TrustStates trustStates = new TrustStates(); DateRange dateRange = new DateRange(); --- 74,77 ---- *************** *** 80,96 **** // build date and trust state info for this board - updateTrustStatesForBoard(board, trustStates); updateDateRangeForBoard(board, dateRange); ! if( searchConfig.searchInKeypool ) { ! // search in keypool ! // Format: keypool\boards\2006.3.1\2006.3.1-boards-0.xml ! File boardFolder = new File(keypoolDir + board.getBoardFilename()); ! if( boardFolder.isDirectory() == true ) { ! searchBoardFolder(boardFolder, trustStates, dateRange, false); ! } else { ! logger.warning("No board folder in keypool for board "+board.getName()); ! } ! } if( isStopRequested() ) { --- 85,103 ---- // build date and trust state info for this board updateDateRangeForBoard(board, dateRange); + updateTrustStatesForBoard(board, trustStates); + + searchBoard(board, dateRange); ! // if( searchConfig.searchInKeypool ) { ! // // search in keypool ! // // Format: keypool\boards\2006.3.1\2006.3.1-boards-0.xml ! // File boardFolder = new File(keypoolDir + board.getBoardFilename()); ! // if( boardFolder.isDirectory() == true ) { ! // searchBoardFolder(boardFolder, trustStates, dateRange, false); ! // } else { ! // logger.warning("No board folder in keypool for board "+board.getName()); ! // } ! // } if( isStopRequested() ) { *************** *** 98,111 **** } ! if( searchConfig.searchInArchive && archiveDir != null ) { ! // search in archive ! // Format: keypool-archive.j\messages\boards\2005.12.7\2005.12.7-boards-0.xml ! File boardFolder = new File(archiveDir + board.getBoardFilename()); ! if( boardFolder.isDirectory() == true ) { ! searchBoardFolder(boardFolder, trustStates, dateRange, true); ! } else { ! logger.warning("No board folder in archive for board "+board.getName()); ! } ! } } } catch(Throwable t) { --- 105,118 ---- } ! // if( searchConfig.searchInArchive && archiveDir != null ) { ! // // search in archive ! // // Format: keypool-archive.j\messages\boards\2005.12.7\2005.12.7-boards-0.xml ! // File boardFolder = new File(archiveDir + board.getBoardFilename()); ! // if( boardFolder.isDirectory() == true ) { ! // searchBoardFolder(boardFolder, trustStates, dateRange, true); ! // } else { ! // logger.warning("No board folder in archive for board "+board.getName()); ! // } ! // } } } catch(Throwable t) { *************** *** 114,179 **** searchDialog.notifySearchThreadFinished(); } ! // Format: boards\2006.3.1\2006.3.1-boards-0.xml ! private void searchBoardFolder(File boardFolder, TrustStates ts, DateRange dr, boolean archived) { ! ! File[] boardFolderFiles = boardFolder.listFiles(); ! if( boardFolderFiles == null ) { ! logger.severe("Could not get list of files for folder "+boardFolder.getPath()); ! return; ! } ! for(int x=0; x < boardFolderFiles.length; x++) { ! ! if( isStopRequested() ) { ! break; ! } ! ! File boardFolderFile = boardFolderFiles[x]; ! if( boardFolderFile.isDirectory() == false ) { ! continue; ! } ! // its a dir, we expect a name like '2006.3.1' ! Calendar dateDirCal = null; ! try { ! dateDirCal = DateFun.getCalendarFromDate(boardFolderFile.getName()); ! } catch(NumberFormatException ex) { ! logger.warning("Incorrect board date folder name, must be a date: "+boardFolderFile.getPath()); ! continue; ! } ! ! // check if this date dir is in the date range we want to search ! if( dr.startDate != null && dr.endDate != null && ! (dateDirCal.before(dr.startDate) || dateDirCal.after(dr.endDate)) ) ! { ! continue; ! } ! // get list of .xml files in the date dir ! File[] xmlFiles = boardFolderFile.listFiles(xmlFileFilter); ! if( xmlFiles == null ) { ! logger.severe("Could not get list of xml files for folder "+boardFolderFile.getPath()); ! continue; ! } ! for(int y=0; y < xmlFiles.length; y++) { ! ! if( isStopRequested() ) { ! break; ! } ! ! File xmlFile = xmlFiles[y]; ! // search this xml file ! searchXmlFile(xmlFile, ts, archived); ! } ! } } ! private void searchXmlFile(File xmlFile, TrustStates ts, boolean archived) { - FrostSearchResultMessageObject mo = null; try { ! mo = new FrostSearchResultMessageObject(xmlFile, archived); ! } catch(Throwable t) { ! logger.warning("Could not load xml file '"+xmlFile.getPath()+"': "+t.toString()); ! return; } // check private only --- 121,199 ---- searchDialog.notifySearchThreadFinished(); } + + + public boolean messageRetrieved(FrostMessageObject mo) { + // search this xml file + searchMessage(mo); ! return isStopRequested(); } ! // Format: boards\2006.3.1\2006.3.1-boards-0.xml ! private void searchBoard(Board board, DateRange dr) { try { ! MessageDatabaseTable.retrieveMessagesOneByOne( ! board, ! dr.startDate, ! dr.endDate, ! true, ! true, ! false, ! this); ! } catch(SQLException e) { ! logger.log(Level.SEVERE, "Catched exception:", e); } + + // File[] boardFolderFiles = boardFolder.listFiles(); + // if( boardFolderFiles == null ) { + // logger.severe("Could not get list of files for folder "+boardFolder.getPath()); + // return; + // } + // for(int x=0; x < boardFolderFiles.length; x++) { + // + // if( isStopRequested() ) { + // break; + // } + // + // File boardFolderFile = boardFolderFiles[x]; + // if( boardFolderFile.isDirectory() == false ) { + // continue; + // } + // // its a dir, we expect a name like '2006.3.1' + // Calendar dateDirCal = null; + // try { + // dateDirCal = DateFun.getCalendarFromDate(boardFolderFile.getName()); + // } catch(NumberFormatException ex) { + // logger.warning("Incorrect board date folder name, must be a date: "+boardFolderFile.getPath()); + // continue; + // } + // + // // check if this date dir is in the date range we want to search + // if( dr.startDate != null && dr.endDate != null && + // (dateDirCal.before(dr.startDate) || dateDirCal.after(dr.endDate)) ) + // { + // continue; + // } + // // get list of .xml files in the date dir + // File[] xmlFiles = boardFolderFile.listFiles(xmlFileFilter); + // if( xmlFiles == null ) { + // logger.severe("Could not get list of xml files for folder "+boardFolderFile.getPath()); + // continue; + // } + // for(int y=0; y < xmlFiles.length; y++) { + // + // if( isStopRequested() ) { + // break; + // } + // + // File xmlFile = xmlFiles[y]; + // // search this xml file + // searchXmlFile(xmlFile, ts, archived); + // } + // } + } + + private void searchMessage(FrostMessageObject mo) { // check private only *************** *** 185,197 **** // check trust states ! if( matchesTrustStates(mo, ts) == false ) { return; } // check attachments ! if( searchConfig.msgMustContainBoards && mo.getAttachmentsOfType(Attachment.BOARD).size() <= 0 ) { return; } ! if( searchConfig.msgMustContainFiles && mo.getAttachmentsOfType(Attachment.FILE).size() <= 0 ) { return; } --- 205,217 ---- // check trust states ! if( matchesTrustStates(mo, trustStates) == false ) { return; } // check attachments ! if( searchConfig.msgMustContainBoards && !mo.isHasBoardAttachments() ) { return; } ! if( searchConfig.msgMustContainFiles && !mo.isHasFileAttachments() ) { return; } *************** *** 222,226 **** // match, add to result table ! searchDialog.addFoundMessage(mo); } --- 242,246 ---- // match, add to result table ! searchDialog.addFoundMessage(new FrostSearchResultMessageObject(mo)); } *************** *** 292,319 **** private void updateDateRangeForBoard(Board b, DateRange dr) { if( searchConfig.searchDates == SearchMessagesConfig.DATE_DISPLAYED ) { ! dr.startDate = new GregorianCalendar(TimeZone.getTimeZone("GMT")); ! dr.startDate.add(Calendar.DATE, -b.getMaxMessageDisplay()); ! dr.endDate = new GregorianCalendar(TimeZone.getTimeZone("GMT")); // today } else if( searchConfig.searchDates == SearchMessagesConfig.DATE_DAYS_BACKWARD ) { ! dr.startDate = new GregorianCalendar(TimeZone.getTimeZone("GMT")); ! dr.startDate.add(Calendar.DATE, -searchConfig.daysBackward); ! dr.endDate = new GregorianCalendar(TimeZone.getTimeZone("GMT")); // today } else if( searchConfig.searchDates == SearchMessagesConfig.DATE_BETWEEN_DATES ) { ! dr.startDate = searchConfig.startDate; ! dr.endDate = searchConfig.endDate; } else { // all dates ! dr.startDate = null; ! dr.endDate = null; ! } ! if( dr.startDate != null ) { ! dr.startDate.set(Calendar.HOUR_OF_DAY, 00); ! dr.startDate.set(Calendar.MINUTE, 00); ! dr.startDate.set(Calendar.SECOND, 00); ! } ! if( dr.endDate != null ) { ! dr.endDate.set(Calendar.HOUR_OF_DAY, 23); ! dr.endDate.set(Calendar.MINUTE, 59); ! dr.endDate.set(Calendar.SECOND, 59); } } --- 312,327 ---- private void updateDateRangeForBoard(Board b, DateRange dr) { if( searchConfig.searchDates == SearchMessagesConfig.DATE_DISPLAYED ) { ! dr.startDate = DateFun.getSqlDateGMTDaysAgo(b.getMaxMessageDisplay()); ! dr.endDate = DateFun.getCurrentSqlDateGMT(); // today } else if( searchConfig.searchDates == SearchMessagesConfig.DATE_DAYS_BACKWARD ) { ! dr.startDate = DateFun.getSqlDateGMTDaysAgo(searchConfig.daysBackward); ! dr.endDate = DateFun.getCurrentSqlDateGMT(); // today } else if( searchConfig.searchDates == SearchMessagesConfig.DATE_BETWEEN_DATES ) { ! dr.startDate = DateFun.getSqlDateOfCalendar(searchConfig.startDate); ! dr.endDate = DateFun.getSqlDateOfCalendar(searchConfig.endDate); } else { // all dates ! dr.startDate = new java.sql.Date(1); ! dr.endDate = DateFun.getCurrentSqlDateGMT(); // today } } *************** *** 327,332 **** private class DateRange { ! GregorianCalendar startDate; ! GregorianCalendar endDate; } --- 335,340 ---- private class DateRange { ! java.sql.Date startDate; ! java.sql.Date endDate; } *************** *** 341,351 **** } ! private class XmlFileFilter implements FileFilter { ! public boolean accept(File f) { ! if( f.isFile() && f.getName().endsWith(".xml") ) { ! return true; ! } ! return false; ! } ! } } --- 349,359 ---- } ! // private class XmlFileFilter implements FileFilter { ! // public boolean accept(File f) { ! // if( f.isFile() && f.getName().endsWith(".xml") ) { ! // return true; ! // } ! // return false; ! // } ! // } } |