001/*
002 * HA-JDBC: High-Availability JDBC
003 * Copyright (C) 2012  Paul Ferraro
004 *
005 * This program is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Lesser General Public License as published by
007 * the Free Software Foundation, either version 3 of the License, or
008 * (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Lesser General Public License for more details.
014 *
015 * You should have received a copy of the GNU Lesser General Public License
016 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
017 */
018package net.sf.hajdbc.dialect;
019
020import net.sf.hajdbc.AbstractNamed;
021import net.sf.hajdbc.QualifiedName;
022import net.sf.hajdbc.QualifiedNameFactory;
023import net.sf.hajdbc.SequenceProperties;
024import net.sf.hajdbc.SequencePropertiesFactory;
025
026public class StandardSequencePropertiesFactory implements SequencePropertiesFactory
027{
028        private final QualifiedNameFactory factory;
029        
030        public StandardSequencePropertiesFactory(QualifiedNameFactory factory)
031        {
032                this.factory = factory;
033        }
034        
035        @Override
036        public SequenceProperties createSequenceProperties(String schema, String name, int increment)
037        {
038                return new StandardSequenceProperties(this.factory.createQualifiedName(schema, name), increment);
039        }
040        
041        private class StandardSequenceProperties extends AbstractNamed<QualifiedName, SequenceProperties> implements SequenceProperties
042        {
043                private final int increment;
044                
045                StandardSequenceProperties(QualifiedName name, int increment)
046                {
047                        super(name);
048                        this.increment = increment;
049                }
050
051                @Override
052                public int getIncrement()
053                {
054                        return this.increment;
055                }
056        }
057}