Changeset 33970 for lang/csharp

Show
Ignore:
Timestamp:
06/14/09 23:24:17 (6 years ago)
Author:
hoge1e3
Message:

検索履歴あたりで難航。途中で検索止めた場合の対応とか

Location:
lang/csharp/soyText/soyText
Files:
4 added
8 removed
14 modified

Legend:

Unmodified
Added
Removed
  • lang/csharp/soyText/soyText/Converter.cs

    r33887 r33970  
    1919                Application.Exit(); 
    2020            } 
    21             foreach (var d in w.documentSet.search("")) { 
     21            foreach (var d in w.documentSet.search("",false)) { 
    2222                var id = d.parsed["id"] ?? "null"; 
    2323                id = Regex.Replace(id, @"[^0-9A-Za-z_\-@]", ""); 
  • lang/csharp/soyText/soyText/DocumentList.cs

    r33649 r33970  
    88    public class DocumentList: SortedList<long,Document> 
    99    { 
    10         public void add(Document d) 
     10        public bool add(Document d) 
    1111        { 
    12             Add(d.uniqueLastUpdate, d); 
     12            var key=-d.uniqueLastUpdate; 
     13            if (ContainsKey(key)) return false; 
     14            Add(key, d); 
     15            return true; 
    1316        } 
    1417    } 
  • lang/csharp/soyText/soyText/DocumentSet.cs

    r33887 r33970  
    1010{ 
    1111    public enum FoundHandlerAction { End, Accept, Ignore }; 
    12     public delegate FoundHandlerAction FoundHandler(Document d); 
     12    //public delegate FoundHandlerAction FoundHandler(Document d); 
    1313    public class DocumentSet 
    1414    { 
     
    1616        public int maxHandle = -1; 
    1717        internal Workspace workspace; 
    18         DocumentList cache=null; 
     18        DocumentListMap cache=null; 
    1919        public String stateDir(DocumentState state) 
    2020        { 
     
    5050        private Document addToCache(Document d) 
    5151        { 
    52             if (cache == null) cache = new DocumentList(); 
     52            if (cache == null) cache = new DocumentListMap(); 
    5353            lock (cache) 
    5454            { 
    55                 cache.Add(-d.uniqueLastUpdate, d); 
     55                cache.add(d); 
    5656            } 
    5757            return d; 
     
    6464        public DocumentList getRecents() 
    6565        { 
    66             if (cache != null) return cache; 
     66            if (cache != null) return cache.getRecents(); 
    6767            Debug.print("文書一覧取得中..."); 
    6868            //var res = new DocumentList(); 
     
    7272            searchMax(DocumentState.indexed,true);*/ 
    7373            searchMax(DocumentState.active, true); 
    74             if (cache == null) cache = new DocumentList(); 
     74            if (cache == null) cache = new DocumentListMap(); 
    7575            Debug.print("文書一覧並べ替え中..."); 
    7676            //res.Sort(byRecency); 
    7777            Debug.print("END: 文書一覧並べ替え中..."); 
    78              
    79             return cache; 
     78 
     79            return cache.getRecents(); 
    8080        } 
    8181        Dictionary<DocumentState, int> docCount; 
     
    9898            } 
    9999        } 
     100        public Document byId(string id) 
     101        { 
     102            getRecents(); 
     103            return cache.byId(id); 
     104        } 
    100105        public void clear() 
    101106        { 
     
    114119            return lastPublishedID=res; 
    115120        } 
    116         public DocumentSercher createDocumentSearcher(String kw, FoundHandler f) 
     121        public DocumentSearcher createDocumentSearcher(SearchCondition cond) 
    117122        { 
    118             var s = new DocumentSercher(); 
    119             s.searchCondition = SearchCondition.fromExpression(kw); 
    120             s.foundHandler = f; 
     123            var s = new DocumentSearcher(); 
     124            s.searchCondition = cond; 
    121125            s.documentSet = this; 
    122126            return s; 
    123127        } 
    124         public IEnumerable<Document> search(string kw) 
     128        
     129        public IDocumentSearcher createDocumentSearcher(String kw, bool logging) 
    125130        { 
    126             var s=createDocumentSearcher(kw,null); 
     131            if (logging) 
     132            { 
     133                if (kw == "") 
     134                { 
     135                    return createDocumentSearcher("", false); 
     136                } 
     137                return createLoggedDocumentSearcher(kw); 
     138            } 
     139            else 
     140            { 
     141                var s = new DocumentSearcher(); 
     142                s.searchCondition = SearchCondition.fromExpression(kw); 
     143                s.documentSet = this; 
     144                return s; 
     145            } 
     146        } 
     147        public LoggedDocumentSearcher createLoggedDocumentSearcher(string cond) 
     148        { 
     149            return new LoggedDocumentSearcher(this, cond); 
     150        } 
     151        public IEnumerable<Document> search(string kw, bool logging) 
     152        { 
     153            var s=createDocumentSearcher(kw,logging); 
    127154            return s.search(); 
    128155        } 
     
    132159            return r[0]; 
    133160        } 
     161 
     162        internal IEnumerable<object> search(SearchCondition condition) 
     163        { 
     164            return search(condition); 
     165        } 
    134166    } 
    135167} 
  • lang/csharp/soyText/soyText/EditorTab.cs

    r33887 r33970  
    9898        TerminableThread searchThread; 
    9999        TerminableThread lineSearchThread; 
    100         DocumentSercher documentSearcher; 
     100        IDocumentSearcher documentSearcher; 
    101101        public void syncUI(SyncUIAction a) { 
    102102            SyncUI.exe(a); 
     
    135135                    docListBox.Items.Clear(); 
    136136                }); 
    137                 documentSearcher = documentSet.createDocumentSearcher(kw,null); 
     137                documentSearcher = documentSet.createDocumentSearcher(kw,false); 
     138                                                
    138139                foreach (var d2 in documentSearcher.search())  
    139140                //delegate(Document d) 
  • lang/csharp/soyText/soyText/LoggedDocumentSearcher.cs

    r33852 r33970  
    66namespace SoyText 
    77{ 
    8     class LoggedDocumentSearcher 
     8    public class LoggedDocumentSearcher : IDocumentSearcher 
    99    { 
    1010        DocumentSet documentSet; 
     11        IDocumentSearcher noLogSrc; 
     12        string condition; 
     13        public LoggedDocumentSearcher(DocumentSet documentSet,string cond) 
     14        { 
     15            this.documentSet = documentSet; 
     16            condition = cond; 
     17        } 
    1118        public static bool isLoggingOfPastTimeStampGeneration(Document d) 
    1219        { 
    1320            return d.parsed["type"] == "ImportLog"; 
    1421        } 
    15         public IEnumerable<Document> search(string kw) 
     22        bool terminated = false; 
     23        public void terminate() 
    1624        { 
    17             var searchLog = documentSet.searchLogSet.addOrGet(kw); 
    18             bool useSearchLog=searchLog.parsed["hasCache"]=="true"; 
    19             List<string> res = new List<string>(); 
    20             foreach (var d in documentSet.search(kw)) { 
    21                 res.Add(d.id); 
    22                 yield return d; 
     25            if (noLogSrc == null) return; 
     26            terminated = true; 
     27            noLogSrc.terminate(); 
     28        } 
     29        public IEnumerable<Document> search() 
     30        { 
     31            bool useSearchLog = false; 
     32            Document searchLog = null; 
     33            try 
     34            { 
     35 
     36                searchLog = documentSet.searchLogSet.addOrGet(condition); 
     37                searchLog.parsed["closed"] = "false"; 
     38                useSearchLog = searchLog.parsed["hasCache"] == "true"; 
     39 
     40                UniqueList<string> res = new UniqueList<string>(); 
     41                noLogSrc = documentSet.createDocumentSearcher(condition, false); 
     42                foreach (var d in noLogSrc.search()) 
     43                { 
     44                    res.add(d.id); 
     45                    yield return d; 
     46                    if (useSearchLog) 
     47                    { 
     48                        if (isLoggingOfPastTimeStampGeneration(d)) 
     49                        { 
     50                            useSearchLog = false; 
     51                        } 
     52                        if (d.id == searchLog.id) 
     53                        { 
     54                            break; 
     55                        } 
     56                    } 
     57                } 
     58                if (terminated) yield break; 
    2359                if (useSearchLog) 
    2460                { 
    25                     if (isLoggingOfPastTimeStampGeneration(d)) 
     61                    foreach (var l in Str.eachLine(searchLog.body)) 
    2662                    { 
    27                         useSearchLog = false; 
    28                     } 
    29                     if (d.id == searchLog.id) 
    30                     { 
    31                         break; 
     63                        var d = documentSet.byId(l); 
     64                        if (d != null) 
     65                        { 
     66                            if (res.add(l)) 
     67                            { 
     68                                yield return d; 
     69                            } 
     70                        } 
    3271                    } 
    3372                } 
    34             } 
    35             if (useSearchLog) 
    36             { 
    37                 foreach (var l in Str.eachLine(searchLog.body)) 
     73                searchLog.parsed["hasCache"] = "true"; 
     74                var con = ""; 
     75                foreach (var id in res) 
    3876                { 
    39                     res.Add(l); 
     77                    con += id + "\r\n"; 
     78                } 
     79                searchLog.body = con; 
     80                if (!terminated) 
     81                { 
     82                    searchLog.save(); 
    4083                } 
    4184            } 
    42             searchLog.parsed["hasCache"] = "true"; 
     85            finally 
     86            { 
     87                searchLog.save(); 
     88            } 
    4389        } 
    4490    } 
  • lang/csharp/soyText/soyText/PythonEngine.cs

    r33783 r33970  
    4848            catch (Exception ex) 
    4949            { 
     50                 
    5051                MessageBox.Show(ex.ToString()); 
    5152                //return "Error executing code: " + ex.ToString(); 
  • lang/csharp/soyText/soyText/PythonUtil.cs

    r33783 r33970  
    33using System.Linq; 
    44using System.Text; 
     5using System.Text.RegularExpressions; 
    56 
    67namespace SoyText 
     
    2021        public void write(object o) 
    2122        { 
    22             stdout += o; 
     23            var s = o + ""; 
     24            s = Regex.Replace(s, @"\r*\n", "\r\n"); 
     25            stdout += s; 
    2326        } 
    2427        public PythonUtil(DocumentSet s) 
  • lang/csharp/soyText/soyText/bin/Debug/soyText.application

    r33887 r33970  
    1212        </dsig:Transforms> 
    1313        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
    14         <dsig:DigestValue>im1npT+HIoJhF5lA1zyCeNKJWak=</dsig:DigestValue> 
     14        <dsig:DigestValue>5x0RfGAb0hKKRBBG4uaBfsvDOP0=</dsig:DigestValue> 
    1515      </hash> 
    1616    </dependentAssembly> 
  • lang/csharp/soyText/soyText/bin/Debug/soyText.exe.manifest

    r33887 r33970  
    113113  </dependency> 
    114114  <dependency> 
    115     <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="soyText.exe" size="74752"> 
     115    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="soyText.exe" size="76800"> 
    116116      <assemblyIdentity name="soyText" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> 
    117117      <hash> 
     
    120120        </dsig:Transforms> 
    121121        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
    122         <dsig:DigestValue>2PXEjnMCcNfs+glU3ouLw3jxRDs=</dsig:DigestValue> 
     122        <dsig:DigestValue>cejsNAlmEozSx4YsLLN87rI9Ajs=</dsig:DigestValue> 
    123123      </hash> 
    124124    </dependentAssembly> 
  • lang/csharp/soyText/soyText/bin/Debug/soyText.vshost.application

    r33887 r33970  
    1212        </dsig:Transforms> 
    1313        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
    14         <dsig:DigestValue>im1npT+HIoJhF5lA1zyCeNKJWak=</dsig:DigestValue> 
     14        <dsig:DigestValue>5x0RfGAb0hKKRBBG4uaBfsvDOP0=</dsig:DigestValue> 
    1515      </hash> 
    1616    </dependentAssembly> 
  • lang/csharp/soyText/soyText/soyText.csproj

    r33852 r33970  
    100100    <Compile Include="AnyCondition.cs" /> 
    101101    <Compile Include="DocumentList.cs" /> 
    102     <Compile Include="DocumentSercher.cs" /> 
     102    <Compile Include="DocumentListMap.cs" /> 
     103    <Compile Include="DocumentSearcher.cs" /> 
    103104    <Compile Include="DocumentSet.cs" /> 
    104105    <Compile Include="DThread.cs" /> 
     
    128129      <DependentUpon>Form2.cs</DependentUpon> 
    129130    </Compile> 
     131    <Compile Include="IDocumentSearcher.cs" /> 
    130132    <Compile Include="ImportDialog.cs"> 
    131133      <SubType>Form</SubType> 
     
    195197    <Compile Include="Tokenizer.cs" /> 
    196198    <Compile Include="TxtEnc.cs" /> 
     199    <Compile Include="UniqueList.cs" /> 
    197200    <Compile Include="Workspace.cs" /> 
    198201    <Compile Include="WorkspaceSelector.cs">