public void createMapping(Class<?> aClass) throws ClassValidationException {

		CSVEntity annotation = aClass.getAnnotation(CSVEntity.class);
		if (annotation == null) {
			logger.severe("Class " + aClass.getName() + " is not annotated with " + CSVEntity.class.getName() + " annotation");
			return;
		}

		if (!classMapping.containsKey(aClass)) {

			MappingRules mappingRules = new MappingRules();

			Field[] fields = aClass.getDeclaredFields();
			for (Field f : fields) {

				//omit ignored fields
				if(f.isAnnotationPresent(CSVFieldIgnore.class)) {
					continue;
				}

				String csvFieldName = f.getName();

				if (f.isAnnotationPresent(CSVField.class)) {
					String annotatedName = f.getAnnotation(CSVField.class).csvFieldName();
					if (!"".equals(annotatedName)) {
						csvFieldName = annotatedName;
					}
				}
				mappingRules.addMapping(f, csvFieldName);

				logger.log(Level.INFO, ("Added mapping class: " + aClass.getName() + ": " + f.getName() + " <-> " + csvFieldName));

			}

			classMapping.put(aClass, mappingRules);

		} else {
			logger.log(Level.WARNING, "Class {0} is already present in mapping", aClass.getName());
		}
	}