package creator;

import java.util.HashMap;

public enum SKilLType {
	Bool("skill.lang.bool"),
	Integer8("skill.lang.i8"),
	Integer16("skill.lang.i16"),
	Integer32("skill.lang.i32"),
	Integer64("skill.lang.i64"),
	VariableInt64("skill.lang.v64"),
	Float32("skill.lang.f32"),
	Float64("skill.lang.f64"),
	Array("skill.lang.array"),
	List("skill.lang.list"),
	Set("skill.lang.set"),
	Map("skill.lang.map"),
	String("skill.lang.string"),
	Annotation("skill.lang.annotation");

	private String skillType;
	private static HashMap<String, String> typeMapping;
	static {
		typeMapping.put("skill.lang.bool", "boolean");
		typeMapping.put("skill.lang.i8", "byte");
		typeMapping.put("skill.lang.i16", "short");
		typeMapping.put("skill.lang.i32", "int");
		typeMapping.put("skill.lang.i64", "long");
		typeMapping.put("skill.lang.v64", "java.math.BigInteger");
		typeMapping.put("skill.lang.f32", "float");
		typeMapping.put("skill.lang.f64", "double");
		typeMapping.put("skill.lang.array", "java.util.ArrayList");
		typeMapping.put("skill.lang.list", "java.util.LinkedList");
		typeMapping.put("skill.lang.set", "java.util.HashSet");
		typeMapping.put("skill.lang.map", "java.util.HashMap");
		typeMapping.put("skill.lang.string", "java.lang.String");
		typeMapping.put("skill.lang.annotation", "java.lang.Object");
	}

	SKilLType(String skillType) {
		this.skillType = skillType;
	}
	
	public static boolean isCollection(String skillType){
		String mappedValue = typeMapping.get(skillType);
		if(mappedValue == null){
			return false;
		}else{
			return mappedValue.equals("java.util.ArrayList")
					|| mappedValue.equals("java.util.LinkedList")
					|| mappedValue.equals("java.util.HashSet")
					|| mappedValue.equals("java.util.HashMap");
		}
	}
	
	public static String getJavaType(String skillType){
		return typeMapping.get(skillType);
	}
	
	public static SKilLType fromString(String type){
		for(SKilLType currentType : SKilLType.values()){
			if(currentType.skillType.equals(type)){
				return currentType;
			}
		}
		return null;
	}
	
}

@@ -11,16 +11,41 @@
 eator;%0A%0A
+import java.util.Arrays;%0A
 import j
@@ -1465,301 +1465,827 @@
 ring
- mappedValue = typeMapping.get(skillType);%0A%09%09if(mappedValue == null)%7B%0A%09%09%09return false;%0A%09%09%7Delse%7B%0A%09%09%09return mappedValue.equals(%22java.util.ArrayList%22)%0A%09%09%09%09%09%7C%7C mappedValue.equals(%22java.util.LinkedList%22)%0A%09%09%09%09%09%7C%7C mappedValue.equals(%22java.util.HashSet%22)%0A%09%09%09%09%09%7C%7C mappedValue.equals(%22java.util.HashMap%22
+%5B%5D collectionTypes = %7B%22java.util.ArrayList%22,%22java.util.LinkedList%22,%22java.util.HashSet%22,%22java.util.HashMap%22%7D;%0A%09%09String mappedValue = typeMapping.get(skillType);%0A%09%09if(mappedValue == null)%7B%0A%09%09%09return false;%0A%09%09%7Delse%7B%0A%09%09%09return Arrays.asList(collectionTypes).contains(mappedValue);%0A%09%09%7D%0A%09%7D%0A%09%0A%09/**%0A%09 * Checks whether a provided class name is a primitive type%0A%09 * %0A%09 * @param type%0A%09 *            the name of the class to be checked%0A%09 * @return true, if type is a primitive type. False, otherwise.%0A%09 */%0A%09public static boolean isPrimitive(String skillType) %7B%0A%09%09String%5B%5D primitiveTypes = %7B %22byte%22, %22short%22, %22int%22, %22long%22, %22float%22, %22double%22, %22boolean%22, %22char%22 %7D;%0A%09%09String mappedValue = typeMapping.get(skillType);%0A%09%09if (mappedValue == null) %7B%0A%09%09%09return false;%0A%09%09%7D else %7B%0A%09%09%09return Arrays.asList(primitiveTypes).contains(mappedValue
 );%0A%09
@@ -2286,24 +2286,25 @@
 ue);%0A%09%09%7D%0A%09%7D%0A
+%0A
 %09%0A%09public st

Move isPrimitive method to SKilLType enum