package de.jigp.plugin.actions.generator; import com.intellij.psi.PsiType; import java.util.Arrays; import java.util.List; public class JavaLanguageSupport { private static final List<String> keywords = Arrays.asList( "abstract", "continue", "for", "new", "switch", "assert", "default", "goto", "package", "synchronized", "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", "native", "super", "while"); public static String transformToValidAttributeName(String attributeName) { if (isKeyword(attributeName)) { return attributeName + "_"; } else { return attributeName; } } public static boolean isKeyword(String attributeName) { return keywords.contains(attributeName); } public static String convertToNonPrimitive(PsiType type) { return new NonPrimitiveTypeDetermination(type).getType(); } public static boolean isPrimitiveType(PsiType type) { if (type.getCanonicalText().startsWith("java")) { return false; } if (type.isAssignableFrom(PsiType.BOOLEAN) || type.isAssignableFrom(PsiType.BYTE) || type.isAssignableFrom(PsiType.CHAR) || type.isAssignableFrom(PsiType.DOUBLE) || type.isAssignableFrom(PsiType.FLOAT) || type.isAssignableFrom(PsiType.INT) || type.isAssignableFrom(PsiType.LONG) || type.isAssignableFrom(PsiType.SHORT)) { return true; } PsiType subType = type.getDeepComponentType(); if (subType.isAssignableFrom(PsiType.BOOLEAN) || subType.isAssignableFrom(PsiType.BYTE) || subType.isAssignableFrom(PsiType.CHAR) || subType.isAssignableFrom(PsiType.DOUBLE) || subType.isAssignableFrom(PsiType.FLOAT) || subType.isAssignableFrom(PsiType.INT) || subType.isAssignableFrom(PsiType.LONG) || subType.isAssignableFrom(PsiType.SHORT)) { return true; } return false; } public static class NonPrimitiveTypeDetermination { private PsiType type; private String convertedType = null; public NonPrimitiveTypeDetermination(PsiType type) { this.type = type; } public String getType() { if (!type.getCanonicalText().startsWith("java")) { convertTypeIfPossible(PsiType.BOOLEAN, "Boolean"); convertTypeIfPossible(PsiType.INT, "Integer"); convertTypeIfPossible(PsiType.DOUBLE, "Double"); convertTypeIfPossible(PsiType.FLOAT, "Float"); convertTypeIfPossible(PsiType.CHAR, "Character"); convertTypeIfPossible(PsiType.BYTE, "Byte"); convertTypeIfPossible(PsiType.SHORT, "Short"); convertTypeIfPossible(PsiType.LONG, "Long"); } if (convertedType == null) { convertedType = type.getCanonicalText(); } return convertedType; } private void convertTypeIfPossible(PsiType primitiveType, String nonPrimitiveTypeName) { if (convertedType == null && primitiveType.equals(type)) { convertedType = nonPrimitiveTypeName; } } } }