diff src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java @ 39:37840afb7b80

new: full text search
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Fri, 04 Dec 2015 14:28:44 +0100
parents 8b7a204fa929
children 35ed4e650a53
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java	Fri Nov 20 15:37:04 2015 +0100
+++ b/src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java	Fri Dec 04 14:28:44 2015 +0100
@@ -8,8 +8,11 @@
 import org.apache.log4j.Logger;
 import org.hibernate.Session;
 
+import cl.maps.duplex.DuplexKey;
 import de.mpiwg.gazetteer.bo.LGBranch;
 import de.mpiwg.gazetteer.bo.LGFile;
+import de.mpiwg.gazetteer.bo.LGFullTextSearchFile;
+import de.mpiwg.gazetteer.db.DBContents;
 import de.mpiwg.gazetteer.utils.exceptions.NoAuthorizedException;
 import de.mpiwg.gazetteer.utils.exceptions.VersioningException;
 
@@ -255,4 +258,63 @@
 		return branch.getId();
 		
 	}
+
+	
+	public List<LGFullTextSearchFile> getSearchFileList4User(Long userId) {
+	
+		List<LGFullTextSearchFile> list = new ArrayList<LGFullTextSearchFile>();
+		
+		for(LGFullTextSearchFile searchFile : getFullTextSearchFileMap().values()){
+			if(searchFile.getUserId() == userId){
+				list.add(searchFile);
+			}
+		}
+		
+		return list;
+	}
+
+	public LGFullTextSearchFile saveLGFullTextSearchFile(List<DBContents> list, Long userId, String fileName, String searchTerms) throws Exception {	
+		// save as csv and html file in filesystem, and records in db `FullTextSearchFile
+		// List<DBContents> list is the filteredList of searching result
+	
+		Date date = new Date();
+		
+		// check if record with (userId, fileName) already existed, update it; otherwise, create one
+		
+		LGFullTextSearchFile searchFile = DBService.getExistFullTextSearchFile(userId, fileName);
+		if (searchFile == null) {
+			searchFile = new LGFullTextSearchFile();
+			searchFile.setFileName(fileName);
+			searchFile.setUserId(userId);
+		}
+
+		searchFile.setSearchTerms(searchTerms);
+			
+		//Saving into DB
+		//##################################
+		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+		session.getTransaction().begin();
+		
+		DBService.saveDBEntry0(session, searchFile, date);
+		
+		//Saving physical file in the operating system
+		FileManager.saveFullTextSearchFileAsCsv(searchFile, userId, list);	// save csv file to LGMap's datasets folder
+		FileManager.saveFullTextSearchFileAsHtml(searchFile, userId, list);	// save html file to ftsearch-data folder
+
+		session.getTransaction().commit();
+		//##################################
+		
+		return searchFile;
+	}
+
+	public LGFullTextSearchFile getFullTextSearchFile(Long fileId) {
+
+		LGFullTextSearchFile file = getFullTextSearchFileMap().getValuesByOwnKey(fileId);
+		
+		return file;
+	}
+
+	
+
+	
 }