Package org.apache.ojb.broker.metadata.torque

Source Code of org.apache.ojb.broker.metadata.torque.TorqueFieldGenerator

package org.apache.ojb.broker.metadata.torque;

/* Copyright 2002-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import org.apache.ojb.broker.metadata.FieldDescriptor;

import java.sql.Types;

public class TorqueFieldGenerator {

    private boolean ignoreAutoIncrement;

    public TorqueFieldGenerator(boolean ignoreAutoIncrement) {
        this.ignoreAutoIncrement = ignoreAutoIncrement;
    }

    public void generateFieldDescriptors(FieldDescriptor[] descriptors, StringBuffer buffer) {
        if (descriptors != null) {
            for (int i = 0; i < descriptors.length; i++) {
                FieldDescriptor descriptor = descriptors[i];
                generateFieldDescriptor(descriptor, descriptor.getColumnName(), descriptor.isRequired(), descriptor.isAutoIncrement(), descriptor.isPrimaryKey(), buffer);
            }
        }
    }

    public void generateMappingFieldDescriptors(FieldDescriptor[] descriptors, StringBuffer buffer) {
        if (descriptors != null) {
            for (int i = 0; i < descriptors.length; i++) {
                FieldDescriptor descriptor = descriptors[i];
                StringBuffer fieldBuffer = new StringBuffer();
                generateFieldDescriptor(descriptor, descriptor.getColumnName(), true, false, true, fieldBuffer);
                buffer.append(fieldBuffer);
            }
        }
    }

    private void generateFieldDescriptor(FieldDescriptor descriptor, String fieldName, boolean isRequired, boolean isAutoIncrement, boolean isPrimaryKey, StringBuffer buffer) {
        buffer.append("        <column name=\"");
        buffer.append(fieldName);
        buffer.append("\" required=\"");
        buffer.append(isRequired || isPrimaryKey);
        if (!this.ignoreAutoIncrement) {
            buffer.append("\" autoIncrement=\"");
            buffer.append(isAutoIncrement);
        }
        buffer.append("\" primaryKey=\"");
        buffer.append(isPrimaryKey);
        buffer.append("\" type=\"");
        buffer.append(descriptor.getColumnType());

        generateConstraints(descriptor, buffer);

        buffer.append("\"/>\n");
    }

    private void generateConstraints(FieldDescriptor descriptor, StringBuffer buffer) {
        int jdbcType = descriptor.getJdbcType().getType();

        switch (jdbcType) {
            case Types.BIGINT:
            case Types.DECIMAL:
            case Types.DOUBLE:
            case Types.FLOAT:
//            case Types.INTEGER:
            case Types.NUMERIC:
            case Types.REAL:
            case Types.SMALLINT:
            case Types.TINYINT:
                if (descriptor.isPrecisionSpecified()) {
                    buffer.append("\" precision=\"");
                    buffer.append(descriptor.getPrecision());
                }
                if (descriptor.isScaleSpecified()) {
                    buffer.append("\" scale=\"");
                    buffer.append(descriptor.getScale());
                }
                break;
            default:
                if (descriptor.isLengthSpecified()) {
                    buffer.append("\" size=\"");
                    buffer.append(descriptor.getLength());
                }
        }
    }

}
TOP

Related Classes of org.apache.ojb.broker.metadata.torque.TorqueFieldGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.