This is version . It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

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

Add new attachment

Only authorized users are allowed to upload new attachments.
« This particular version was published on 24-Jan-2003 17:29 by JanneJalkanen.