All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.commonjava.aprox.subsys.flatfile.conf.FlatFileConfiguration Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2014 Red Hat, Inc..
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package org.commonjava.aprox.subsys.flatfile.conf;

import java.io.File;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.inject.Named;

import org.commonjava.aprox.conf.AbstractAproxConfigInfo;
import org.commonjava.aprox.conf.AbstractAproxFeatureConfig;
import org.commonjava.aprox.conf.AproxConfigInfo;
import org.commonjava.web.config.ConfigurationException;
import org.commonjava.web.config.annotation.ConfigName;
import org.commonjava.web.config.annotation.SectionName;

@SectionName( "flatfiles" )
@Alternative
@Named( "unused" )
public class FlatFileConfiguration
{

    @javax.enterprise.context.ApplicationScoped
    public static class FlatFileFeatureConfig
        extends AbstractAproxFeatureConfig
    {
        @Inject
        private FlatFileConfigInfo info;

        public FlatFileFeatureConfig()
        {
            super( FlatFileConfiguration.class );
        }

        @Produces
        @Default
        @ApplicationScoped
        public FlatFileConfiguration getFlatFileConfig()
            throws ConfigurationException
        {
            return getConfig();
        }

        @Override
        public AproxConfigInfo getInfo()
        {
            return info;
        }
    }

    @javax.enterprise.context.ApplicationScoped
    public static class FlatFileConfigInfo
        extends AbstractAproxConfigInfo
    {
        public FlatFileConfigInfo()
        {
            super( FlatFileConfiguration.class );
        }
    }

    public static final File DEFAULT_DATA_BASEDIR = new File( System.getProperty( "aprox.home", "/var/lib/aprox" ),
                                                              "data" );

    private static final File DEFAULT_WORK_BASEDIR = new File( System.getProperty( "aprox.home", "/var/lib/aprox" ),
                                                               "work" );

    private File dataBasedir;

    private File workBasedir;

    public FlatFileConfiguration()
    {
    }

    public File getDataBasedir()
    {
        return dataBasedir == null ? DEFAULT_DATA_BASEDIR : dataBasedir;
    }

    @ConfigName( "data.dir" )
    public void setDataBasedir( final File dataBasedir )
    {
        this.dataBasedir = dataBasedir;
    }

    public FlatFileConfiguration withDataBasedir( final File dataBasedir )
    {
        this.dataBasedir = dataBasedir;
        return this;
    }

    public File getDataDir( final String name )
    {
        final File d = new File( getDataBasedir(), name );
        d.mkdirs();

        return d;
    }

    public File getWorkBasedir()
    {
        return workBasedir == null ? DEFAULT_WORK_BASEDIR : workBasedir;
    }

    @ConfigName( "work.dir" )
    public void setWorkBasedir( final File workBasedir )
    {
        this.workBasedir = workBasedir;
    }

    public FlatFileConfiguration withWorkBasedir( final File workBasedir )
    {
        this.workBasedir = workBasedir;
        return this;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy