Search in sources :

Example 6 with AttachmentManager

use of org.apache.wiki.attachment.AttachmentManager in project jspwiki by apache.

the class Image method execute.

/**
 *  {@inheritDoc}
 */
public String execute(WikiContext context, Map<String, String> params) throws PluginException {
    WikiEngine engine = context.getEngine();
    String src = getCleanParameter(params, PARAM_SRC);
    String align = getCleanParameter(params, PARAM_ALIGN);
    String ht = getCleanParameter(params, PARAM_HEIGHT);
    String wt = getCleanParameter(params, PARAM_WIDTH);
    String alt = getCleanParameter(params, PARAM_ALT);
    String caption = getCleanParameter(params, PARAM_CAPTION);
    String link = getCleanParameter(params, PARAM_LINK);
    String target = getCleanParameter(params, PARAM_TARGET);
    String style = getCleanParameter(params, PARAM_STYLE);
    String cssclass = getCleanParameter(params, PARAM_CLASS);
    // String map     = getCleanParameter( params, PARAM_MAP );
    String border = getCleanParameter(params, PARAM_BORDER);
    String title = getCleanParameter(params, PARAM_TITLE);
    if (src == null) {
        throw new PluginException("Parameter 'src' is required for Image plugin");
    }
    if (target != null && !validTargetValue(target)) {
        // not a valid value so ignore
        target = null;
    }
    try {
        AttachmentManager mgr = engine.getAttachmentManager();
        Attachment att = mgr.getAttachmentInfo(context, src);
        if (att != null) {
            src = context.getURL(WikiContext.ATTACH, att.getName());
        }
    } catch (ProviderException e) {
        throw new PluginException("Attachment info failed: " + e.getMessage());
    }
    StringBuilder result = new StringBuilder();
    result.append("<table border=\"0\" class=\"imageplugin\"");
    if (title != null) {
        result.append(" title=\"" + title + "\"");
    }
    if (align != null) {
        if (align.equals("center")) {
            result.append(" style=\"margin-left: auto; margin-right: auto; text-align:center; vertical-align:middle;\"");
        } else {
            result.append(" style=\"float:" + align + ";\"");
        }
    }
    result.append(">\n");
    if (caption != null) {
        result.append("<caption>" + caption + "</caption>\n");
    }
    // move css class and style to the container of the image,
    // so it doesn't affect the caption
    result.append("<tr><td");
    if (cssclass != null) {
        result.append(" class=\"" + cssclass + "\"");
    }
    if (style != null) {
        result.append(" style=\"" + style);
        // Make sure that we add a ";" to the end of the style string
        if (result.charAt(result.length() - 1) != ';')
            result.append(";");
        result.append("\"");
    }
    result.append(">");
    if (link != null) {
        result.append("<a href=\"" + link + "\"");
        if (target != null) {
            result.append(" target=\"" + target + "\"");
        }
        result.append(">");
    }
    result.append("<img src=\"" + src + "\"");
    if (ht != null)
        result.append(" height=\"" + ht + "\"");
    if (wt != null)
        result.append(" width=\"" + wt + "\"");
    if (alt != null)
        result.append(" alt=\"" + alt + "\"");
    if (border != null)
        result.append(" border=\"" + border + "\"");
    // if( map != null )    result.append(" map=\""+map+"\"");
    result.append(" />");
    if (link != null)
        result.append("</a>");
    result.append("</td></tr>\n");
    result.append("</table>\n");
    return result.toString();
}
Also used : ProviderException(org.apache.wiki.api.exceptions.ProviderException) PluginException(org.apache.wiki.api.exceptions.PluginException) Attachment(org.apache.wiki.attachment.Attachment) AttachmentManager(org.apache.wiki.attachment.AttachmentManager) WikiEngine(org.apache.wiki.WikiEngine)

Example 7 with AttachmentManager

use of org.apache.wiki.attachment.AttachmentManager in project jspwiki by apache.

the class LuceneSearchProvider method getAttachmentContent.

/**
 * @param att Attachment to get content for. Filename extension is used to determine the type of the attachment.
 * @return String representing the content of the file.
 * FIXME This is a very simple implementation of some text-based attachment, mainly used for testing.
 * This should be replaced /moved to Attachment search providers or some other 'pluggable' wat to search attachments
 */
