001/* 
002 * JKNIV, SQLegance keeping queries maintainable.
003 * 
004 * Copyright (C) 2017, the original author or authors.
005 *
006 * This library is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 2.1 of the License.
010 * 
011 * This library is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 * 
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with this library; if not, write to the Free Software Foundation, Inc., 
018 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
019 */
020package net.sf.jkniv.sqlegance.builder.xml;
021
022import net.sf.jkniv.sqlegance.KeyGeneratorType;
023import net.sf.jkniv.sqlegance.builder.xml.dynamic.ITextTag;
024
025public interface AutoGeneratedKey extends ITextTag
026{
027    public static final String TAG_NAME           = "autoGeneratedKey";
028    public static final String ATTRIBUTE_STRATEGY = "strategy";
029    public static final String ATTRIBUTE_COLUMNS  = "columns";
030    public static final String ATTRIBUTE_PROPS    = "properties";
031
032    KeyGeneratorType getStrategy();
033    
034    boolean isAutoStrategy();
035    
036    boolean isSequenceStrategy();
037    
038    /**
039     * A comma separated list of columns names, when multiple columns are expected
040     * @return empty string when haven't value.
041     */
042    String getColumns();
043    
044    String[] getColumnsAsArray();
045    
046    String[] getPropertiesAsArray();
047    
048    /**
049     * A comma separated list of property names, when multiple properties are expected
050     * @return empty string when haven't value
051     */
052    String getProperties();
053    
054}