code for a DirFileSystemProvider:
if a pagename has dots in it, the file will be saved in subdirs
slighly modified from FilesystemProvider
only the diffs are given.
WolfgangIrler


....
public class DirFileSystemProvider implements WikiPageProvider
{
.....
    /**
     *  Wolfgang Irler changed this method to cope with dots in pageName
     *  Finds a Wiki page from the page repository.
     */
    protected File findPage( String page )
    {
        String pageDir = null;
        String thePage = page;
        int lastDot = thePage.lastIndexOf(".");
        if ( 0 < lastDot && lastDot < thePage.length() ) { // dot must not be on borders
            pageDir = thePage.substring(0, lastDot+1).replace('.', '/');
            thePage = thePage.substring( lastDot+1 );
            return new File( m_pageDirectory + "/" + pageDir,  mangleName(thePage)+FILE_EXT );
        } else
            return new File( m_pageDirectory, mangleName(page)+FILE_EXT );  // original return
    }


///////////Wolfgang added the following
    /**
     *  @Author: Wolfgang Irler (01/2003)
     *  checks the dir for a page with dots.
     *  SIDE EFFECT: if dir inexistant, creates it
     *  returns true if a new one has been created
     */
    private boolean pageHasDotsAndExists( String page )
    {
        String pageDir = null;
        String thePage = page;
        int lastDot = thePage.lastIndexOf(".");
        if ( 0 < lastDot && lastDot < thePage.length() ) { // dot not on borders
            pageDir = thePage.substring(0, lastDot+1).replace('.', '/');
            thePage = thePage.substring( lastDot+1 );
            File dir = new File( m_pageDirectory + "/" + pageDir );
log.info( "++++++++DirFileSystemProvider: new dir = " + dir );
            if ( !dir.exists() ) dir.mkdirs();                  // THIS IS THE SIDE EFFECT!!
            return dir.exists();
        }
            return false;
    }
///////////Wolfgang added the preceeding

.....

    public void putPageText( WikiPage page, String text )        
    {
///////////Wolfgang added the following
        if ( pageHasDotsAndExists( page.getName() ) ){
log.info(" dir for " +page+ " created");            
        }
///////////Wolfgang added the preceeding
        
        File file = findPage( page.getName() );

        try
        {
            PrintWriter out = new PrintWriter(new OutputStreamWriter( new FileOutputStream( file ),
                                                                      m_encoding ));

            out.print( text );

            out.close();
        }
        catch( IOException e )
        {
            log.error( "Saving failed" );
        }
    }

....

I am sorry, but I fail to see the use of this patch. Could you perhaps elaborate why you think this is an useful thing to have? The WikiEngine does not care where the WikiPageProvider stores its files.

-- JanneJalkanen, 24-Jan-2003

This would be useful if somebody wants to modify JSPWiki to allow multiple sandboxes ala Twiki.

-- Killer, 25-Jan-2003

Documentation to that effect by the author might be useful. (Also, I'd suggest attaching the diff file as a patch to this page.) --ebu, 2003-Feb-02

Please look at page WolfgangIrler ! Thanks

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-8) was last changed on 07-Mar-2003 10:38 by WolfgangIrler