protected String getAttachmentContent(Attachment att) {
    AttachmentManager mgr = m_engine.getAttachmentManager();
    // FIXME: Add attachment plugin structure
    String filename = att.getFileName();
    boolean searchSuffix = false;
    for (String suffix : SEARCHABLE_FILE_SUFFIXES) {
        if (filename.endsWith(suffix)) {
            searchSuffix = true;
        }
    }
    String out = null;
    if (searchSuffix) {
        InputStream attStream = null;
        StringWriter sout = new StringWriter();
        try {
            attStream = mgr.getAttachmentStream(att);
            FileUtil.copyContents(new InputStreamReader(attStream), sout);
            out = sout.toString();
        } catch (ProviderException e) {
            log.error("Attachment cannot be loaded", e);
        } catch (IOException e) {
            log.error("Attachment cannot be loaded", e);
        } finally {
            IOUtils.closeQuietly(attStream);
            IOUtils.closeQuietly(sout);
        }
    }
    return out;
}
Also used : StringWriter(java.io.StringWriter) InputStreamReader(java.io.InputStreamReader) ProviderException(org.apache.wiki.api.exceptions.ProviderException) InputStream(java.io.InputStream) AttachmentManager(org.apache.wiki.attachment.AttachmentManager) IOException(java.io.IOException)

Example 8 with AttachmentManager

use of org.apache.wiki.attachment.AttachmentManager in project jspwiki by apache.

the class AttachmentsIteratorTag method doStartTag.

/**
 *  {@inheritDoc}
 */
@Override
public final int doStartTag() {
    m_wikiContext = (WikiContext) pageContext.getAttribute(WikiTagBase.ATTR_CONTEXT, PageContext.REQUEST_SCOPE);
    WikiEngine engine = m_wikiContext.getEngine();
    AttachmentManager mgr = engine.getAttachmentManager();
    WikiPage page;
    page = m_wikiContext.getPage();
    if (!mgr.attachmentsEnabled()) {
        return SKIP_BODY;
    }
    try {
        if (page != null && engine.pageExists(page)) {
            Collection atts = mgr.listAttachments(page);
            if (atts == null) {
                log.debug("No attachments to display.");
                // There are no attachments included
                return SKIP_BODY;
            }
            m_iterator = atts.iterator();
            if (m_iterator.hasNext()) {
                Attachment att = (Attachment) m_iterator.next();
                WikiContext context = (WikiContext) m_wikiContext.clone();
                context.setPage(att);
                pageContext.setAttribute(WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE);
                pageContext.setAttribute(getId(), att);
            } else {
                return SKIP_BODY;
            }
        } else {
            return SKIP_BODY;
        }
        return EVAL_BODY_BUFFERED;
    } catch (ProviderException e) {
        log.fatal("Provider failed while trying to iterator through history", e);
    // FIXME: THrow something.
    }
    return SKIP_BODY;
}
Also used : WikiContext(org.apache.wiki.WikiContext) ProviderException(org.apache.wiki.api.exceptions.ProviderException) WikiPage(org.apache.wiki.WikiPage) Collection(java.util.Collection) Attachment(org.apache.wiki.attachment.Attachment) AttachmentManager(org.apache.wiki.attachment.AttachmentManager) WikiEngine(org.apache.wiki.WikiEngine)

Example 9 with AttachmentManager

use of org.apache.wiki.attachment.AttachmentManager in project jspwiki by apache.

the class HasAttachmentsTag method doWikiStartTag.

public final int doWikiStartTag() throws IOException {
    WikiEngine engine = m_wikiContext.getEngine();
    WikiPage page = m_wikiContext.getPage();
    AttachmentManager mgr = engine.getAttachmentManager();
    try {
        if (page != null && engine.pageExists(page) && mgr.attachmentsEnabled()) {
            if (mgr.hasAttachments(page)) {
                return EVAL_BODY_INCLUDE;
            }
        }
    } catch (ProviderException e) {
        log.fatal("Provider failed while trying to check for attachements", e);
    // FIXME: THrow something.
    }
    return SKIP_BODY;
}
Also used : ProviderException(org.apache.wiki.api.exceptions.ProviderException) WikiPage(org.apache.wiki.WikiPage) AttachmentManager(org.apache.wiki.attachment.AttachmentManager) WikiEngine(org.apache.wiki.WikiEngine)

