com.sap.research.connectivity.gw.GwUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.sap.research.connectivity.gw.GwUtils.java

Source

/*
 * Copyright 2012 SAP AG
 *
 * 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.
 */

package com.sap.research.connectivity.gw;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.jvnet.inflector.Noun;
import org.springframework.roo.process.manager.FileManager;
import org.springframework.roo.process.manager.MutableFile;
import org.springframework.roo.support.util.FileUtils;

import com.sap.research.connectivity.gw.parsers.JavaSourceField;
import com.sap.research.connectivity.gw.parsers.JavaSourceFileEditor;

public class GwUtils {

    public static final char SEPARATOR = File.separatorChar;

    public static final String GW_CONNECTION_FIELD_NAME = "odc";

    public static void createClassFileFromTemplate(String packageName, String subFolder, String templateFileName,
            String targetFileName, Map<String, String> replacements, FileManager fileManager,
            Class<?> loadingClass) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        String targetFile = subFolder + SEPARATOR + targetFileName;
        MutableFile mutableFile = fileManager.exists(targetFile) ? fileManager.updateFile(targetFile)
                : fileManager.createFile(targetFile);
        try {
            inputStream = FileUtils.getInputStream(loadingClass, templateFileName);
            outputStream = mutableFile.getOutputStream();
            String inputStreamString = IOUtils.toString(inputStream);

            for (Map.Entry<String, String> entry : replacements.entrySet()) {
                inputStreamString = inputStreamString.replace(entry.getKey(), entry.getValue());
            }
            //System.out.println(inputStreamString);
            inputStream = IOUtils.toInputStream(inputStreamString);
            IOUtils.copy(inputStream, outputStream);
        } catch (IOException e) {
            throw new IllegalStateException(e);
        } finally {
            IOUtils.closeQuietly(inputStream);
            IOUtils.closeQuietly(outputStream);
        }
    }

    public static void createFileFromString(String subFolder, String targetFileName, String content,
            FileManager fileManager) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        String targetFile = subFolder + SEPARATOR + targetFileName;
        MutableFile mutableFile = fileManager.exists(targetFile) ? fileManager.updateFile(targetFile)
                : fileManager.createFile(targetFile);
        try {
            inputStream = IOUtils.toInputStream(content);
            outputStream = mutableFile.getOutputStream();
            //System.out.println(inputStreamString);
            IOUtils.copy(inputStream, outputStream);
        } catch (IOException e) {
            throw new IllegalStateException(e);
        } finally {
            IOUtils.closeQuietly(inputStream);
            IOUtils.closeQuietly(outputStream);
        }
    }

    public static String getInflectorPlural(final String term, final Locale locale) {
        try {
            return Noun.pluralOf(term, locale);
        } catch (final RuntimeException re) {
            return term;
        }
    }

    public static String odataToJavaType(String oDataType) {

        if (oDataType.equals("SByte"))
            return ("byte");
        if (oDataType.equals("Int64"))
            return ("long");
        if (oDataType.equals("Int32"))
            return ("int");
        if (oDataType.equals("Int16"))
            return ("short");
        if (oDataType.equals("String"))
            return ("String");
        if (oDataType.equals("Double"))
            return ("double");
        if (oDataType.equals("Single"))
            return ("float");
        if (oDataType.equals("Decimal"))
            return ("float");
        if (oDataType.equals("Byte"))
            return ("byte");
        if (oDataType.equals("Boolean"))
            return ("boolean");
        if (oDataType.equals("Guid"))
            return ("String");
        if (oDataType.equals("DateTime") || oDataType.equals("DateTimeOffset"))
            return ("Date");
        if (oDataType.equals("Time"))
            return ("String");
        else
            return ("String");

    }

    public static String generateReversedCast(String javaType) {

        if (javaType.toLowerCase().equals("byte"))
            return "byte_";
        if (javaType.toLowerCase().equals("short"))
            return "int16";
        if (javaType.toLowerCase().equals("long") || javaType.toLowerCase().equals("double"))
            return "decimal";
        if (javaType.toLowerCase().equals("float"))
            return "single";
        if (javaType.toLowerCase().equals("int"))
            return "int32";
        if (javaType.toLowerCase().equals("boolean"))
            return "boolean_";
        if (javaType.toLowerCase().equals("string") || javaType.toLowerCase().equals("char"))
            return "string";
        if (javaType.toLowerCase().equals("date"))
            return "datetime";
        if (javaType.toLowerCase().equals("time"))
            return "string";

        return "string";
    }

    public static String generateCast(String javaType) {

        String dataTypes = "byte;short;long;float;double;boolean;Byte;Short;Long;Float;Double;Boolean;";

        String fieldTypeObjectName = "";

        if (dataTypes.contains(javaType)) {
            fieldTypeObjectName = StringUtils.capitalize(javaType);
            fieldTypeObjectName = fieldTypeObjectName + ".parse" + fieldTypeObjectName + "(";
        }

        else if (javaType.equals("int") || javaType.equals("Integer")) {
            fieldTypeObjectName = "Integer" + ".parseInt(";
        }

        return fieldTypeObjectName;
    }

    public static List<String> getFieldsIncludedInClass(JavaSourceFileEditor entityClassFile) {

        List<String> fields = new ArrayList<String>();

        ArrayList<JavaSourceField> globalFieldList = entityClassFile.getGlobalFieldList();

        for (JavaSourceField globalField : globalFieldList) {
            fields.add(globalField.getFieldName());
        }
        return fields;
    }

    public static String getNamespaceFromClass(JavaSourceFileEditor entityClassFile) {
        String nameSpace = "";
        ArrayList<JavaSourceField> globalFieldList = entityClassFile.getGlobalFieldList();

        for (JavaSourceField globalField : globalFieldList) {
            if (globalField.getFieldName().equals(GW_CONNECTION_FIELD_NAME)) {
                String nameSpaceValue = globalField.getFieldValue();
                String[] splitNameSpaceValue = nameSpaceValue.split(" ");
                int len = splitNameSpaceValue.length;
                String nameSpaceInter = splitNameSpaceValue[len - 1];
                nameSpace = nameSpaceInter.substring(0, nameSpaceInter.length() - 2);
                break;
            }
        }
        return nameSpace;
    }

}