beagle r4451 - in trunk/beagle: Filters Util beagled beagled/FileSystemQueryable beagled/IndexingServiceQueryable beagled/NautilusMetadataQueryable beagled/TomboyQueryable tools
- From: kkubasik svn gnome org
- To: svn-commits-list gnome org
- Subject: beagle r4451 - in trunk/beagle: Filters Util beagled beagled/FileSystemQueryable beagled/IndexingServiceQueryable beagled/NautilusMetadataQueryable beagled/TomboyQueryable tools
- Date: Sun, 3 Feb 2008 05:21:26 +0000 (GMT)
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]