package com.jasamedika.medifirst2000.converter; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.persistence.Column; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import org.springframework.stereotype.Component; import com.google.gson.Gson; import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.entities.Risiko; import com.jasamedika.medifirst2000.vo.RisikoVO; @Component public class RisikoConverter implements BaseVoConverter{ @Override public Risiko transferVOToModel(RisikoVO vo, Risiko model) { if (null == model) model = new Risiko(); try { String[] fieldsToInclude = null; Map serialized = vo.serialize(fieldsToInclude,vo.getClass().getName()); Gson gson = new Gson(); String json = gson.toJson(serialized); model = gson.fromJson(json, Risiko.class); } catch (Exception e) { e.printStackTrace(); } return model; } @Override public List transferListOfModelToListOfVO(List models, List vos) { if (null == vos) vos = new ArrayList(); if (null == models) return vos; for (Risiko pegawai : models) { RisikoVO vo = new RisikoVO(); vo=transferModelToVO(pegawai, vo); vos.add(vo); } return vos; } @Override public RisikoVO transferModelToVO(Risiko model, RisikoVO vo) { if (null == vo) vo = new RisikoVO(); try { List fieldsToInclude = new ArrayList(); for (Field field : model.GetFields(model.getClass())) { String str = field.getName(); String name = field.getName(); if(name.equals("serialVersionUID"))continue; Boolean valid = false; for (java.lang.annotation.Annotation annotation : field.getDeclaredAnnotations()) { if (annotation instanceof JoinColumn) { valid=true; } else if (annotation instanceof Column) { Column column = (Column)annotation; if(column.name().endsWith("Fk")) if(field.getName().endsWith("Id")==false) valid=true; }else if (annotation instanceof OneToMany) { valid=true; } } if(valid ==false) fieldsToInclude.add(str); } Map serialized = model.serialize(fieldsToInclude.toArray(new String[0]),model.getClass().getSimpleName()); Gson gson = new Gson(); String json = gson.toJson(serialized); vo = gson.fromJson(json, RisikoVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } public RisikoVO transferModelToVOCustom(Risiko model, RisikoVO vo,String[] fieldsToInclude) { if (null == vo) vo = new RisikoVO(); try { Map serialized = model.serialize(fieldsToInclude,model.getClass().getSimpleName()); Gson gson = new Gson(); String json = gson.toJson(serialized); vo = gson.fromJson(json, RisikoVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } }