package org.xblackcat.sjpu.storage.typemap;

/**
 * 20.12.13 12:35
 *
 * @author xBlackCat
 */
public class EnumToStringMapper implements IMapFactory<Enum, String> {
    @Override
    public boolean isAccepted(Class<?> obj) {
        return Enum.class.isAssignableFrom(obj);
    }

    @Override
    public ITypeMap<Enum, String> mapper(Class<Enum> clazz) {
        return new EnumStringATypeMap(clazz);
    }

    private static class EnumStringATypeMap extends ATypeMap<Enum, String> {
        public EnumStringATypeMap(Class<Enum> clazz) {
            super(clazz, String.class);
        }

        @Override
        public String forStore(Enum obj) {
            if (obj == null) {
                return null;
            }

            return obj.name();
        }

        @Override
        public Enum forRead(String obj) {
            if (obj == null) {
                return null;
            }

            return Enum.valueOf(getRealType(), obj);
        }
    }
}

@@ -126,16 +126,35 @@
 ngMapper
+%3CT extends Enum%3CT%3E%3E
  impleme
@@ -169,20 +169,17 @@
 Factory%3C
-Enum
+T
 , String
@@ -331,36 +331,33 @@
 public ITypeMap%3C
-Enum
+T
 , String%3E mapper
@@ -359,28 +359,25 @@
 apper(Class%3C
-Enum
+T
 %3E clazz) %7B%0D%0A
@@ -448,15 +448,8 @@
 ate 
-static 
 clas
@@ -486,20 +486,17 @@
 TypeMap%3C
-Enum
+T
 , String
@@ -540,20 +540,17 @@
 p(Class%3C
-Enum
+T
 %3E clazz)
@@ -828,20 +828,17 @@
  public 
-Enum
+T
  forRead

Eliminate warnings