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.KonversiSatuan; import com.jasamedika.medifirst2000.vo.KonversiSatuanVO; @Component public class KonversiSatuanConverter implements BaseVoConverter { @Override public KonversiSatuan transferVOToModel(KonversiSatuanVO vo, KonversiSatuan model) { if (model == null) { model = new KonversiSatuan(); } 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, KonversiSatuan.class); } catch (Exception ex) { ex.printStackTrace(); } return model; } @Override public List transferListOfModelToListOfVO(List models, List vos) { if (vos == null) { vos = new ArrayList<>(); } if (models == null) { return vos; } for (KonversiSatuan model : models) { KonversiSatuanVO vo = new KonversiSatuanVO(); vo = transferModelToVO(model, vo); vos.add(vo); } return vos; } @Override public KonversiSatuanVO transferModelToVO(KonversiSatuan model, KonversiSatuanVO vo) { if (null == vo) vo = new KonversiSatuanVO(); 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, KonversiSatuanVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } }