beagle r4451 - in trunk/beagle: Filters Util beagled beagled/FileSystemQueryable beagled/IndexingServiceQueryable beagled/NautilusMetadataQueryable beagled/TomboyQueryable tools



Author: kkubasik
Date: Sun Feb  3 05:21:25 2008
New Revision: 4451
URL: http://svn.gnome.org/viewvc/beagle?rev=4451&view=rev

Log:
Move keyword maps into a separate XML file, still needs some testing to see how new installs go. Known issues: 1) File placement 2) inital data is currently a big string literal in Conf.cs, should be moved to a separate file

Modified:
   trunk/beagle/Filters/FilterArchive.cs
   trunk/beagle/Filters/FilterAudio.cs
   trunk/beagle/Filters/FilterDeb.cs
   trunk/beagle/Filters/FilterEmpathyLog.cs
   trunk/beagle/Filters/FilterJpeg.cs
   trunk/beagle/Filters/FilterKAddressBook.cs
   trunk/beagle/Filters/FilterKopeteLog.cs
   trunk/beagle/Filters/FilterMail.cs
   trunk/beagle/Filters/FilterPidginLog.cs
   trunk/beagle/Util/Config.cs
   trunk/beagle/beagled/FileSystemQueryable/FileSystemQueryable.cs
   trunk/beagle/beagled/IndexingServiceQueryable/IndexingServiceQueryable.cs
   trunk/beagle/beagled/Makefile.am
   trunk/beagle/beagled/NautilusMetadataQueryable/NautilusMetadataQueryable.cs
   trunk/beagle/beagled/PropertyKeywordFu.cs
   trunk/beagle/beagled/QueryDriver.cs
   trunk/beagle/beagled/StaticQueryable.cs
   trunk/beagle/beagled/TomboyQueryable/TomboyQueryable.cs
   trunk/beagle/tools/Makefile.am
   trunk/beagle/tools/Query.cs

