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

com.espertech.esper.client.soda.SchemaColumnDesc Maven / Gradle / Ivy

The newest version!
/*
 ***************************************************************************************
 *  Copyright (C) 2006 EsperTech, Inc. All rights reserved.                            *
 *  http://www.espertech.com/esper                                                     *
 *  http://www.espertech.com                                                           *
 *  ---------------------------------------------------------------------------------- *
 *  The software in this package is published under the terms of the GPL license       *
 *  a copy of which has been included with this distribution in the license.txt file.  *
 ***************************************************************************************
 */
package com.espertech.esper.client.soda;

import java.io.Serializable;
import java.io.StringWriter;

/**
 * Descriptor for use in create-schema syntax to define property name and type of an event property.
 */
public class SchemaColumnDesc implements Serializable {
    private static final long serialVersionUID = 5068685531968720148L;

    private String name;
    private String type;
    private boolean array;
    private boolean primitiveArray;

    /**
     * Ctor.
     */
    public SchemaColumnDesc() {
    }

    /**
     * Ctor.
     *
     * @param name  column name
     * @param type  type name
     * @param array array flag
     */
    public SchemaColumnDesc(String name, String type, boolean array) {
        this.name = name;
        this.type = type;
        this.array = array;
    }

    /**
     * Ctor.
     *
     * @param name           property name
     * @param type           property type, can be any simple class name or fully-qualified class name or existing event type name
     * @param array          true for array property
     * @param primitiveArray true for array of primitive (requires array property to be set and a primitive type)
     */
    public SchemaColumnDesc(String name, String type, boolean array, boolean primitiveArray) {
        this.name = name;
        this.type = type;
        this.array = array;
        this.primitiveArray = primitiveArray;
    }

    /**
     * Returns property name.
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * Returns property type.
     *
     * @return type
     */
    public String getType() {
        return type;
    }

    /**
     * Returns true for array properties.
     *
     * @return indicator
     */
    public boolean isArray() {
        return array;
    }

    /**
     * Set property name.
     *
     * @param name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Set property type.
     *
     * @param type type
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * Set array indicator.
     *
     * @param array indicator
     */
    public void setArray(boolean array) {
        this.array = array;
    }

    /**
     * Returns indicator whether array of primitives (requires array and a primitive type)
     *
     * @return indicator
     */
    public boolean isPrimitiveArray() {
        return primitiveArray;
    }

    /**
     * Sets indicator whether array of primitives (requires array and a primitive type)
     *
     * @param primitiveArray indicator
     */
    public void setPrimitiveArray(boolean primitiveArray) {
        this.primitiveArray = primitiveArray;
    }

    /**
     * Render to EPL.
     *
     * @param writer to render to
     */
    public void toEPL(StringWriter writer) {
        writer.write(name);
        writer.write(' ');
        writer.write(type);
        if (array) {
            if (primitiveArray) {
                writer.write("[primitive]");
            } else {
                writer.write("[]");
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy