//# 0 errors, 102 messages
//#
/*
    //#WikipediaLinkPlugin.java:1:1: class: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.business.plugins.entry;

import org.apache.roller.weblogger.business.plugins.entry.SearchPluginBase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.plugins.entry.WeblogEntryPlugin;

import java.text.MessageFormat;
import java.util.regex.Pattern;

/**
 * Wikipedia Link Plugin.  This plugin provides a convenient way to write wikipedia search links.
 * <p/>
 * The plugin will replace strings of the form <code>wikipedia:"link text"{search text}</code> with a link that performs
 * a Wikipedia search.  The link will have the visible text "link text" and an href for the Google search.  You may omit
 * the <code>{search text}</code> portion, and the link text will be used as the search text.   You can also use an
 * exclamation point (<code>!</code>) instead of the colon (<code>:</code>), to get a lucky (&quot;lucky&quot;) search,
 * which takes the user directly to the best ranked match.
 *
 * @author <a href="mailto:anil@busybuddha.org">Anil Gangolli</a>
 * @version 2.1
 */
public class WikipediaLinkPlugin extends SearchPluginBase implements WeblogEntryPlugin {
    private static final String version = "2.1";
    private static final Pattern pattern = Pattern.compile("wikipedia([:!])\"(.*?)\"(?:\\{(.*?)\\})?");
    //#WikipediaLinkPlugin.java:43: method: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.encodeSearchText(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getDescription()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLinkFormat()Ljava/text/MessageFormat;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLogger()Lorg/apache/commons/logging/Log;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLuckyLinkFormat()Ljava/text/MessageFormat;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getPattern()Ljava/util/regex/Pattern;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getVersion()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): linkFormat
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): luckyLinkFormat
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): mLogger
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#1) num objects
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#2) num objects
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#output(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): pattern
    //#new obj(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#1)
    //#new obj(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#2)
    //#presumption(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): org.apache.commons.logging.LogFactory:getFactory(...)@47 != null
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.encodeSearchText(Ljava/lang/String;)Ljava/lang/String; == &org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.encodeSearchText
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getDescription()Ljava/lang/String; == &getDescription
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLinkFormat()Ljava/text/MessageFormat; == &getLinkFormat
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLogger()Lorg/apache/commons/logging/Log; == &getLogger
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getLuckyLinkFormat()Ljava/text/MessageFormat; == &getLuckyLinkFormat
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getPattern()Ljava/util/regex/Pattern; == &getPattern
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.getVersion()Ljava/lang/String; == &getVersion
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.init
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): __Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String; == &org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.render
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): linkFormat == &new MessageFormat(WikipediaLinkPlugin__static_init#1)
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): luckyLinkFormat == &new MessageFormat(WikipediaLinkPlugin__static_init#2)
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): init'ed(mLogger)
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): init'ed(pattern)
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#1) num objects == 1
    //#post(org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init): new MessageFormat(WikipediaLinkPlugin__static_init#2) num objects == 1
    private static final MessageFormat linkFormat = new MessageFormat("<a href=\"http://www.wikipedia.org/wiki/Special:Search?search={3}\">{2}</a>");
    private static final MessageFormat luckyLinkFormat = new MessageFormat("<a href=\"http://www.wikipedia.org/wiki/Special:Search?search={3}&go=Go\">{2}</a>");

    private static final Log mLogger = LogFactory.getFactory().getInstance(WikipediaLinkPlugin.class);
    //#WikipediaLinkPlugin.java:47: Warning: method not available
    //#    -- call on LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin
    //#    method: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init
    //#    unanalyzed callee: LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#WikipediaLinkPlugin.java:47: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin
    //#    method: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#WikipediaLinkPlugin.java:47: end of method: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin__static_init

    public WikipediaLinkPlugin() {
    //#WikipediaLinkPlugin.java:49: method: void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()
    //#WikipediaLinkPlugin.java:49: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin
    //#    method: void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()
    //#    suspicious precondition index: [1]
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): __Dispatch_Table.getLogger()Lorg/apache/commons/logging/Log;
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): mLogger
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.getLogger()Lorg/apache/commons/logging/Log;
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.mLogger
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase]
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase.__Dispatch_Table.getLogger()Lorg/apache/commons/logging/Log;
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this
    //#input(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.__Tag
    //#output(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.__Tag
    //#output(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.baseVersion
    //#output(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.mLogger
    //#pre[1] (void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.__Tag in {org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin, org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase, org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin}
    //#post(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.__Tag == old this.__Tag
    //#post(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.__Tag in {org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin, org/apache/roller/weblogger/business/plugins/entry/SearchPluginBase, org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin}
    //#post(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): this.baseVersion == &"2.1"
    //#post(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): init'ed(this.mLogger)
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()): Effects-of-calling:getLogger
    }
    //#WikipediaLinkPlugin.java:50: end of method: void org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin()

    public String getName() {
        return "Wikipedia Search Links";
    //#WikipediaLinkPlugin.java:53: method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getName()
    //#output(String getName()): return_value
    //#post(String getName()): return_value == &"Wikipedia Search Links"
    //#WikipediaLinkPlugin.java:53: end of method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getName()
    }

    public String getDescription() {
        return "Replace wikipedia:&quot;link text&quot;{search text} with a link that performs a wikipedia search.  With ! instead of :," + "creates a &quot;lucky&quot; search, going directly to the first result.  With {search text} omitted, uses link text as the value of the search text.";
    //#WikipediaLinkPlugin.java:57: method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getDescription()
    //#output(String getDescription()): return_value
    //#post(String getDescription()): return_value == &"Replace wikipedia:&amp;quot;link text&amp;quot;{search text} with a link that  ... {search text} omitted, uses link text as the value of the search text."
    //#WikipediaLinkPlugin.java:57: end of method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getDescription()
    }

    public String getVersion() {
        return version;
    //#WikipediaLinkPlugin.java:61: method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getVersion()
    //#output(String getVersion()): return_value
    //#post(String getVersion()): return_value == &"2.1"
    //#WikipediaLinkPlugin.java:61: end of method: String org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getVersion()
    }

    public Pattern getPattern() {
        return pattern;
    //#WikipediaLinkPlugin.java:65: method: Pattern org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getPattern()
    //#input(Pattern getPattern()): pattern
    //#output(Pattern getPattern()): return_value
    //#post(Pattern getPattern()): init'ed(return_value)
    //#WikipediaLinkPlugin.java:65: end of method: Pattern org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getPattern()
    }

    public MessageFormat getLinkFormat() {
        return linkFormat;
    //#WikipediaLinkPlugin.java:69: method: MessageFormat org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLinkFormat()
    //#input(MessageFormat getLinkFormat()): linkFormat
    //#output(MessageFormat getLinkFormat()): return_value
    //#post(MessageFormat getLinkFormat()): return_value == &new MessageFormat(WikipediaLinkPlugin__static_init#1)
    //#WikipediaLinkPlugin.java:69: end of method: MessageFormat org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLinkFormat()
    }

    public MessageFormat getLuckyLinkFormat() {
        return luckyLinkFormat;
    //#WikipediaLinkPlugin.java:73: method: MessageFormat org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLuckyLinkFormat()
    //#input(MessageFormat getLuckyLinkFormat()): luckyLinkFormat
    //#output(MessageFormat getLuckyLinkFormat()): return_value
    //#post(MessageFormat getLuckyLinkFormat()): return_value == &new MessageFormat(WikipediaLinkPlugin__static_init#2)
    //#WikipediaLinkPlugin.java:73: end of method: MessageFormat org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLuckyLinkFormat()
    }

    public Log getLogger() {
        return mLogger;
    //#WikipediaLinkPlugin.java:77: method: Log org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLogger()
    //#input(Log getLogger()): mLogger
    //#output(Log getLogger()): return_value
    //#post(Log getLogger()): init'ed(return_value)
    //#WikipediaLinkPlugin.java:77: end of method: Log org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin.getLogger()
    }
}
    //#WikipediaLinkPlugin.java:: end of class: org.apache.roller.weblogger.business.plugins.entry.WikipediaLinkPlugin