Modified: trunk/beagle/Filters/FilterArchive.cs
==============================================================================
--- trunk/beagle/Filters/FilterArchive.cs	(original)
+++ trunk/beagle/Filters/FilterArchive.cs	Sun Feb  3 05:21:25 2008
@@ -40,7 +40,7 @@
 
 namespace Beagle.Filters {
 
-	[PropertyKeywordMapping (Keyword="inarchive", PropertyName="fixme:inside_archive", IsKeyword=true, Description="Use 'inarchive:true' for files inside an archive.")]
+	
 	public class FilterArchive : Beagle.Daemon.Filter {
 
 		internal delegate ArchiveEntry GetNextEntry ();

Modified: trunk/beagle/Filters/FilterAudio.cs
==============================================================================
--- trunk/beagle/Filters/FilterAudio.cs	(original)
+++ trunk/beagle/Filters/FilterAudio.cs	Sun Feb  3 05:21:25 2008
@@ -32,9 +32,9 @@
 
 namespace Beagle.Filters {
 
-	[PropertyKeywordMapping (Keyword="album", PropertyName="fixme:album", IsKeyword=false, Description="Album name of the music")]
-	[PropertyKeywordMapping (Keyword="artist", PropertyName="fixme:artist", IsKeyword=false, Description="Artist of the music")]
-	[PropertyKeywordMapping (Keyword="genre", PropertyName="fixme:genre", IsKeyword=true, Description="Genre of the music")]
+	
+	
+	
 	public class FilterAudio : Beagle.Daemon.Filter {
 	
 		public FilterAudio ()

Modified: trunk/beagle/Filters/FilterDeb.cs
==============================================================================
--- trunk/beagle/Filters/FilterDeb.cs	(original)
+++ trunk/beagle/Filters/FilterDeb.cs	Sun Feb  3 05:21:25 2008
@@ -31,7 +31,7 @@
 using Beagle.Util;
 
 namespace Beagle.Filters {
-	[PropertyKeywordMapping (Keyword="pkggroup", PropertyName="pkg:group", IsKeyword=false, Description="Group to which the package belongs e.g. System/Configuration/Packaging")]
+
 	public class FilterDeb : Beagle.Filters.FilterPackage {
 	
 		public FilterDeb ()

Modified: trunk/beagle/Filters/FilterEmpathyLog.cs
==============================================================================
--- trunk/beagle/Filters/FilterEmpathyLog.cs	(original)
+++ trunk/beagle/Filters/FilterEmpathyLog.cs	Sun Feb  3 05:21:25 2008
@@ -35,7 +35,7 @@
 
 namespace Beagle.Filters {
 	
-	[PropertyKeywordMapping (Keyword="speakingto", PropertyName="fixme:speakingto", IsKeyword=true, Description="Person engaged in conversation")]
+
 	public class FilterEmpathyLog : Beagle.Daemon.Filter {
 
 		public FilterEmpathyLog ()

Modified: trunk/beagle/Filters/FilterJpeg.cs
==============================================================================
--- trunk/beagle/Filters/FilterJpeg.cs	(original)
+++ trunk/beagle/Filters/FilterJpeg.cs	Sun Feb  3 05:21:25 2008
@@ -38,14 +38,7 @@
 using SemWeb;
 
 namespace Beagle.Filters {
-	
-	[PropertyKeywordMapping (Keyword="imagemodel", PropertyName="exif:Model", IsKeyword=false, Description="Camera model as specified in exif or IPTC tags")]
-	[PropertyKeywordMapping (Keyword="imagetag", PropertyName="image:tag", IsKeyword=false, Description="FSpot, Digikam image tags")]
-	[PropertyKeywordMapping (Keyword="imagecomment", PropertyName="fspot:Description", IsKeyword=false, Description="F-Spot User comments")]
-	[PropertyKeywordMapping (Keyword="imagecomment", PropertyName="digikam:caption", IsKeyword=false, Description="Digikam User comments")]
-	[PropertyKeywordMapping (Keyword="imagecomment", PropertyName="jfif:Comment", IsKeyword=false, Description="JFIF comments")]
-	[PropertyKeywordMapping (Keyword="imagecomment", PropertyName="exif:UserComment", IsKeyword=false, Description="Exif comments")]
-	[PropertyKeywordMapping (Keyword="imagecomment", PropertyName="iptc:caption", IsKeyword=false, Description="IPTC caption")]
+
 	public class FilterJpeg : FilterImage {
 
 		public FilterJpeg ()

Modified: trunk/beagle/Filters/FilterKAddressBook.cs
==============================================================================
--- trunk/beagle/Filters/FilterKAddressBook.cs	(original)
+++ trunk/beagle/Filters/FilterKAddressBook.cs	Sun Feb  3 05:21:25 2008
@@ -35,7 +35,7 @@
 
 namespace Beagle.Filters {
 
-	[PropertyKeywordMapping (Keyword="email", PropertyName="vCard:EMAIL", IsKeyword=false, Description="Email in KAddressbook")]
+	
 	public class FilterKAddressBook : Beagle.Filters.FilterKCal {
 
 		public FilterKAddressBook ()

Modified: trunk/beagle/Filters/FilterKopeteLog.cs
==============================================================================
--- trunk/beagle/Filters/FilterKopeteLog.cs	(original)
+++ trunk/beagle/Filters/FilterKopeteLog.cs	Sun Feb  3 05:21:25 2008
@@ -33,7 +33,7 @@
 
 namespace Beagle.Filters {
 	
-	[PropertyKeywordMapping (Keyword="speakingto", PropertyName="fixme:speakingto", IsKeyword=true, Description="Person engaged in conversation")]
+	
 	public class FilterKopeteLog : Beagle.Daemon.Filter {
 
 		public FilterKopeteLog ()

Modified: trunk/beagle/Filters/FilterMail.cs
==============================================================================
--- trunk/beagle/Filters/FilterMail.cs	(original)
+++ trunk/beagle/Filters/FilterMail.cs	Sun Feb  3 05:21:25 2008
@@ -38,17 +38,7 @@
 
 namespace Beagle.Filters {
 
-	[PropertyKeywordMapping (Keyword="mailfrom",     PropertyName="fixme:from_name",    IsKeyword=false, Description="Name of email sender")]
-	[PropertyKeywordMapping (Keyword="mailfrom",     PropertyName="parent:fixme:from_name",    IsKeyword=false)]
-	[PropertyKeywordMapping (Keyword="mailfromaddr", PropertyName="fixme:from_address", IsKeyword=false, Description="Email address of sender")]
-	[PropertyKeywordMapping (Keyword="mailfromaddr", PropertyName="parent:fixme:from_address", IsKeyword=false)]
-	[PropertyKeywordMapping (Keyword="mailto",       PropertyName="fixme:to_name",      IsKeyword=false, Description="Name of receipient")]
-	[PropertyKeywordMapping (Keyword="mailto",       PropertyName="parent:fixme:to_name",      IsKeyword=false)]
-	[PropertyKeywordMapping (Keyword="mailtoaddr",   PropertyName="fixme:to_address",   IsKeyword=false, Description="Email address of receipient")]
-	[PropertyKeywordMapping (Keyword="mailtoaddr",   PropertyName="parent:fixme:to_address",   IsKeyword=false)]
-	[PropertyKeywordMapping (Keyword="mailinglist",  PropertyName="fixme:mlist",        IsKeyword=false, Description="Mailing list id e.g. dashboard-hackers.gnome.org")]
-	[PropertyKeywordMapping (Keyword="mailinglist",  PropertyName="parent:fixme:mlist",        IsKeyword=false)]
-	[PropertyKeywordMapping (Keyword="inattachment",  PropertyName="parent:fixme:hasAttachments", IsKeyword=true, Description="Use 'inattachment:true' for email attachments.")]
+	
 	public class FilterMail : Beagle.Daemon.Filter, IDisposable {
 
 		private static bool gmime_initialized = false;

Modified: trunk/beagle/Filters/FilterPidginLog.cs
==============================================================================
--- trunk/beagle/Filters/FilterPidginLog.cs	(original)
+++ trunk/beagle/Filters/FilterPidginLog.cs	Sun Feb  3 05:21:25 2008
@@ -32,7 +32,7 @@
 
 namespace Beagle.Filters {
 	
-	[PropertyKeywordMapping (Keyword="speakingto", PropertyName="fixme:speakingto", IsKeyword=true, Description="Person engaged in conversation")]
+
 	public class FilterPidginLog : Beagle.Daemon.Filter {
 
 		public FilterPidginLog ()

Modified: trunk/beagle/Util/Config.cs
==============================================================================
--- trunk/beagle/Util/Config.cs	(original)
+++ trunk/beagle/Util/Config.cs	Sun Feb  3 05:21:25 2008
@@ -81,7 +81,228 @@
 		public static class Names {
 
 			internal const int NumConfig = 4;
-
+			public const string DefaultMappings = @"ï<DocumentElement>
+  <KeywordMappings>
+    <Keyword>inarchive</Keyword>
+    <PropertyName>fixme:inside_archive</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Use 'inarchive:true' for files inside an archive.</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>genre</Keyword>
+    <PropertyName>fixme:genre</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Genre of the music</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>artist</Keyword>
+    <PropertyName>fixme:artist</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Artist of the music</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>album</Keyword>
+    <PropertyName>fixme:album</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Album name of the music</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>pkggroup</Keyword>
+    <PropertyName>pkg:group</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Group to which the package belongs e.g. System/Configuration/Packaging</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>speakingto</Keyword>
+    <PropertyName>fixme:speakingto</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Person engaged in conversation</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagecomment</Keyword>
+    <PropertyName>iptc:caption</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>IPTC caption</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagecomment</Keyword>
+    <PropertyName>exif:UserComment</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Exif comments</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagecomment</Keyword>
+    <PropertyName>jfif:Comment</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>JFIF comments</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagecomment</Keyword>
+    <PropertyName>digikam:caption</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Digikam User comments</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagecomment</Keyword>
+    <PropertyName>fspot:Description</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>F-Spot User comments</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagetag</Keyword>
+    <PropertyName>image:tag</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>FSpot, Digikam image tags</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>imagemodel</Keyword>
+    <PropertyName>exif:Model</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Camera model as specified in exif or IPTC tags</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>email</Keyword>
+    <PropertyName>vCard:EMAIL</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Email in KAddressbook</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>speakingto</Keyword>
+    <PropertyName>fixme:speakingto</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Person engaged in conversation</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>inattachment</Keyword>
+    <PropertyName>parent:fixme:hasAttachments</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Use 'inattachment:true' for email attachments.</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailinglist</Keyword>
+    <PropertyName>parent:fixme:mlist</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailinglist</Keyword>
+    <PropertyName>fixme:mlist</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Mailing list id e.g. dashboard-hackers.gnome.org</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailtoaddr</Keyword>
+    <PropertyName>parent:fixme:to_address</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailtoaddr</Keyword>
+    <PropertyName>fixme:to_address</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Email address of receipient</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailto</Keyword>
+    <PropertyName>parent:fixme:to_name</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailto</Keyword>
+    <PropertyName>fixme:to_name</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Name of receipient</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailfromaddr</Keyword>
+    <PropertyName>parent:fixme:from_address</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailfromaddr</Keyword>
+    <PropertyName>fixme:from_address</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Email address of sender</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailfrom</Keyword>
+    <PropertyName>parent:fixme:from_name</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>mailfrom</Keyword>
+    <PropertyName>fixme:from_name</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Name of email sender</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>speakingto</Keyword>
+    <PropertyName>fixme:speakingto</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Person engaged in conversation</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>ext</Keyword>
+    <PropertyName>beagle:FilenameExtension</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>File extension, e.g. ext:jpeg. Use ext: to search in files with no extension.</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>host</Keyword>
+    <PropertyName>fixme:host</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>The host of this entitiy.</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>emblem</Keyword>
+    <PropertyName>nautilus:emblem</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>Use emblem to identify items tagged with a specific emblem in nautilus.</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>ext</Keyword>
+    <PropertyName>beagle:FilenameExtension</PropertyName>
+    <IsKeyword>true</IsKeyword>
+    <Description>File extension, e.g. ext:jpeg. Use ext: to search in files with no extension.</Description>
+    <Type>2</Type>
+  </KeywordMappings>
+  <KeywordMappings>
+    <Keyword>notetag</Keyword>
+    <PropertyName>note:tag</PropertyName>
+    <IsKeyword>false</IsKeyword>
+    <Description>Tag associated with a tomboy note.</Description>
+    <Type>1</Type>
+  </KeywordMappings>
+</DocumentElement>
+";
 			// DO NOT change these 4 names - the names should be same as Config.Name and file names
 			public const string FilesQueryableConfig = "FilesQueryable";
 			public const string BeagleSearchConfig = "BeagleSearch";
@@ -155,9 +376,10 @@
 			configs_dir = Path.Combine (PathFinder.StorageDir, "config");
 			if (!Directory.Exists (configs_dir)) {
 				Directory.CreateDirectory (configs_dir);
-				return;
 			}
-
+			if (!File.Exists (Path.Combine (PathFinder.StorageDir,"keywordmappings.xml"))){
+				File.WriteAllText (Path.Combine (PathFinder.StorageDir,"keywordmappings.xml"),Conf.Names.DefaultMappings);
+			}
 			// Else check the directory for old config files
 			CheckOldConfig ();
 		}

Modified: trunk/beagle/beagled/FileSystemQueryable/FileSystemQueryable.cs
==============================================================================
--- trunk/beagle/beagled/FileSystemQueryable/FileSystemQueryable.cs	(original)
+++ trunk/beagle/beagled/FileSystemQueryable/FileSystemQueryable.cs	Sun Feb  3 05:21:25 2008
@@ -38,7 +38,7 @@
 namespace Beagle.Daemon.FileSystemQueryable {
 
 	[QueryableFlavor (Name="Files", Domain=QueryDomain.Local | QueryDomain.Neighborhood, RequireInotify=false)]
-	[PropertyKeywordMapping (Keyword="ext", PropertyName="beagle:FilenameExtension", IsKeyword=true, Description="File extension, e.g. ext:jpeg. Use ext: to search in files with no extension.")]
+
 	public class FileSystemQueryable : LuceneQueryable {
 
 		static internal bool Debug = false;

Modified: trunk/beagle/beagled/IndexingServiceQueryable/IndexingServiceQueryable.cs
==============================================================================
--- trunk/beagle/beagled/IndexingServiceQueryable/IndexingServiceQueryable.cs	(original)
+++ trunk/beagle/beagled/IndexingServiceQueryable/IndexingServiceQueryable.cs	Sun Feb  3 05:21:25 2008
@@ -56,7 +56,7 @@
 namespace Beagle.Daemon.IndexingServiceQueryable {
 
 	[QueryableFlavor (Name="IndexingService", Domain=QueryDomain.Local, RequireInotify=false)]
-	[PropertyKeywordMapping (Keyword="host", PropertyName="fixme:host", IsKeyword=false, Description="The host of this entitiy.")]
+
 	public class IndexingServiceQueryable : LuceneQueryable {
 
 		public IndexingServiceQueryable () : base ("IndexingServiceIndex")

Modified: trunk/beagle/beagled/Makefile.am
==============================================================================
--- trunk/beagle/beagled/Makefile.am	(original)
+++ trunk/beagle/beagled/Makefile.am	Sun Feb  3 05:21:25 2008
@@ -500,7 +500,8 @@
 	$(SHARPZIPLIB_LIBS)					\
 	$(NDESK_DBUS_GLIB_LIBS)					\
 	-r:Mono.Data.Sqlite					\
-	-r:Mono.Posix
+	-r:Mono.Posix						\
+	-r:System.Data
 
 if ENABLE_AVAHI
 DAEMON_DLL_CSFLAGS += -define:ENABLE_AVAHI

Modified: trunk/beagle/beagled/NautilusMetadataQueryable/NautilusMetadataQueryable.cs
==============================================================================
--- trunk/beagle/beagled/NautilusMetadataQueryable/NautilusMetadataQueryable.cs	(original)
+++ trunk/beagle/beagled/NautilusMetadataQueryable/NautilusMetadataQueryable.cs	Sun Feb  3 05:21:25 2008
@@ -36,7 +36,7 @@
 
 namespace Beagle.Daemon.NautilusMetadataQueryable {
 
-	[PropertyKeywordMapping (Keyword="emblem",  PropertyName="nautilus:emblem", IsKeyword=true, Description="Use emblem to identify items tagged with a specific emblem in nautilus.")]
+
 	[QueryableFlavor (Name="NautilusMetadata", Domain=QueryDomain.Local, RequireInotify=false,
 			  DependsOn="Files")]
 	public class NautilusMetadataQueryable : ExternalMetadataQueryable, IIndexableGenerator  {

Modified: trunk/beagle/beagled/PropertyKeywordFu.cs
==============================================================================
--- trunk/beagle/beagled/PropertyKeywordFu.cs	(original)
+++ trunk/beagle/beagled/PropertyKeywordFu.cs	Sun Feb  3 05:21:25 2008
@@ -31,12 +31,14 @@
 
 using Beagle;
 using Beagle.Util;
-
-namespace Beagle.Daemon {
+using System.Xml.Serialization;
 	
+namespace Beagle.Daemon {
+
 	public class PropertyDetail {
 		private PropertyType type;
 		private string property_name;
+		private string alias;
 		// a short description, so that frontends can get the description from here
 		// and they dont need to guess the meaning of a query keyword (being too nice ?!)
 		private string short_desc;
@@ -48,7 +50,7 @@
 		public string PropertyName { 
 			get { return property_name;} 
 		}
-		
+
 		public string Description { 
 			get { return short_desc; } 
 		}
@@ -64,11 +66,18 @@
 		    this.property_name = property_name;
 		    this.short_desc = desc;
 		}
+		
+		public PropertyDetail (PropertyType type, string property_name, string desc, string alias) {
+		    this.type = type;
+		    this.property_name = property_name;
+		    this.short_desc = desc;
+			this.alias = alias;
+		}
 	}
 	
 	public class PropertyKeywordFu {
 		// mapping
-		private static Hashtable property_table;
+		public static Hashtable property_table;
 
 		// static class
 		private PropertyKeywordFu () { }
@@ -138,14 +147,14 @@
 					((ArrayList)o).Add (new PropertyDetail ( 
 						mapping.IsKeyword ? PropertyType.Keyword : PropertyType.Text,
 						mapping.PropertyName, 
-						mapping.Description));
+						mapping.Description,mapping.Keyword));
 				} else if (o is PropertyDetail) {
 					ArrayList list = new ArrayList (2);
 					list.Add (o);
 					list.Add (new PropertyDetail ( 
 						mapping.IsKeyword ? PropertyType.Keyword : PropertyType.Text,
 						mapping.PropertyName, 
-						mapping.Description));
+						mapping.Description,mapping.Keyword));
 					property_table [mapping.Keyword] = list;
 				}
 				return;

Modified: trunk/beagle/beagled/QueryDriver.cs
==============================================================================
--- trunk/beagle/beagled/QueryDriver.cs	(original)
+++ trunk/beagle/beagled/QueryDriver.cs	Sun Feb  3 05:21:25 2008
@@ -32,7 +32,8 @@
 using System.Text;
 using System.Threading;
 using Beagle.Util;
-
+using System.Xml.Serialization;
+using System.Data;
 namespace Beagle.Daemon {
 	
 	public class QueryDriver {
@@ -204,24 +205,46 @@
 
 		public static void ReadKeywordMappings ()
 		{
+			
 			Logger.Log.Debug ("Reading mapping from filters");
-			ArrayList assemblies = ReflectionFu.ScanEnvironmentForAssemblies ("BEAGLE_FILTER_PATH", PathFinder.FilterDir);
-
-			foreach (Assembly assembly in assemblies) {
-				foreach (Type type in ReflectionFu.GetTypesFromAssemblyAttribute (assembly, typeof (FilterTypesAttribute))) {
-					object[] attributes = type.GetCustomAttributes (false);
-					foreach (object attribute in attributes) {
-						
-						PropertyKeywordMapping mapping = attribute as PropertyKeywordMapping;
-						if (mapping == null)
-							continue;
-						//Logger.Log.Debug (mapping.Keyword + " => " 
-						//		+ mapping.PropertyName
-						//		+ " is-keyword=" + mapping.IsKeyword + " (" 
-						//		+ mapping.Description + ") "
-						//		+ "(" + type.FullName + ")");
-						PropertyKeywordFu.RegisterMapping (mapping);
+			Stream s =File.Open (Path.Combine (PathFinder.StorageDir,"keywordmappings.xml") , FileMode.Open);
+			DataTable dt = new DataTable("KeywordMappings");
+			dt.Columns.Add ( new DataColumn ("Keyword", Type.GetType("System.String")));
+			dt.Columns.Add ( new DataColumn ("PropertyName", Type.GetType("System.String")));
+			dt.Columns.Add ( new DataColumn ("IsKeyword", Type.GetType("System.Boolean")));
+			dt.Columns.Add ( new DataColumn ("Description", Type.GetType("System.String")));
+			dt.Columns.Add ( new DataColumn ("Type", typeof(Beagle.PropertyType)));
+			dt.AcceptChanges ();
+			dt.ReadXml (s);
+			s.Flush();
+			s.Close();
+			foreach ( DataRow r in dt.Rows){
+				if (PropertyKeywordFu.property_table.Contains (r.ItemArray[0])) {
+					object o = PropertyKeywordFu.property_table [r.ItemArray[0]];
+					if (o is ArrayList) {
+						((ArrayList)o).Add (  new PropertyDetail ( 
+							(Boolean.Parse( r.ItemArray[2].ToString())) ? PropertyType.Keyword : PropertyType.Text,
+							r.ItemArray[1].ToString(), 
+							r.ItemArray[3].ToString())); 
+					} else if (o is PropertyDetail) {
+						ArrayList list = new ArrayList (2);
+						list.Add (o);
+						list.Add (  new PropertyDetail ( 
+							(Boolean.Parse( r.ItemArray[2].ToString())) ? PropertyType.Keyword : PropertyType.Text,
+							r.ItemArray[1].ToString(), 
+							r.ItemArray[3].ToString())); 
+						PropertyKeywordFu.property_table [r.ItemArray[0]] = list;
 					}
+					
+				} else {
+					
+				
+					PropertyKeywordFu.property_table.Add (
+					                                      r.ItemArray[0], (
+						   new PropertyDetail ( 
+							(Boolean.Parse( r.ItemArray[2].ToString())) ? PropertyType.Keyword : PropertyType.Text,
+							r.ItemArray[1].ToString(), 
+							r.ItemArray[3].ToString()))); 
 				}
 			}
 		}

Modified: trunk/beagle/beagled/StaticQueryable.cs
==============================================================================
--- trunk/beagle/beagled/StaticQueryable.cs	(original)
+++ trunk/beagle/beagled/StaticQueryable.cs	Sun Feb  3 05:21:25 2008
@@ -36,7 +36,7 @@
 
 namespace Beagle.Daemon {
 
-	[PropertyKeywordMapping (Keyword="ext", PropertyName="beagle:FilenameExtension", IsKeyword=true, Description="File extension, e.g. ext:jpeg. Use ext: to search in files with no extension.")]
+	
 
 	public class StaticQueryable : LuceneQueryable 	{
 		

Modified: trunk/beagle/beagled/TomboyQueryable/TomboyQueryable.cs
==============================================================================
--- trunk/beagle/beagled/TomboyQueryable/TomboyQueryable.cs	(original)
+++ trunk/beagle/beagled/TomboyQueryable/TomboyQueryable.cs	Sun Feb  3 05:21:25 2008
@@ -36,7 +36,7 @@
 namespace Beagle.Daemon.TomboyQueryable {
 
 	[QueryableFlavor (Name="Tomboy", Domain=QueryDomain.Local, RequireInotify=false)]
-	[PropertyKeywordMapping (Keyword="notetag", PropertyName="note:tag", IsKeyword=false, Description="Tag associated with a tomboy note.")]
+
 	public class TomboyQueryable : LuceneFileQueryable, IIndexableGenerator  {
 
 		string tomboy_dir;

Modified: trunk/beagle/tools/Makefile.am
==============================================================================
--- trunk/beagle/tools/Makefile.am	(original)
+++ trunk/beagle/tools/Makefile.am	Sun Feb  3 05:21:25 2008
@@ -6,11 +6,12 @@
 	../Util/Util.dll		\
 	../BeagleClient/Beagle.dll	\
 	../beagled/BeagleDaemonPlugins.dll \
-	../beagled/BeagleDaemonLib.dll
+	../beagled/BeagleDaemonLib.dll	
 
 ASSEMBLIES =				\
 	$(BEAGLED_LIBS)			\
 	-r:Mono.Posix			\
+	-r:System.Data			\
 	$(LOCAL_ASSEMBLIES:%=-r:%)
 
 WRAPPER_IN = wrapper.in

Modified: trunk/beagle/tools/Query.cs
==============================================================================
--- trunk/beagle/tools/Query.cs	(original)
+++ trunk/beagle/tools/Query.cs	Sun Feb  3 05:21:25 2008
@@ -33,6 +33,7 @@
 using System.Text;
 using System.Text.RegularExpressions;
 using System.Runtime.InteropServices;
+using System.Data;
 
 using GLib;
 
@@ -215,23 +216,7 @@
 				Environment.Exit (1);
 			}
 		}
-
-		foreach (Assembly assembly in assemblies) {
-			foreach (Type type in ReflectionFu.GetTypesFromAssemblyAttribute (assembly, typeof (IQueryableTypesAttribute))) {
-				object[] attributes = type.GetCustomAttributes (false);
-				foreach (object attribute in attributes) {
-					PropertyKeywordMapping mapping = attribute as PropertyKeywordMapping;
-					if (mapping == null)
-						continue;
-					//Logger.Log.Debug (mapping.Keyword + " => " 
-					//		+ mapping.PropertyName + 
-					//		+ " is-keyword=" + mapping.IsKeyword + " (" 
-					//		+ mapping.Description + ") "
-					//		+ "(" + type.FullName + ")");
-					PropertyKeywordFu.RegisterMapping (mapping);
-				}
-			}
-		}
+		
 	}
 
 	private static void OnClosed ()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]