Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/alicebot/server/core/targeting/Target.java


1   // Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
2   // Jad home page: http://www.geocities.com/kpdus/jad.html
3   // Decompiler options: packimports(3) 
4   
5   package org.alicebot.server.core.targeting;
6   
7   import java.util.*;
8   import org.alicebot.server.core.util.*;
9   
10  // Referenced classes of package org.alicebot.server.core.targeting:
11  //            TargetExtensions, Category, TargetInputs, CannotExtendException
12  
13  public class Target
14  {
15  
16      public Target(String s, String s1, String s2, String s3, String s4, String s5, String s6, 
17              String s7)
18      {
19          extensions = new TargetExtensions();
20          replies = new LinkedList();
21          newCategory = new Category();
22          activations = 1;
23          match = new Category(s, s1, s2, s3);
24          inputs = new TargetInputs(s4, s5, s6);
25          replies.add(s7);
26      }
27  
28      public int hashCode()
29      {
30          return (match.getPattern() + match.getThat() + match.getTopic()).hashCode();
31      }
32  
33      public static int generateHashCode(String s, String s1, String s2)
34      {
35          return (s + s1 + s2).hashCode();
36      }
37  
38      public void merge(Target target)
39      {
40          if(hashCode() != target.hashCode())
41              throw new DeveloperError("Targets with non-matching <match> segments cannot be merged!");
42          Iterator iterator = target.getInputs().iterator();
43          Iterator iterator1 = target.getReplies().iterator();
44          Iterator iterator2 = target.getExtensions().iterator();
45          while(iterator.hasNext()) 
46          {
47              StringTriple stringtriple = (StringTriple)iterator.next();
48              StringTriple stringtriple1 = null;
49              try
50              {
51                  stringtriple1 = (StringTriple)iterator2.next();
52              }
53              catch(NoSuchElementException nosuchelementexception) { }
54              String s = (String)iterator1.next();
55              if(!inputs.contains(stringtriple))
56              {
57                  inputs.add(stringtriple);
58                  replies.add(s);
59                  if(stringtriple1 != null)
60                      extensions.add(stringtriple1);
61              }
62          }
63          if(inputs.size() != replies.size())
64          {
65              throw new DeveloperError("Merge operation failed to maintain stable activation count.");
66          } else
67          {
68              activations = inputs.size();
69              return;
70          }
71      }
72  
73      public String getMatchPattern()
74      {
75          return match.getPattern();
76      }
77  
78      public String getMatchThat()
79      {
80          return match.getThat();
81      }
82  
83      public String getMatchTopic()
84      {
85          return match.getTopic();
86      }
87  
88      public String getMatchTemplate()
89      {
90          return match.getTemplate();
91      }
92  
93      public StringTripleMatrix getInputs()
94      {
95          return inputs;
96      }
97  
98      public LinkedList getInputTexts()
99      {
100         return inputs.getTexts();
101     }
102 
103     public LinkedList getInputThats()
104     {
105         return inputs.getThats();
106     }
107 
108     public LinkedList getInputTopics()
109     {
110         return inputs.getTopics();
111     }
112 
113     public String getFirstInputText()
114     {
115         return (String)inputs.getTexts().getFirst();
116     }
117 
118     public String getFirstInputThat()
119     {
120         return (String)inputs.getThats().getFirst();
121     }
122 
123     public String getFirstInputTopic()
124     {
125         return (String)inputs.getTopics().getFirst();
126     }
127 
128     public String getLastInputText()
129     {
130         return (String)inputs.getTexts().getLast();
131     }
132 
133     public String getLastInputThat()
134     {
135         return (String)inputs.getThats().getLast();
136     }
137 
138     public String getLastInputTopic()
139     {
140         return (String)inputs.getTopics().getLast();
141     }
142 
143     public String getNthInputText(int i)
144     {
145         return (String)inputs.getTexts().get(i);
146     }
147 
148     public String getNthInputThat(int i)
149     {
150         return (String)inputs.getThats().get(i);
151     }
152 
153     public String getNthInputTopic(int i)
154     {
155         return (String)inputs.getTopics().get(i);
156     }
157 
158     public StringTripleMatrix getExtensions()
159     {
160         return extensions;
161     }
162 
163     public LinkedList getExtensionPatterns()
164     {
165         return extensions.getPatterns();
166     }
167 
168     public LinkedList getExtensionThats()
169     {
170         return extensions.getThats();
171     }
172 
173     public LinkedList getExtensionTopics()
174     {
175         return extensions.getTopics();
176     }
177 
178     public String getFirstExtensionPattern()
179     {
180         return (String)extensions.getPatterns().getFirst();
181     }
182 
183     public String getFirstExtensionThat()
184     {
185         return (String)extensions.getThats().getFirst();
186     }
187 
188     public String getFirstExtensionTopic()
189     {
190         return (String)extensions.getTopics().getFirst();
191     }
192 
193     public String getLastExtensionPattern()
194     {
195         return (String)extensions.getPatterns().getLast();
196     }
197 
198     public String getLastExtensionThat()
199     {
200         return (String)extensions.getThats().getLast();
201     }
202 
203     public String getLastExtensionTopic()
204     {
205         return (String)extensions.getTopics().getLast();
206     }
207 
208     public String getNthExtensionPattern(int i)
209     {
210         extend(i);
211         return (String)extensions.getPatterns().get(i);
212     }
213 
214     public String getNthExtensionThat(int i)
215     {
216         extend(i);
217         return (String)extensions.getThats().get(i);
218     }
219 
220     public String getNthExtensionTopic(int i)
221     {
222         extend(i);
223         return (String)extensions.getTopics().get(i);
224     }
225 
226     public LinkedList getReplies()
227     {
228         return replies;
229     }
230 
231     public String getFirstReply()
232     {
233         return (String)replies.getFirst();
234     }
235 
236     public String getLastReply()
237     {
238         return (String)replies.getLast();
239     }
240 
241     public String getNthReply(int i)
242     {
243         return (String)replies.get(i);
244     }
245 
246     public String getNewPattern()
247     {
248         return newCategory.getPattern();
249     }
250 
251     public String getNewThat()
252     {
253         return newCategory.getThat();
254     }
255 
256     public String getNewTopic()
257     {
258         return newCategory.getTopic();
259     }
260 
261     public String getNewTemplate()
262     {
263         return newCategory.getTemplate();
264     }
265 
266     public void setNewPattern(String s)
267     {
268         newCategory.setPattern(s);
269     }
270 
271     public void setNewThat(String s)
272     {
273         newCategory.setThat(s);
274     }
275 
276     public void setNewTopic(String s)
277     {
278         newCategory.setTopic(s);
279     }
280 
281     public void setNewTemplate(String s)
282     {
283         newCategory.setTemplate(s);
284     }
285 
286     public int getActivations()
287     {
288         return activations;
289     }
290 
291     public void extend()
292     {
293         for(int i = activations; --i >= 0;)
294             extend(i);
295 
296     }
297 
298     private void extend(int i)
299     {
300         extensions.ensureSize(i + 1);
301         String s = getNthInputText(i);
302         String s1 = getNthInputThat(i);
303         String s2 = getNthInputTopic(i);
304         String s3;
305         String s4;
306         String s5;
307         try
308         {
309             s3 = InputNormalizer.patternFit(extend(match.getPattern(), s));
310             s4 = InputNormalizer.patternFit(match.getThat());
311             s5 = InputNormalizer.patternFit(match.getTopic());
312         }
313         catch(CannotExtendException cannotextendexception)
314         {
315             s3 = InputNormalizer.patternFit(match.getPattern());
316             try
317             {
318                 s4 = InputNormalizer.patternFit(extend(match.getThat(), s1));
319                 s5 = InputNormalizer.patternFit(match.getTopic());
320             }
321             catch(CannotExtendException cannotextendexception1)
322             {
323                 s4 = InputNormalizer.patternFit(match.getThat());
324                 try
325                 {
326                     s5 = InputNormalizer.patternFit(extend(match.getTopic(), s2));
327                 }
328                 catch(CannotExtendException cannotextendexception2)
329                 {
330                     return;
331                 }
332             }
333         }
334         extensions.getFirsts().set(i, s3);
335         extensions.getSeconds().set(i, s4);
336         extensions.getThirds().set(i, s5);
337     }
338 
339     private static String extend(String s, String s1)
340         throws CannotExtendException
341     {
342         if(s.indexOf('*') == -1 && s.indexOf('_') == -1)
343             throw new CannotExtendException();
344         StringTokenizer stringtokenizer = new StringTokenizer(s);
345         StringTokenizer stringtokenizer1 = new StringTokenizer(s1);
346         int i = stringtokenizer.countTokens();
347         int j = stringtokenizer1.countTokens();
348         if(i > j)
349             i = j;
350         StringBuffer stringbuffer = new StringBuffer();
351         boolean flag = false;
352         for(int k = 0; k < i && !flag; k++)
353         {
354             String s2 = stringtokenizer.nextToken();
355             if(s2.equals("*") || s2.equals("_"))
356                 flag = true;
357             stringbuffer.append(stringtokenizer1.nextToken());
358             stringbuffer.append(' ');
359         }
360 
361         if(stringtokenizer1.hasMoreTokens())
362             stringbuffer.append("*");
363         return stringbuffer.toString();
364     }
365 
366     private Category match;
367     private TargetInputs inputs;
368     private TargetExtensions extensions;
369     private LinkedList replies;
370     private Category newCategory;
371     private int activations;
372 }