Example 10 with AttachmentManager

use of org.apache.wiki.attachment.AttachmentManager in project jspwiki by apache.

the class WikiEngine method initialize.

/**
 *  Does all the real initialization.
 */
private void initialize(Properties props) throws WikiException {
    m_startTime = new Date();
    m_properties = props;
    // 
    if (!c_configured) {
        String useExternalLogConfig = TextUtil.getStringProperty(props, "jspwiki.use.external.logconfig", "false");
        if (useExternalLogConfig == null || useExternalLogConfig.equals("false")) {
            PropertyConfigurator.configure(props);
        }
        c_configured = true;
    }
    log.info("*******************************************");
    log.info(Release.APPNAME + " " + Release.getVersionString() + " starting. Whee!");
    // begin initialization
    fireEvent(WikiEngineEvent.INITIALIZING);
    log.debug("Java version: " + System.getProperty("java.runtime.version"));
    log.debug("Java vendor: " + System.getProperty("java.vm.vendor"));
    log.debug("OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch"));
    log.debug("Default server locale: " + Locale.getDefault());
    log.debug("Default server timezone: " + TimeZone.getDefault().getDisplayName(true, TimeZone.LONG));
    if (m_servletContext != null) {
        log.info("Servlet container: " + m_servletContext.getServerInfo());
        if (m_servletContext.getMajorVersion() < 2 || (m_servletContext.getMajorVersion() == 2 && m_servletContext.getMinorVersion() < 4)) {
            throw new InternalWikiException("I require a container which supports at least version 2.4 of Servlet specification");
        }
    }
    log.debug("Configuring WikiEngine...");
    // Initializes the CommandResolver
    m_commandResolver = new CommandResolver(this, props);
    // 
    // Create and find the default working directory.
    // 
    m_workDir = TextUtil.getStringProperty(props, PROP_WORKDIR, null);
    if (m_workDir == null) {
        m_workDir = System.getProperty("java.io.tmpdir", ".");
        m_workDir += File.separator + Release.APPNAME + "-" + m_appid;
    }
    try {
        File f = new File(m_workDir);
        f.mkdirs();
        // 
        if (!f.exists())
            throw new WikiException("Work directory does not exist: " + m_workDir);
        if (!f.canRead())
            throw new WikiException("No permission to read work directory: " + m_workDir);
        if (!f.canWrite())
            throw new WikiException("No permission to write to work directory: " + m_workDir);
        if (!f.isDirectory())
            throw new WikiException("jspwiki.workDir does not point to a directory: " + m_workDir);
    } catch (SecurityException e) {
        log.fatal("Unable to find or create the working directory: " + m_workDir, e);
        throw new IllegalArgumentException("Unable to find or create the working dir: " + m_workDir, e);
    }
    log.info("JSPWiki working directory is '" + m_workDir + "'");
    m_saveUserInfo = TextUtil.getBooleanProperty(props, PROP_STOREUSERNAME, m_saveUserInfo);
    m_useUTF8 = "UTF-8".equals(TextUtil.getStringProperty(props, PROP_ENCODING, "ISO-8859-1"));
    m_beautifyTitle = TextUtil.getBooleanProperty(props, PROP_BEAUTIFYTITLE, m_beautifyTitle);
    m_templateDir = TextUtil.getStringProperty(props, PROP_TEMPLATEDIR, "default");
    m_frontPage = TextUtil.getStringProperty(props, PROP_FRONTPAGE, "Main");
    // Initialize the page name comparator now as it may be used while
    // initializing other modules
    initPageSorter(props);
    // of a better way to do the startup-sequence.
    try {
        Class<?> urlclass = ClassUtil.findClass("org.apache.wiki.url", TextUtil.getStringProperty(props, PROP_URLCONSTRUCTOR, "DefaultURLConstructor"));
        m_urlConstructor = (URLConstructor) urlclass.newInstance();
        m_urlConstructor.initialize(this, props);
        m_pageManager = (PageManager) ClassUtil.getMappedObject(PageManager.class.getName(), this, props);
        m_pluginManager = (PluginManager) ClassUtil.getMappedObject(PluginManager.class.getName(), this, props);
        m_differenceManager = (DifferenceManager) ClassUtil.getMappedObject(DifferenceManager.class.getName(), this, props);
        m_attachmentManager = (AttachmentManager) ClassUtil.getMappedObject(AttachmentManager.class.getName(), this, props);
        m_variableManager = (VariableManager) ClassUtil.getMappedObject(VariableManager.class.getName(), props);
        // m_filterManager     = (FilterManager)ClassUtil.getMappedObject(FilterManager.class.getName(), this, props );
        m_renderingManager = (RenderingManager) ClassUtil.getMappedObject(RenderingManager.class.getName());
        m_searchManager = (SearchManager) ClassUtil.getMappedObject(SearchManager.class.getName(), this, props);
        m_authenticationManager = (AuthenticationManager) ClassUtil.getMappedObject(AuthenticationManager.class.getName());
        m_authorizationManager = (AuthorizationManager) ClassUtil.getMappedObject(AuthorizationManager.class.getName());
        m_userManager = (UserManager) ClassUtil.getMappedObject(UserManager.class.getName());
        m_groupManager = (GroupManager) ClassUtil.getMappedObject(GroupManager.class.getName());
        m_editorManager = (EditorManager) ClassUtil.getMappedObject(EditorManager.class.getName(), this);
        m_editorManager.initialize(props);
        m_progressManager = new ProgressManager();
        // Initialize the authentication, authorization, user and acl managers
        m_authenticationManager.initialize(this, props);
        m_authorizationManager.initialize(this, props);
        m_userManager.initialize(this, props);
        m_groupManager.initialize(this, props);
        m_aclManager = getAclManager();
        // Start the Workflow manager
        m_workflowMgr = (WorkflowManager) ClassUtil.getMappedObject(WorkflowManager.class.getName());
        m_workflowMgr.initialize(this, props);
        m_internationalizationManager = (InternationalizationManager) ClassUtil.getMappedObject(InternationalizationManager.class.getName(), this);
        m_templateManager = (TemplateManager) ClassUtil.getMappedObject(TemplateManager.class.getName(), this, props);
        // Since we want to use a page filters initilize() method
        // as a engine startup listener where we can initialize global event listeners,
        // it must be called lastly, so that all object references in the engine
        // are availabe to the initialize() method
        m_filterManager = (FilterManager) ClassUtil.getMappedObject(FilterManager.class.getName(), this, props);
        m_adminBeanManager = (AdminBeanManager) ClassUtil.getMappedObject(AdminBeanManager.class.getName(), this);
        // RenderingManager depends on FilterManager events.
        m_renderingManager.initialize(this, props);
        // 
        // ReferenceManager has the side effect of loading all
        // pages.  Therefore after this point, all page attributes
        // are available.
        // 
        // initReferenceManager is indirectly using m_filterManager, therefore
        // it has to be called after it was initialized.
        // 
        initReferenceManager();
        // 
        // Hook the different manager routines into the system.
        // 
        m_filterManager.addPageFilter(m_referenceManager, -1001);
        m_filterManager.addPageFilter(m_searchManager, -1002);
    } catch (RuntimeException e) {
        // RuntimeExceptions may occur here, even if they shouldn't.
        log.fatal("Failed to start managers.", e);
        throw new WikiException("Failed to start managers: " + e.getMessage(), e);
    } catch (ClassNotFoundException e) {
        log.fatal("JSPWiki could not start, URLConstructor was not found: " + e.getMessage(), e);
        throw new WikiException(e.getMessage(), e);
    } catch (InstantiationException e) {
        log.fatal("JSPWiki could not start, URLConstructor could not be instantiated: " + e.getMessage(), e);
        throw new WikiException(e.getMessage(), e);
    } catch (IllegalAccessException e) {
        log.fatal("JSPWiki could not start, URLConstructor cannot be accessed: " + e.getMessage(), e);
        throw new WikiException(e.getMessage(), e);
    } catch (Exception e) {
        // Final catch-all for everything
        log.fatal("JSPWiki could not start, due to an unknown exception when starting.", e);
        throw new WikiException("Failed to start. Caused by: " + e.getMessage() + "; please check log files for better information.", e);
    }
    // 
    try {
        if (TextUtil.getBooleanProperty(props, RSSGenerator.PROP_GENERATE_RSS, false)) {
            m_rssGenerator = (RSSGenerator) ClassUtil.getMappedObject(RSSGenerator.class.getName(), this, props);
        }
        m_pageRenamer = (PageRenamer) ClassUtil.getMappedObject(PageRenamer.class.getName(), this, props);
    } catch (Exception e) {
        log.error("Unable to start RSS generator - JSPWiki will still work, " + "but there will be no RSS feed.", e);
    }
    // Start the RSS generator & generator thread
    if (m_rssGenerator != null) {
        m_rssFile = TextUtil.getStringProperty(props, RSSGenerator.PROP_RSSFILE, "rss.rdf");
        File rssFile = null;
        if (m_rssFile.startsWith(File.separator)) {
            // honor absolute pathnames:
            rssFile = new File(m_rssFile);
        } else {
            // relative path names are anchored from the webapp root path:
            rssFile = new File(getRootPath(), m_rssFile);
        }
        int rssInterval = TextUtil.getIntegerProperty(props, RSSGenerator.PROP_INTERVAL, 3600);
        RSSThread rssThread = new RSSThread(this, rssFile, rssInterval);
        rssThread.start();
    }
    // initialization complete
    fireEvent(WikiEngineEvent.INITIALIZED);
    log.info("WikiEngine configured.");
    m_isConfigured = true;
}
Also used : WikiException(org.apache.wiki.api.exceptions.WikiException) RSSThread(org.apache.wiki.rss.RSSThread) WorkflowManager(org.apache.wiki.workflow.WorkflowManager) GroupManager(org.apache.wiki.auth.authorize.GroupManager) FilterManager(org.apache.wiki.api.engine.FilterManager) AdminBeanManager(org.apache.wiki.api.engine.AdminBeanManager) PluginManager(org.apache.wiki.api.engine.PluginManager) TemplateManager(org.apache.wiki.ui.TemplateManager) EditorManager(org.apache.wiki.ui.EditorManager) InternationalizationManager(org.apache.wiki.i18n.InternationalizationManager) SearchManager(org.apache.wiki.search.SearchManager) RSSGenerator(org.apache.wiki.rss.RSSGenerator) CommandResolver(org.apache.wiki.ui.CommandResolver) Date(java.util.Date) WikiException(org.apache.wiki.api.exceptions.WikiException) DecisionRequiredException(org.apache.wiki.workflow.DecisionRequiredException) NoSuchVariableException(org.apache.wiki.api.exceptions.NoSuchVariableException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) FilterException(org.apache.wiki.api.exceptions.FilterException) IOException(java.io.IOException) ProviderException(org.apache.wiki.api.exceptions.ProviderException) AuthenticationManager(org.apache.wiki.auth.AuthenticationManager) DifferenceManager(org.apache.wiki.diff.DifferenceManager) RenderingManager(org.apache.wiki.render.RenderingManager) UserManager(org.apache.wiki.auth.UserManager) ProgressManager(org.apache.wiki.ui.progress.ProgressManager) PageRenamer(org.apache.wiki.content.PageRenamer) AttachmentManager(org.apache.wiki.attachment.AttachmentManager) AuthorizationManager(org.apache.wiki.auth.AuthorizationManager) File(java.io.File)

Aggregations

AttachmentManager (org.apache.wiki.attachment.AttachmentManager)10 Attachment (org.apache.wiki.attachment.Attachment)7 ProviderException (org.apache.wiki.api.exceptions.ProviderException)6 File (java.io.File)5 Collection (java.util.Collection)5 WikiEngine (org.apache.wiki.WikiEngine)4 Test (org.junit.Test)4 WikiPage (org.apache.wiki.WikiPage)3 IOException (java.io.IOException)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 StringWriter (java.io.StringWriter)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Date (java.util.Date)1 Hashtable (java.util.Hashtable)1 WikiContext (org.apache.wiki.WikiContext)1 AdminBeanManager (org.apache.wiki.api.engine.AdminBeanManager)1 FilterManager (org.apache.wiki.api.engine.FilterManager)1 PluginManager (org.apache.wiki.api.engine.PluginManager)1