/*******************************************************************************
 * Copyright (c) 2011 Oracle. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
 * which accompanies this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *     Mike Norman - June 10 2011, created DDL parser package
 ******************************************************************************/
package org.eclipse.persistence.tools.oracleddl.metadata;

import org.eclipse.persistence.tools.oracleddl.metadata.visit.DatabaseTypeVisitable;
import org.eclipse.persistence.tools.oracleddl.metadata.visit.DatabaseTypeVisitor;

public class VarCharType extends SizedType implements DatabaseTypeVisitable {

    public static final String TYPENAME = "VARCHAR";
	static long DEFAULT_SIZE = 1l;

    public VarCharType() {
        super(TYPENAME, DEFAULT_SIZE);
    }
    public VarCharType(long size) {
        super(TYPENAME, size);
    }

	@Override
	public long getDefaultSize() {
		return DEFAULT_SIZE;
	}

	@Override
    public boolean isVarCharType() {
        return true;
    }

    public void accept(DatabaseTypeVisitor visitor) {
		visitor.visit(this);
	}

}